diff --git a/docs/css/artplayer.css b/docs/css/artplayer.css index 3ce87c7c2..55a9eaee7 100644 --- a/docs/css/artplayer.css +++ b/docs/css/artplayer.css @@ -1,2 +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-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}.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;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-video-player .artplayer-bottom .artplayer-progress{position:relative}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress{position:relative;height:5px;padding:1px 0;cursor:pointer}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner{position:relative;height:100%;background:hsla(0,0%,100%,.2)}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:0;background:hsla(0,0%,100%,.4)}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;height:100%;width:0}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;z-index:30;left:0;top:0;right:0;bottom:0;height:0}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{display:inline-block;position:absolute;left:0;top:0;width:7px;height:3px;background:#fff;border-radius:3px}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:none;position:absolute;z-index:40;top:-5px;left:-6.5px;width:13px;height:13px;border-radius:50%}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-indicator.show-indicator{display:block}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress:hover .art-progress-indicator,.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress:hover .art-progress-tip{display:block}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-thumbnails{display:none;position:absolute;bottom:8px;left:0;pointer-events:none;background-color:rgba(0,0,0,.7)}.artplayer-video-player.controls-show .artplayer-bottom,.artplayer-video-player:hover .artplayer-bottom{opacity:1;visibility:visible}.artplayer-video-player .artplayer-notice{display:none;font-size:14px;position:absolute;z-index:60;left:10px;top:10px;height:30px;line-height:30px;padding:0 10px;border-radius:3px;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.artplayer-error .art-progress-indicator,.artplayer-video-player.artplayer-error .art-progress-tip{display:none!important} -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 +.artplayer-video-player{position:relative;width:100%;height:100%;overflow:hidden;outline:0;font-family:Roboto,Arial,Helvetica,sans-serif;color:#eee;text-align:left;direction:ltr;font-size:14px;line-height:1.3;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:manipulation;-ms-high-contrast-adjust:none}.artplayer-video-player *{box-sizing:border-box}.artplayer-video-player .art-icon 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}.artplayer-video-player .artplayer-subtitle p{margin:5px 0}.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;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-video-player .artplayer-bottom .artplayer-progress{position:relative}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress{position:relative;height:5px;padding:1px 0;cursor:pointer}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner{position:relative;height:100%;background:hsla(0,0%,100%,.2)}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:0;background:hsla(0,0%,100%,.4)}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;height:100%;width:0}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;z-index:30;left:0;top:0;right:0;bottom:0;height:0}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{display:inline-block;position:absolute;left:0;top:0;width:7px;height:3px;background:#fff;border-radius:3px}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:none;position:absolute;z-index:40;top:-5px;left:-6.5px;width:13px;height:13px;border-radius:50%}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-indicator.show-indicator{display:block}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress:hover .art-progress-indicator,.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress:hover .art-progress-tip{display:block}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-thumbnails{display:none;position:absolute;bottom:8px;left:0;pointer-events:none;background-color:rgba(0,0,0,.7)}.artplayer-video-player.controls-show .artplayer-bottom,.artplayer-video-player:hover .artplayer-bottom{opacity:1;visibility:visible}.artplayer-video-player .artplayer-notice{display:none;font-size:14px;position:absolute;z-index:60;left:10px;top:10px;height:30px;line-height:30px;padding:0 10px;border-radius:3px;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.artplayer-error .art-progress-indicator,.artplayer-video-player.artplayer-error .art-progress-tip{display:none!important} \ No newline at end of file diff --git a/docs/img/thumbnails.png b/docs/img/thumbnails.png index 128dd20c2..73c85c52d 100644 Binary files a/docs/img/thumbnails.png and b/docs/img/thumbnails.png differ diff --git a/docs/index.html b/docs/index.html index 1e812580c..c2b5cfde4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -30,22 +30,33 @@ url: './video/one-more-time-one-more-chance.mp4', poster: './img/one-more-time-one-more-chance.jpg', subtitle: { - url: './subtitle/one-more-time-one-more-chance.vtt' + url: './subtitle/one-more-time-one-more-chance.srt' }, thumbnails: { url: './img/thumbnails.png', - number: 60, width: 190, height: 107 }, highlight: [ { - time: 20, - text: '123456789' + time: 60, + text: 'One more chance' }, { time: 120, - text: '123456789' + text: '谁でもいいはずなのに' + }, + { + time: 180, + text: '夏の想い出がまわる' + }, + { + time: 240, + text: 'こんなとこにあるはずもないのに' + }, + { + time: 300, + text: '--终わり--' } ] }); diff --git a/docs/js/artplayer.js b/docs/js/artplayer.js index f7f541443..3d935f6e4 100644 --- a/docs/js/artplayer.js +++ b/docs/js/artplayer.js @@ -179,6 +179,90 @@ var inherits = _inherits; + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + var defineProperty = _defineProperty; + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + defineProperty(target, key, source[key]); + }); + } + + return target; + } + + var objectSpread = _objectSpread; + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + var arrayWithHoles = _arrayWithHoles; + + function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + var iterableToArrayLimit = _iterableToArrayLimit; + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + + var nonIterableRest = _nonIterableRest; + + function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); + } + + var slicedToArray = _slicedToArray; + function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -247,7 +331,9 @@ }(wrapNativeSuper(Error)); function errorHandle(condition, msg) { - if (!condition) { + var isFun = typeof condition === 'function'; + + if (isFun ? !isFun() : !condition) { throw new ArtPlayerError(msg); } } @@ -290,6 +376,45 @@ var sec = Math.floor(second - hour * 3600 - min * 60); return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':'); } + function deepMerge() { + var isObject = function isObject(value) { + return value !== null && _typeof_1(value) === 'object'; + }; + + var returnValue = {}; + + for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { + sources[_key] = arguments[_key]; + } + + for (var _i = 0; _i < sources.length; _i++) { + var source = sources[_i]; + + if (Array.isArray(source)) { + if (!Array.isArray(returnValue)) { + returnValue = []; + } + + returnValue = toConsumableArray(returnValue).concat(toConsumableArray(source)); + } else if (isObject(source)) { + var _arr = Object.entries(source); + + for (var _i2 = 0; _i2 < _arr.length; _i2++) { + var _arr$_i = slicedToArray(_arr[_i2], 2), + key = _arr$_i[0], + value = _arr$_i[1]; + + if (isObject(value) && Reflect.has(returnValue, key)) { + value = deepMerge(returnValue[key], value); + } + + returnValue = objectSpread({}, returnValue, defineProperty({}, key, value)); + } + } + } + + return returnValue; + } function validOption(option) { errorHandle(option.container, '\'container\' option is required.'); @@ -961,13 +1086,16 @@ url = _this$art$option$thum.url, height = _this$art$option$thum.height, width = _this$art$option$thum.width, - number = _this$art$option$thum.number; + number = _this$art$option$thum.number, + column = _this$art$option$thum.column; var perWidth = $progress.clientWidth / number; - var index = Math.ceil(posWidth / perWidth); + var perIndex = Math.ceil(posWidth / perWidth); + var yIndex = Math.ceil(perIndex / column); + var xIndex = perIndex % column || column; this.option.ref.style.backgroundImage = "url(".concat(url, ")"); this.option.ref.style.height = "".concat(height, "px"); this.option.ref.style.width = "".concat(width, "px"); - this.option.ref.style.backgroundPosition = "-".concat(index * width, "px 0"); + this.option.ref.style.backgroundPosition = "-".concat(--xIndex * width, "px -").concat(--yIndex * height, "px"); if (posWidth <= width / 2) { this.option.ref.style.left = 0; @@ -1357,52 +1485,6 @@ return Info; }(); - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - var arrayWithHoles = _arrayWithHoles; - - function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - var iterableToArrayLimit = _iterableToArrayLimit; - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - - var nonIterableRest = _nonIterableRest; - - function _slicedToArray(arr, i) { - return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); - } - - var slicedToArray = _slicedToArray; - var Subtitle$1 = /*#__PURE__*/ function () { @@ -1410,11 +1492,8 @@ classCallCheck(this, Subtitle); this.art = art; - - if (this.art.option.subtitle) { - errorHandle(getExt(this.art.option.subtitle.url) === 'vtt', "'url' option require 'vtt' format, but got '".concat(getExt(this.art.option.subtitle.url), "'.")); - this.init(); - } + this.checkExt(this.art.option.subtitle.url); + this.init(); } createClass(Subtitle, [{ @@ -1432,31 +1511,66 @@ var $track = document.createElement('track'); $track.default = true; $track.kind = 'metadata'; - $track.src = subtitle.url; - $video.appendChild($track); - this.art.refs.$track = $track; + this.load(subtitle.url).then(function (data) { + $track.src = data; + $video.appendChild($track); + _this.art.refs.$track = $track; - if ($video.textTracks && $video.textTracks[0]) { - var _$video$textTracks = slicedToArray($video.textTracks, 1), - track = _$video$textTracks[0]; + if ($video.textTracks && $video.textTracks[0]) { + var _$video$textTracks = slicedToArray($video.textTracks, 1), + track = _$video$textTracks[0]; - proxy(track, 'cuechange', function () { - var _track$activeCues = slicedToArray(track.activeCues, 1), - cue = _track$activeCues[0]; + proxy(track, 'cuechange', function () { + var _track$activeCues = slicedToArray(track.activeCues, 1), + cue = _track$activeCues[0]; - $subtitle.innerHTML = ''; + $subtitle.innerHTML = ''; - if (cue) { - var template = document.createElement('div'); - template.appendChild(cue.getCueAsHTML()); - $subtitle.innerHTML = template.innerHTML.split(/\r?\n/).map(function (item) { - return "

".concat(item, "

"); - }).join(''); - } + if (cue) { + var template = document.createElement('div'); + template.appendChild(cue.getCueAsHTML()); + $subtitle.innerHTML = template.innerHTML.split(/\r?\n/).map(function (item) { + return "

".concat(item, "

"); + }).join(''); + } - _this.art.emit('subtitle:update', $subtitle); - }); - } + _this.art.emit('subtitle:update', $subtitle); + }); + } + }); + } + }, { + key: "load", + value: function load(url) { + var _this2 = this; + + var type; + return fetch(url).then(function (response) { + type = response.headers.get('Content-Type'); + return response.text(); + }).then(function (text) { + if (/x-subrip/gi.test(type)) { + return _this2.srtToVtt(text); + } + + return url; + }).catch(function (err) { + throw err; + }); + } + }, { + key: "srtToVtt", + value: function srtToVtt(text) { + var vttText = 'WEBVTT \r\n\r\n'.concat(text.replace(/\{\\([ibu])\}/g, '').replace(/\{\\([ibu])1\}/g, '<$1>').replace(/\{([ibu])\}/g, '<$1>').replace(/\{\/([ibu])\}/g, '').replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g, '$1.$2').concat('\r\n\r\n')); + return URL.createObjectURL(new Blob([vttText], { + type: 'text/vtt' + })); + } + }, { + key: "checkExt", + value: function checkExt(url) { + var ext = getExt(url); + errorHandle(ext === 'vtt' || ext === 'srt', "'url' option require 'vtt' or 'srt' format, but got '".concat(ext, "'.")); } }, { key: "show", @@ -1475,11 +1589,18 @@ }, { key: "switch", value: function _switch(url) { + var _this3 = this; + var $track = this.art.refs.$track; - errorHandle(getExt(url) === 'vtt', "'url' option require 'vtt' format, but got '".concat(getExt(url), "'.")); + this.checkExt(url); errorHandle($track, 'You need to initialize the subtitle option first.'); - $track.src = url; - this.art.emit('subtitle:switch', url); + this.load(url).then(function (data) { + if (url !== data) { + $track.src = data; + + _this3.art.emit('subtitle:switch', url); + } + }); } }]); @@ -1812,25 +1933,6 @@ return Mask; }(); - var Srt = function Srt(art) { - classCallCheck(this, Srt); - - this.art = art; - console.log(this); - }; - - var Mse = function Mse(art) { - classCallCheck(this, Mse); - - this.art = art; - console.log(this); - }; - - var plugins = { - Srt: Srt, - Mse: Mse - }; - var id$2 = 0; var instances = []; @@ -1848,13 +1950,11 @@ _this.emit('init:start'); - _this.option = Object.assign({}, Artplayer.DEFAULTS, option); + _this.option = deepMerge({}, Artplayer.DEFAULTS, option); validOption(_this.option); _this.init(); - _this.usePlugins(); - _this.emit('init:end'); return _this; @@ -1892,13 +1992,6 @@ instances.push(this); return this; } - }, { - key: "usePlugins", - value: function usePlugins() { - Object.keys(plugins).forEach(function (name) { - Artplayer.use(plugins[name]); - }); - } }, { key: "destroy", value: function destroy() { @@ -1946,9 +2039,10 @@ poster: '', thumbnails: { url: '', - number: 100, + number: 60, width: 160, - height: 90 + height: 90, + column: 10 }, volume: 0.7, autoplay: false, diff --git a/docs/js/artplayer.js.map b/docs/js/artplayer.js.map index e8f1dba88..05eca354f 100644 --- a/docs/js/artplayer.js.map +++ b/docs/js/artplayer.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.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/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/thumbnails.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/plugins/srt.js","../../src/plugins/mse.js","../../src/plugins/index.js","../../src/index.js"],"sourcesContent":["function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export 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 typeof option.loop === 'boolean',\n `'loop' option require 'boolean' type, but got '${typeof option.loop}'.`\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","let i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Volume': '音量',\n 'Start': '开始',\n 'Pause': '暂停',\n 'Rate': '速度'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Volume': '音量',\n 'Start': '開始',\n 'Pause': '暫停',\n 'Rate': '速度'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.option = option;\n this.init();\n }\n\n init() {\n this.language = i18nMap[this.option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n\n update(callback) {\n i18nMap = callback(i18nMap);\n this.init();\n }\n}\n","import { clamp, secondToTime } 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: { $player, $video }, i18n, notice } = this.art;\n\n config.video.events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n\n this.art.on('video:loadstart', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:loadeddata', () => {\n this.art.loading.hide();\n });\n\n this.art.on('video:waiting', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n 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 if (this.art.option.loop) {\n this.seek(0);\n this.play();\n }\n });\n\n this.art.on('video:error', () => {\n this.art.isError = true;\n this.art.isPlaying = false;\n this.art.loading.hide();\n this.art.controls.hide();\n $player.classList.add('artplayer-error');\n notice.show(i18n.get('Video load failed'), false);\n this.art.destroy();\n });\n }\n\n play() {\n const { refs: { $video }, i18n, notice } = this.art;\n const promise = $video.play();\n notice.show(i18n.get('Start'));\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { refs: { $video }, i18n, notice } = this.art;\n $video.pause();\n notice.show(i18n.get('Pause'));\n this.art.emit('pause', $video);\n }\n\n toggle() {\n if (this.art.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n seek(time) {\n const { refs: { $video }, notice } = this.art;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n $video.currentTime = newTime;\n notice.show(`${secondToTime(newTime)} / ${secondToTime($video.duration)}`);\n this.art.emit('seek', newTime);\n }\n\n volume(percentage) {\n const { refs: { $video }, i18n, notice } = this.art;\n if (percentage) {\n $video.volume = clamp(percentage, 0, 1);\n notice.show(`${i18n.get('Volume')}: ${parseInt($video.volume * 100)}`);\n this.art.emit('volume', $video.volume);\n }\n return $video.volume;\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime;\n }\n\n duration() {\n return this.art.refs.$video.duration;\n }\n\n playbackRate(rate) {\n const { refs: { $video }, i18n, notice } = this.art;\n const newRate = clamp(rate, 0.1, 10);\n $video.playbackRate = newRate;\n notice.show(`${i18n.get('Rate')}: ${newRate}x`);\n this.art.emit('playbackRate', newRate);\n }\n}\n","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 } 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.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 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.$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.getPosFromEvent(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(this.$indicator, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(document, 'mousemove', event => {\n if (this.isDroging) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.$indicator.classList.add('show-indicator');\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n this.$indicator.classList.remove('show-indicator');\n }\n });\n }\n\n showHighlight(event) {\n const { $video } = this.art.refs;\n const { text, time } = event.target.dataset;\n this.$tip.innerHTML = text;\n const left =\n Number(time) / $video.duration * this.option.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.getPosFromEvent(event);\n const tipWidth = this.$tip.clientWidth;\n this.$tip.innerHTML = time;\n if (width <= tipWidth / 2) {\n this.$tip.style.left = 0;\n } else if (width > this.option.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 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","export default class Thumbnails {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n this.init();\n }\n\n init() {\n const {\n refs: { $progress },\n events: { proxy }\n } = this.art;\n\n proxy($progress, 'mousemove', event => {\n this.option.ref.style.display = 'block';\n this.showThumbnails(event);\n });\n\n proxy($progress, 'mouseout', () => {\n this.option.ref.style.display = 'none';\n });\n }\n\n showThumbnails(event) {\n const { $progress } = this.art.refs;\n const { width: posWidth } = this.getPosFromEvent(event);\n const { url, height, width, number } = this.art.option.thumbnails;\n const perWidth = $progress.clientWidth / number;\n const index = Math.ceil(posWidth / perWidth);\n this.option.ref.style.backgroundImage = `url(${url})`;\n this.option.ref.style.height = `${height}px`;\n this.option.ref.style.width = `${width}px`;\n this.option.ref.style.backgroundPosition = `-${index * width}px 0`;\n\n if (posWidth <= width / 2) {\n this.option.ref.style.left = 0;\n } else if (posWidth > $progress.clientWidth - width / 2) {\n this.option.ref.style.left = `${$progress.clientWidth - width}px`;\n } else {\n this.option.ref.style.left = `${posWidth - width / 2}px`;\n }\n }\n}\n","import { secondToTime, clamp } from '../utils';\nimport 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';\nimport Thumbnails from './thumbnails';\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: Thumbnails,\n disable: !this.art.option.thumbnails.url,\n position: 'top',\n index: 20\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, 'getPosFromEvent', {\n value: event => {\n const { $video, $progress } = this.art.refs;\n const { left } = $progress.getBoundingClientRect();\n const width = clamp(event.x - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / $progress.clientWidth, 0, 1);\n return { second, time, width, percentage };\n }\n });\n }\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 refs: { $player },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.isFocus = event.path.indexOf($player) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n break;\n case 38:\n event.preventDefault();\n player.volume(player.volume() + 0.05);\n break;\n case 40:\n event.preventDefault();\n player.volume(player.volume() - 0.05);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.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 = true, time = 1000) {\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 }, time);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n 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","export default class Srt {\n constructor(art) {\n this.art = art;\n console.log(this);\n }\n}\n","export default class Mse {\n constructor(art) {\n this.art = art;\n console.log(this);\n }\n}\n","import Srt from './srt';\nimport Mse from './mse';\n\nexport default {\n Srt,\n Mse\n};\n","import './style/index.scss';\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 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';\nimport plugins from './plugins';\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.usePlugins();\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 loop: 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 name = Plugin.name.toLowerCase();\n const installedPlugins = this.plugins || (this.plugins = {});\n if (!installedPlugins[name]) {\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n installedPlugins[name] = new Plugin(...args);\n this.prototype.emit('use', Plugin);\n }\n return this;\n }\n\n init() {\n this.isError = false;\n this.isFocus = false;\n this.isPlaying = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.notice = new Notice(this);\n this.events = new Events(this);\n this.player = new Player(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n usePlugins() {\n Object.keys(plugins).forEach(name => {\n Artplayer.use(plugins[name]);\n });\n }\n\n destroy(removeHtml = false) {\n this.events.destroy();\n instances.splice(instances.indexOf(this), 1);\n if (removeHtml) {\n this.refs.$container.innerHTML = '';\n }\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","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","loop","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","callback","Player","eventBind","src","proxy","i18n","notice","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","seek","isError","classList","add","get","destroy","pause","time","newTime","duration","currentTime","percentage","parseInt","rate","newRate","playbackRate","validControl","control","disable","position","index","Danmu","Fullscreen","Pip","PlayAndPause","Progress","isDroging","getLoaded","bind","getPlayed","set","player","ref","$loaded","$played","$highlight","$indicator","$tip","item","left","Number","text","display","path","showHighlight","showTime","target","getPosFromEvent","document","remove","dataset","clientWidth","width","tipWidth","buffered","length","end","Subtitle","Time","Volume","Setting","Thumbnails","showThumbnails","posWidth","height","number","perWidth","ceil","backgroundImage","backgroundPosition","id","Controls","$map","top","right","mount","tooltip","$control","createElement","setAttribute","commonMethod","push","sort","controlIndex","defineProperty","value","getBoundingClientRect","x","Contextmenu","click","info","link","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","href","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","mHeight","mWidth","menuLeft","menuTop","Info","log","$track","default","kind","textTracks","track","activeCues","cue","template","getCueAsHTML","Events","destroyEvents","addEventListener","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","Srt","Mse","instances","Artplayer","assign","DEFAULTS","usePlugins","danmu","plugins","use","removeHtml","splice","Plugin","installedPlugins","args","from","arguments","slice","unshift","navigator","Emitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.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/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/thumbnails.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/icons/index.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _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;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export 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 const isFun = typeof condition === 'function';\n if (isFun ? !isFun() : !condition) {\n throw new ArtPlayerError(msg);\n }\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0]);\n }\n\n if (url.includes('#')) {\n return getExt(url.split('#')[0]);\n }\n\n return url\n .trim()\n .toLowerCase()\n .split('.')\n .pop();\n}\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child);\n } else {\n parent.insertAdjacentHTML('beforeend', child);\n }\n return parent;\n}\n\nexport function setStyle(element, styles) {\n Object.keys(styles).forEach(key => {\n element.style[key] = styles[key];\n });\n return element;\n}\n\nexport function secondToTime(second) {\n const add0 = num => (num < 10 ? `0${num}` : String(num));\n const hour = Math.floor(second / 3600);\n const min = Math.floor((second - hour * 3600) / 60);\n const sec = Math.floor(second - hour * 3600 - min * 60);\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':');\n}\n\nexport function deepMerge(...sources) {\n const isObject = value => value !== null && typeof value === 'object';\n let returnValue = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n } else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && Reflect.has(returnValue, key)) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n }\n }\n return returnValue;\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 typeof option.loop === 'boolean',\n `'loop' option require 'boolean' type, but got '${typeof option.loop}'.`\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","let i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Volume': '音量',\n 'Start': '开始',\n 'Pause': '暂停',\n 'Rate': '速度'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Volume': '音量',\n 'Start': '開始',\n 'Pause': '暫停',\n 'Rate': '速度'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.option = option;\n this.init();\n }\n\n init() {\n this.language = i18nMap[this.option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n\n update(callback) {\n i18nMap = callback(i18nMap);\n this.init();\n }\n}\n","import { clamp, secondToTime } 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: { $player, $video }, i18n, notice } = this.art;\n\n config.video.events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n\n this.art.on('video:loadstart', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:loadeddata', () => {\n this.art.loading.hide();\n });\n\n this.art.on('video:waiting', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n 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 if (this.art.option.loop) {\n this.seek(0);\n this.play();\n }\n });\n\n this.art.on('video:error', () => {\n this.art.isError = true;\n this.art.isPlaying = false;\n this.art.loading.hide();\n this.art.controls.hide();\n $player.classList.add('artplayer-error');\n notice.show(i18n.get('Video load failed'), false);\n this.art.destroy();\n });\n }\n\n play() {\n const { refs: { $video }, i18n, notice } = this.art;\n const promise = $video.play();\n notice.show(i18n.get('Start'));\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { refs: { $video }, i18n, notice } = this.art;\n $video.pause();\n notice.show(i18n.get('Pause'));\n this.art.emit('pause', $video);\n }\n\n toggle() {\n if (this.art.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n seek(time) {\n const { refs: { $video }, notice } = this.art;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n $video.currentTime = newTime;\n notice.show(`${secondToTime(newTime)} / ${secondToTime($video.duration)}`);\n this.art.emit('seek', newTime);\n }\n\n volume(percentage) {\n const { refs: { $video }, i18n, notice } = this.art;\n if (percentage) {\n $video.volume = clamp(percentage, 0, 1);\n notice.show(`${i18n.get('Volume')}: ${parseInt($video.volume * 100)}`);\n this.art.emit('volume', $video.volume);\n }\n return $video.volume;\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime;\n }\n\n duration() {\n return this.art.refs.$video.duration;\n }\n\n playbackRate(rate) {\n const { refs: { $video }, i18n, notice } = this.art;\n const newRate = clamp(rate, 0.1, 10);\n $video.playbackRate = newRate;\n notice.show(`${i18n.get('Rate')}: ${newRate}x`);\n this.art.emit('playbackRate', newRate);\n }\n}\n","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 } 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.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 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.$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.getPosFromEvent(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(this.$indicator, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(document, 'mousemove', event => {\n if (this.isDroging) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.$indicator.classList.add('show-indicator');\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n this.$indicator.classList.remove('show-indicator');\n }\n });\n }\n\n showHighlight(event) {\n const { $video } = this.art.refs;\n const { text, time } = event.target.dataset;\n this.$tip.innerHTML = text;\n const left =\n Number(time) / $video.duration * this.option.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.getPosFromEvent(event);\n const tipWidth = this.$tip.clientWidth;\n this.$tip.innerHTML = time;\n if (width <= tipWidth / 2) {\n this.$tip.style.left = 0;\n } else if (width > this.option.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 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","export default class Thumbnails {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n this.init();\n }\n\n init() {\n const {\n refs: { $progress },\n events: { proxy }\n } = this.art;\n\n proxy($progress, 'mousemove', event => {\n this.option.ref.style.display = 'block';\n this.showThumbnails(event);\n });\n\n proxy($progress, 'mouseout', () => {\n this.option.ref.style.display = 'none';\n });\n }\n\n showThumbnails(event) {\n const { $progress } = this.art.refs;\n const { width: posWidth } = this.getPosFromEvent(event);\n const { url, height, width, number, column } = this.art.option.thumbnails;\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.ceil(posWidth / perWidth);\n let yIndex = Math.ceil(perIndex / column);\n let xIndex = perIndex % column || column;\n this.option.ref.style.backgroundImage = `url(${url})`;\n this.option.ref.style.height = `${height}px`;\n this.option.ref.style.width = `${width}px`;\n this.option.ref.style.backgroundPosition = `-${--xIndex * width}px -${--yIndex * height}px`;\n\n if (posWidth <= width / 2) {\n this.option.ref.style.left = 0;\n } else if (posWidth > $progress.clientWidth - width / 2) {\n this.option.ref.style.left = `${$progress.clientWidth - width}px`;\n } else {\n this.option.ref.style.left = `${posWidth - width / 2}px`;\n }\n }\n}\n","import { secondToTime, clamp } from '../utils';\nimport 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';\nimport Thumbnails from './thumbnails';\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: Thumbnails,\n disable: !this.art.option.thumbnails.url,\n position: 'top',\n index: 20\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, 'getPosFromEvent', {\n value: event => {\n const { $video, $progress } = this.art.refs;\n const { left } = $progress.getBoundingClientRect();\n const width = clamp(event.x - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / $progress.clientWidth, 0, 1);\n return { second, time, width, percentage };\n }\n });\n }\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","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n this.checkExt(this.art.option.subtitle.url);\n this.init();\n }\n\n init() {\n const {\n events: { proxy },\n option: { subtitle },\n refs: { $video, $subtitle }\n } = this.art;\n\n setStyle($subtitle, subtitle.style || {});\n const $track = document.createElement('track');\n $track.default = true;\n $track.kind = 'metadata';\n\n this.load(subtitle.url).then(data => {\n $track.src = data;\n $video.appendChild($track);\n this.art.refs.$track = $track;\n if ($video.textTracks && $video.textTracks[0]) {\n const [track] = $video.textTracks;\n proxy(track, 'cuechange', () => {\n const [cue] = track.activeCues;\n $subtitle.innerHTML = '';\n if (cue) {\n const template = document.createElement('div');\n template.appendChild(cue.getCueAsHTML());\n $subtitle.innerHTML = template.innerHTML\n .split(/\\r?\\n/)\n .map(item => `

${item}

`)\n .join('');\n }\n this.art.emit('subtitle:update', $subtitle);\n });\n }\n });\n }\n\n load(url) {\n let type;\n return fetch(url)\n .then(response => {\n type = response.headers.get('Content-Type');\n return response.text();\n })\n .then(text => {\n if ((/x-subrip/gi).test(type)) {\n return this.srtToVtt(text);\n }\n return url;\n })\n .catch(err => {\n throw err;\n });\n }\n\n srtToVtt(text) {\n const vttText = 'WEBVTT \\r\\n\\r\\n'.concat(\n text\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .concat('\\r\\n\\r\\n')\n );\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt'\n })\n );\n }\n\n checkExt(url) {\n const ext = getExt(url);\n errorHandle(\n ext === 'vtt' || ext === 'srt',\n `'url' option require 'vtt' or 'srt' format, but got '${ext}'.`\n );\n }\n\n show() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'block';\n this.art.emit('subtitle:show', $subtitle);\n }\n\n hide() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'none';\n this.art.emit('subtitle:hide', $subtitle);\n }\n\n switch(url) {\n const { $track } = this.art.refs;\n this.checkExt(url);\n errorHandle($track, 'You need to initialize the subtitle option first.');\n this.load(url).then(data => {\n if (url !== data) {\n $track.src = data;\n this.art.emit('subtitle:switch', url);\n }\n });\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n name.forEach(item => this.proxy(target, item, callback, option));\n }\n\n target.addEventListener(name, callback, option);\n\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 refs: { $player },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.isFocus = event.path.indexOf($player) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n break;\n case 38:\n event.preventDefault();\n player.volume(player.volume() + 0.05);\n break;\n case 40:\n event.preventDefault();\n player.volume(player.volume() - 0.05);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.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 = true, time = 1000) {\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 }, time);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n 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 { deepMerge } from './utils';\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 Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmu from './danmu';\nimport Info from './info';\nimport Subtitle from './subtitle';\nimport Events from './events';\nimport Hotkey from './hotkey';\nimport Layers from './layers';\nimport Loading from './loading';\nimport Notice from './notice';\nimport Mask from './mask';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.emit('init:start');\n this.option = deepMerge({}, Artplayer.DEFAULTS, option);\n validOption(this.option);\n this.init();\n this.emit('init:end');\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get DEFAULTS() {\n return {\n container: '.artplayer',\n url: '',\n poster: '',\n thumbnails: {\n url: '',\n number: 60,\n width: 160,\n height: 90,\n column: 10\n },\n volume: 0.7,\n autoplay: false,\n loop: 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 name = Plugin.name.toLowerCase();\n const installedPlugins = this.plugins || (this.plugins = {});\n if (!installedPlugins[name]) {\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n installedPlugins[name] = new Plugin(...args);\n this.prototype.emit('use', Plugin);\n }\n return this;\n }\n\n init() {\n this.isError = false;\n this.isFocus = false;\n this.isPlaying = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.notice = new Notice(this);\n this.events = new Events(this);\n this.player = new Player(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n destroy(removeHtml = false) {\n this.events.destroy();\n instances.splice(instances.indexOf(this), 1);\n if (removeHtml) {\n this.refs.$container.innerHTML = '';\n }\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","isFun","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","deepMerge","isObject","value","returnValue","sources","source","Array","isArray","entries","Reflect","has","validOption","option","container","poster","prototype","toString","call","thumbnails","volume","autoplay","loop","indexOf","preload","lang","type","mimeCodec","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","callback","Player","eventBind","src","proxy","i18n","notice","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","seek","isError","classList","add","get","destroy","pause","time","newTime","duration","currentTime","percentage","parseInt","rate","newRate","playbackRate","validControl","control","disable","position","index","Danmu","Fullscreen","Pip","PlayAndPause","Progress","isDroging","getLoaded","bind","getPlayed","set","player","ref","$loaded","$played","$highlight","$indicator","$tip","item","left","Number","text","display","path","showHighlight","showTime","target","getPosFromEvent","document","remove","dataset","clientWidth","width","tipWidth","buffered","length","end","Subtitle","Time","Volume","Setting","Thumbnails","showThumbnails","posWidth","height","number","column","perWidth","perIndex","ceil","yIndex","xIndex","backgroundImage","backgroundPosition","id","Controls","$map","top","right","mount","tooltip","$control","createElement","setAttribute","commonMethod","push","sort","controlIndex","defineProperty","getBoundingClientRect","x","Contextmenu","click","info","link","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","href","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","mHeight","mWidth","menuLeft","menuTop","Info","log","checkExt","$track","default","kind","load","data","textTracks","track","activeCues","cue","template","getCueAsHTML","fetch","response","headers","test","srtToVtt","vttText","concat","replace","URL","createObjectURL","Blob","ext","Events","destroyEvents","addEventListener","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","DEFAULTS","danmu","removeHtml","splice","Plugin","installedPlugins","plugins","args","from","arguments","slice","unshift","navigator","Emitter"],"mappings":"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"} \ No newline at end of file diff --git a/src/controls/thumbnails.js b/src/controls/thumbnails.js index 078e76ed8..5f31ce1e6 100644 --- a/src/controls/thumbnails.js +++ b/src/controls/thumbnails.js @@ -24,13 +24,15 @@ export default class Thumbnails { showThumbnails(event) { const { $progress } = this.art.refs; const { width: posWidth } = this.getPosFromEvent(event); - const { url, height, width, number } = this.art.option.thumbnails; + const { url, height, width, number, column } = this.art.option.thumbnails; const perWidth = $progress.clientWidth / number; - const index = Math.ceil(posWidth / perWidth); + const perIndex = Math.ceil(posWidth / perWidth); + let yIndex = Math.ceil(perIndex / column); + let xIndex = perIndex % column || column; this.option.ref.style.backgroundImage = `url(${url})`; this.option.ref.style.height = `${height}px`; this.option.ref.style.width = `${width}px`; - this.option.ref.style.backgroundPosition = `-${index * width}px 0`; + this.option.ref.style.backgroundPosition = `-${--xIndex * width}px -${--yIndex * height}px`; if (posWidth <= width / 2) { this.option.ref.style.left = 0; diff --git a/src/index.js b/src/index.js index 2a46d99fe..f706bde85 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,5 @@ import './style/index.scss'; +import { deepMerge } from './utils'; import validOption from './verification/player'; import config from './config'; import Emitter from 'tiny-emitter'; @@ -16,7 +17,6 @@ import Layers from './layers'; import Loading from './loading'; import Notice from './notice'; import Mask from './mask'; -import plugins from './plugins'; let id = 0; export const instances = []; @@ -25,10 +25,9 @@ class Artplayer extends Emitter { constructor(option) { super(); this.emit('init:start'); - this.option = Object.assign({}, Artplayer.DEFAULTS, option); + this.option = deepMerge({}, Artplayer.DEFAULTS, option); validOption(this.option); this.init(); - this.usePlugins(); this.emit('init:end'); } @@ -47,9 +46,10 @@ class Artplayer extends Emitter { poster: '', thumbnails: { url: '', - number: 100, + number: 60, width: 160, - height: 90 + height: 90, + column: 10 }, volume: 0.7, autoplay: false, @@ -116,12 +116,6 @@ class Artplayer extends Emitter { return this; } - usePlugins() { - Object.keys(plugins).forEach(name => { - Artplayer.use(plugins[name]); - }); - } - destroy(removeHtml = false) { this.events.destroy(); instances.splice(instances.indexOf(this), 1); diff --git a/src/plugins/index.js b/src/plugins/index.js index 9790c1a95..5896df552 100644 --- a/src/plugins/index.js +++ b/src/plugins/index.js @@ -1,7 +1,5 @@ -import Srt from './srt'; import Mse from './mse'; export default { - Srt, Mse }; diff --git a/src/style/index.scss b/src/style/index.scss index 2c5012c4b..50045e215 100644 --- a/src/style/index.scss +++ b/src/style/index.scss @@ -50,6 +50,10 @@ color: #fff; text-shadow: 0.5px 0.5px 0.5px rgba(0, 0, 0, 0.5); font-size: 20px; + + p { + margin: 5px 0; + } } .artplayer-layers { diff --git a/src/subtitle.js b/src/subtitle.js index a934988de..3c0404b10 100644 --- a/src/subtitle.js +++ b/src/subtitle.js @@ -3,13 +3,8 @@ import { errorHandle, getExt, setStyle } from './utils'; export default class Subtitle { constructor(art) { this.art = art; - if (this.art.option.subtitle) { - errorHandle( - getExt(this.art.option.subtitle.url) === 'vtt', - `'url' option require 'vtt' format, but got '${getExt(this.art.option.subtitle.url)}'.` - ); - this.init(); - } + this.checkExt(this.art.option.subtitle.url); + this.init(); } init() { @@ -23,26 +18,71 @@ export default class Subtitle { const $track = document.createElement('track'); $track.default = true; $track.kind = 'metadata'; - $track.src = subtitle.url; - $video.appendChild($track); - this.art.refs.$track = $track; - if ($video.textTracks && $video.textTracks[0]) { - const [track] = $video.textTracks; - proxy(track, 'cuechange', () => { - const [cue] = track.activeCues; - $subtitle.innerHTML = ''; - if (cue) { - const template = document.createElement('div'); - template.appendChild(cue.getCueAsHTML()); - $subtitle.innerHTML = template.innerHTML - .split(/\r?\n/) - .map(item => `

${item}

`) - .join(''); + this.load(subtitle.url).then(data => { + $track.src = data; + $video.appendChild($track); + this.art.refs.$track = $track; + if ($video.textTracks && $video.textTracks[0]) { + const [track] = $video.textTracks; + proxy(track, 'cuechange', () => { + const [cue] = track.activeCues; + $subtitle.innerHTML = ''; + if (cue) { + const template = document.createElement('div'); + template.appendChild(cue.getCueAsHTML()); + $subtitle.innerHTML = template.innerHTML + .split(/\r?\n/) + .map(item => `

${item}

`) + .join(''); + } + this.art.emit('subtitle:update', $subtitle); + }); + } + }); + } + + load(url) { + let type; + return fetch(url) + .then(response => { + type = response.headers.get('Content-Type'); + return response.text(); + }) + .then(text => { + if ((/x-subrip/gi).test(type)) { + return this.srtToVtt(text); } - this.art.emit('subtitle:update', $subtitle); + return url; + }) + .catch(err => { + throw err; }); - } + } + + srtToVtt(text) { + const vttText = 'WEBVTT \r\n\r\n'.concat( + text + .replace(/\{\\([ibu])\}/g, '') + .replace(/\{\\([ibu])1\}/g, '<$1>') + .replace(/\{([ibu])\}/g, '<$1>') + .replace(/\{\/([ibu])\}/g, '') + .replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g, '$1.$2') + .concat('\r\n\r\n') + ); + return URL.createObjectURL( + new Blob([vttText], { + type: 'text/vtt' + }) + ); + } + + checkExt(url) { + const ext = getExt(url); + errorHandle( + ext === 'vtt' || ext === 'srt', + `'url' option require 'vtt' or 'srt' format, but got '${ext}'.` + ); } show() { @@ -59,15 +99,13 @@ export default class Subtitle { switch(url) { const { $track } = this.art.refs; - errorHandle( - getExt(url) === 'vtt', - `'url' option require 'vtt' format, but got '${getExt(url)}'.` - ); - errorHandle( - $track, - 'You need to initialize the subtitle option first.' - ); - $track.src = url; - this.art.emit('subtitle:switch', url); + this.checkExt(url); + errorHandle($track, 'You need to initialize the subtitle option first.'); + this.load(url).then(data => { + if (url !== data) { + $track.src = data; + this.art.emit('subtitle:switch', url); + } + }); } } diff --git a/src/utils/index.js b/src/utils/index.js index 96d391f21..2e7e2d205 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,7 +1,8 @@ import ArtPlayerError from './ArtPlayerError'; export function errorHandle(condition, msg) { - if (!condition) { + const isFun = typeof condition === 'function'; + if (isFun ? !isFun() : !condition) { throw new ArtPlayerError(msg); } } @@ -43,9 +44,30 @@ export function setStyle(element, styles) { } export function secondToTime(second) { - const add0 = num => num < 10 ? `0${num}` : String(num); + const add0 = num => (num < 10 ? `0${num}` : String(num)); const hour = Math.floor(second / 3600); const min = Math.floor((second - hour * 3600) / 60); const sec = Math.floor(second - hour * 3600 - min * 60); return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':'); } + +export function deepMerge(...sources) { + const isObject = value => value !== null && typeof value === 'object'; + let returnValue = {}; + for (const source of sources) { + if (Array.isArray(source)) { + if (!Array.isArray(returnValue)) { + returnValue = []; + } + returnValue = [...returnValue, ...source]; + } else if (isObject(source)) { + for (let [key, value] of Object.entries(source)) { + if (isObject(value) && Reflect.has(returnValue, key)) { + value = deepMerge(returnValue[key], value); + } + returnValue = { ...returnValue, [key]: value }; + } + } + } + return returnValue; +}