mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-28 02:01:20 -08:00
优化代码
This commit is contained in:
1 parent
d058fc318c
commit
e0a2a2c594
25 files changed
+288
-172
No files matched your search
@@ -13,5 +13,5 @@
|
|||||||
.artplayer-video-player.artplayer-hide-cursor *{cursor:none!important}
|
.artplayer-video-player.artplayer-hide-cursor *{cursor:none!important}
|
||||||
.artplayer-video-player[data-aspect-ratio] video{box-sizing:content-box;-o-object-fit:fill;object-fit:fill}
|
.artplayer-video-player[data-aspect-ratio] video{box-sizing:content-box;-o-object-fit:fill;object-fit:fill}
|
||||||
.artplayer-video-player.artplayer-web-fullscreen{position:fixed;z-index:9999;width:100%;height:100%;left:0;top:0;right:0;bottom:0}
|
.artplayer-video-player.artplayer-web-fullscreen{position:fixed;z-index:9999;width:100%;height:100%;left:0;top:0;right:0;bottom:0}
|
||||||
.artplayer-video-player .artplayer-pip-header{display:none;position:absolute;z-index:120;left:0;top:0;right:0;height:35px;line-height:35px;color:#fff;background:rgba(0,0,0,.5);align-items:center;justify-content:space-between}.artplayer-video-player .artplayer-pip-header .artplayer-pip-title{flex:1;padding:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artplayer-video-player .artplayer-pip-header .artplayer-pip-close{width:35px;text-align:center;font-size:22px;cursor:pointer}.artplayer-video-player.is-dragging{opacity:.7}.artplayer-video-player.artplayer-pip{position:fixed;right:20px;bottom:20px;width:400px;height:225px;box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.2)}.artplayer-video-player.artplayer-pip .artplayer-pip-header{display:flex}.artplayer-video-player.artplayer-pip .artplayer-mask{align-items:center;justify-content:center}.artplayer-video-player.artplayer-pip .artplayer-mask .art-icon-playBig{position:static}.artplayer-video-player.artplayer-pip .artplayer-bottom,.artplayer-video-player.artplayer-pip .artplayer-contextmenu,.artplayer-video-player.artplayer-pip .artplayer-danmu,.artplayer-video-player.artplayer-pip .artplayer-info,.artplayer-video-player.artplayer-pip .artplayer-layers,.artplayer-video-player.artplayer-pip .artplayer-notice,.artplayer-video-player.artplayer-pip .artplayer-setting,.artplayer-video-player.artplayer-pip .artplayer-subtitle{display:none!important}
|
.artplayer-video-player .artplayer-pip-header{display:none;position:absolute;z-index:120;left:0;top:0;right:0;height:35px;line-height:35px;color:#fff;background:rgba(0,0,0,.5);align-items:center;justify-content:space-between;opacity:0;visibility:hidden;transition:all .2s ease-in-out}.artplayer-video-player .artplayer-pip-header .artplayer-pip-title{flex:1;padding:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:move}.artplayer-video-player .artplayer-pip-header .artplayer-pip-close{width:35px;text-align:center;font-size:22px;cursor:pointer}.artplayer-video-player.is-dragging{opacity:.7}.artplayer-video-player.artplayer-pip{position:fixed;right:20px;bottom:20px;width:400px;height:225px;box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.2)}.artplayer-video-player.artplayer-pip .artplayer-pip-header{display:flex}.artplayer-video-player.artplayer-pip.artplayer-hover .artplayer-pip-header{opacity:1;visibility:visible}.artplayer-video-player.artplayer-pip .artplayer-mask{align-items:center;justify-content:center}.artplayer-video-player.artplayer-pip .artplayer-mask .art-icon-playBig{position:static}.artplayer-video-player.artplayer-pip .artplayer-bottom,.artplayer-video-player.artplayer-pip .artplayer-contextmenu,.artplayer-video-player.artplayer-pip .artplayer-danmu,.artplayer-video-player.artplayer-pip .artplayer-info,.artplayer-video-player.artplayer-pip .artplayer-layers,.artplayer-video-player.artplayer-pip .artplayer-notice,.artplayer-video-player.artplayer-pip .artplayer-setting,.artplayer-video-player.artplayer-pip .artplayer-subtitle{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]Line truncated
|
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]Line truncated
|
||||||
+13
-6
@@ -25,10 +25,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<script src="./js/artplayer.js"></script>
|
<script src="./js/artplayer.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var player = new Artplayer({
|
var app = new Artplayer({
|
||||||
container: '.artplayer-app',
|
container: '.artplayer-app',
|
||||||
url: './video/one-more-time-one-more-chance-480p.mp4',
|
url: './video/one-more-time-one-more-chance-480p.mp4',
|
||||||
poster: './img/one-more-time-one-more-chance.jpg',
|
poster: './img/one-more-time-one-more-chance.jpg',
|
||||||
|
title: 'One more time one more chance',
|
||||||
setting: true,
|
setting: true,
|
||||||
subtitle: {
|
subtitle: {
|
||||||
url: './subtitle/one-more-time-one-more-chance.srt',
|
url: './subtitle/one-more-time-one-more-chance.srt',
|
||||||
@@ -82,7 +83,7 @@
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
player.layers.add({
|
app.layers.add({
|
||||||
index: 1,
|
index: 1,
|
||||||
name: 'your-name',
|
name: 'your-name',
|
||||||
html: '<img style="width: 100px" src="./img/your-name.png">',
|
html: '<img style="width: 100px" src="./img/your-name.png">',
|
||||||
@@ -93,8 +94,8 @@
|
|||||||
}
|
}
|
||||||
}, dom => {
|
}, dom => {
|
||||||
dom.addEventListener('click', () => {
|
dom.addEventListener('click', () => {
|
||||||
player.destroy(true);
|
app.destroy(true);
|
||||||
new Artplayer({
|
app = new Artplayer({
|
||||||
autoplay: true,
|
autoplay: true,
|
||||||
container: '.artplayer-app',
|
container: '.artplayer-app',
|
||||||
url: './video/you-name.mp4',
|
url: './video/you-name.mp4',
|
||||||
@@ -102,9 +103,15 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(player);
|
app.on('beforeMountUrl', url => {
|
||||||
|
Object.defineProperty(app.player, 'mountUrl', {
|
||||||
|
value: url => url + '?id=0'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(app);
|
||||||
Artplayer.config.video.events.forEach(item => {
|
Artplayer.config.video.events.forEach(item => {
|
||||||
player.on('video:' + item, event => {
|
app.on('video:' + item, event => {
|
||||||
console.log('video', event);
|
console.log('video', event);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+126
-84
@@ -402,7 +402,8 @@
|
|||||||
}
|
}
|
||||||
function debounce(func, wait, context) {
|
function debounce(func, wait, context) {
|
||||||
var timeout;
|
var timeout;
|
||||||
return function fn() {
|
|
||||||
|
function fn() {
|
||||||
var args = arguments;
|
var args = arguments;
|
||||||
|
|
||||||
var later = function later() {
|
var later = function later() {
|
||||||
@@ -412,7 +413,13 @@
|
|||||||
|
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
timeout = setTimeout(later, wait);
|
timeout = setTimeout(later, wait);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn.clearTimeout = function ct() {
|
||||||
|
clearTimeout(timeout);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
var optionValidator = createCommonjsModule(function (module, exports) {
|
var optionValidator = createCommonjsModule(function (module, exports) {
|
||||||
@@ -764,7 +771,16 @@
|
|||||||
return I18n;
|
return I18n;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
function attrInit(art) {
|
function mountUrlMix(art, player) {
|
||||||
|
Object.defineProperty(player, 'mountUrl', {
|
||||||
|
writable: true,
|
||||||
|
value: function value(url) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrInit(art, player) {
|
||||||
var option = art.option,
|
var option = art.option,
|
||||||
$video = art.refs.$video;
|
$video = art.refs.$video;
|
||||||
Object.keys(option.moreVideoAttr).forEach(function (key) {
|
Object.keys(option.moreVideoAttr).forEach(function (key) {
|
||||||
@@ -773,7 +789,10 @@
|
|||||||
$video.volume = clamp(option.volume, 0, 1);
|
$video.volume = clamp(option.volume, 0, 1);
|
||||||
$video.poster = option.poster;
|
$video.poster = option.poster;
|
||||||
$video.autoplay = option.autoplay;
|
$video.autoplay = option.autoplay;
|
||||||
$video.src = option.url;
|
sleep().then(function () {
|
||||||
|
art.emit('beforeMountUrl', option.url);
|
||||||
|
$video.src = player.mountUrl(option.url);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function eventInit(art, player) {
|
function eventInit(art, player) {
|
||||||
@@ -978,9 +997,10 @@
|
|||||||
option = art.option;
|
option = art.option;
|
||||||
Object.defineProperty(player, 'switch', {
|
Object.defineProperty(player, 'switch', {
|
||||||
value: function value(url) {
|
value: function value(url) {
|
||||||
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Unknown';
|
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
|
||||||
var currentTime = player.currentTime();
|
var currentTime = player.currentTime();
|
||||||
$video.src = url;
|
art.emit('beforeMountUrl', url);
|
||||||
|
$video.src = player.mountUrl(url);
|
||||||
option.url = url;
|
option.url = url;
|
||||||
player.playbackRateRemove();
|
player.playbackRateRemove();
|
||||||
player.aspectRatioRemove();
|
player.aspectRatioRemove();
|
||||||
@@ -1105,7 +1125,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function screenshotMix(art, player) {
|
function screenshotMix(art, player) {
|
||||||
var notice = art.notice;
|
var option = art.option,
|
||||||
|
notice = art.notice;
|
||||||
|
|
||||||
function captureFrame() {
|
function captureFrame() {
|
||||||
var $video = art.refs.$video;
|
var $video = art.refs.$video;
|
||||||
@@ -1117,7 +1138,7 @@
|
|||||||
var elink = document.createElement('a');
|
var elink = document.createElement('a');
|
||||||
setStyle(elink, 'display', 'none');
|
setStyle(elink, 'display', 'none');
|
||||||
elink.href = dataUri;
|
elink.href = dataUri;
|
||||||
elink.download = "ArtPlayer_".concat(secondToTime($video.currentTime), ".png");
|
elink.download = "".concat(option.title || 'artplayer', "_").concat(secondToTime($video.currentTime), ".png");
|
||||||
document.body.appendChild(elink);
|
document.body.appendChild(elink);
|
||||||
elink.click();
|
elink.click();
|
||||||
document.body.removeChild(elink);
|
document.body.removeChild(elink);
|
||||||
@@ -1339,6 +1360,7 @@
|
|||||||
|
|
||||||
$player.classList.add('artplayer-fullscreen');
|
$player.classList.add('artplayer-fullscreen');
|
||||||
screenfull.request($player);
|
screenfull.request($player);
|
||||||
|
art.emit('fullscreen:enabled');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Object.defineProperty(player, 'fullscreenExit', {
|
Object.defineProperty(player, 'fullscreenExit', {
|
||||||
@@ -1349,6 +1371,7 @@
|
|||||||
|
|
||||||
$player.classList.remove('artplayer-fullscreen');
|
$player.classList.remove('artplayer-fullscreen');
|
||||||
screenfull.exit();
|
screenfull.exit();
|
||||||
|
art.emit('fullscreen:exit');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Object.defineProperty(player, 'fullscreenToggle', {
|
Object.defineProperty(player, 'fullscreenToggle', {
|
||||||
@@ -1377,7 +1400,7 @@
|
|||||||
|
|
||||||
$player.classList.add('artplayer-web-fullscreen');
|
$player.classList.add('artplayer-web-fullscreen');
|
||||||
player.aspectRatioReset();
|
player.aspectRatioReset();
|
||||||
art.emit('fullscreenWeb', true);
|
art.emit('fullscreenWeb:enabled');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Object.defineProperty(player, 'fullscreenWebExit', {
|
Object.defineProperty(player, 'fullscreenWebExit', {
|
||||||
@@ -1388,7 +1411,7 @@
|
|||||||
|
|
||||||
$player.classList.remove('artplayer-web-fullscreen');
|
$player.classList.remove('artplayer-web-fullscreen');
|
||||||
player.aspectRatioReset();
|
player.aspectRatioReset();
|
||||||
art.emit('fullscreenWeb', false);
|
art.emit('fullscreenWeb:exit');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Object.defineProperty(player, 'fullscreenWebToggle', {
|
Object.defineProperty(player, 'fullscreenWebToggle', {
|
||||||
@@ -2723,7 +2746,6 @@
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
var draggie = null;
|
|
||||||
function pipMix(art, player) {
|
function pipMix(art, player) {
|
||||||
var option = art.option,
|
var option = art.option,
|
||||||
i18n = art.i18n,
|
i18n = art.i18n,
|
||||||
@@ -2734,6 +2756,8 @@
|
|||||||
_art$events = art.events,
|
_art$events = art.events,
|
||||||
destroyEvents = _art$events.destroyEvents,
|
destroyEvents = _art$events.destroyEvents,
|
||||||
proxy = _art$events.proxy;
|
proxy = _art$events.proxy;
|
||||||
|
var cachePos = null;
|
||||||
|
var draggie = null;
|
||||||
Object.defineProperty(player, 'pipState', {
|
Object.defineProperty(player, 'pipState', {
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return $player.classList.contains('artplayer-pip');
|
return $player.classList.contains('artplayer-pip');
|
||||||
@@ -2757,6 +2781,9 @@
|
|||||||
destroyEvents.push(function () {
|
destroyEvents.push(function () {
|
||||||
draggie.destroy();
|
draggie.destroy();
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
setStyle($player, 'left', "".concat(cachePos.x, "px"));
|
||||||
|
setStyle($player, 'top', "".concat(cachePos.y, "px"));
|
||||||
}
|
}
|
||||||
|
|
||||||
$player.classList.add('artplayer-pip');
|
$player.classList.add('artplayer-pip');
|
||||||
@@ -2770,6 +2797,7 @@
|
|||||||
Object.defineProperty(player, 'pipExit', {
|
Object.defineProperty(player, 'pipExit', {
|
||||||
value: function value() {
|
value: function value() {
|
||||||
$player.classList.remove('artplayer-pip');
|
$player.classList.remove('artplayer-pip');
|
||||||
|
cachePos = draggie.position;
|
||||||
setStyle($player, 'left', null);
|
setStyle($player, 'left', null);
|
||||||
setStyle($player, 'top', null);
|
setStyle($player, 'top', null);
|
||||||
player.fullscreenExit();
|
player.fullscreenExit();
|
||||||
@@ -2795,6 +2823,7 @@
|
|||||||
|
|
||||||
this.reconnectTime = 0;
|
this.reconnectTime = 0;
|
||||||
this.maxReconnectTime = 5;
|
this.maxReconnectTime = 5;
|
||||||
|
mountUrlMix(art, this);
|
||||||
attrInit(art, this);
|
attrInit(art, this);
|
||||||
eventInit(art, this);
|
eventInit(art, this);
|
||||||
playMix(art, this);
|
playMix(art, this);
|
||||||
@@ -2972,15 +3001,15 @@
|
|||||||
this.$fullscreen = append($control, icons$1.fullscreen);
|
this.$fullscreen = append($control, icons$1.fullscreen);
|
||||||
tooltip(this.$fullscreen, i18n.get('Fullscreen'));
|
tooltip(this.$fullscreen, i18n.get('Fullscreen'));
|
||||||
proxy($control, 'click', function () {
|
proxy($control, 'click', function () {
|
||||||
if (player.fullscreenState) {
|
player.fullscreenToggle();
|
||||||
player.fullscreenExit();
|
});
|
||||||
setStyle(_this.$fullscreen, 'opacity', '1');
|
art.on('fullscreen:enabled', function () {
|
||||||
tooltip(_this.$fullscreen, i18n.get('Fullscreen'));
|
setStyle(_this.$fullscreen, 'opacity', '0.8');
|
||||||
} else {
|
tooltip(_this.$fullscreen, i18n.get('Exit fullscreen'));
|
||||||
player.fullscreenEnabled();
|
});
|
||||||
setStyle(_this.$fullscreen, 'opacity', '0.8');
|
art.on('fullscreen:exit', function () {
|
||||||
tooltip(_this.$fullscreen, i18n.get('Exit fullscreen'));
|
setStyle(_this.$fullscreen, 'opacity', '1');
|
||||||
}
|
tooltip(_this.$fullscreen, i18n.get('Fullscreen'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
@@ -3008,15 +3037,15 @@
|
|||||||
this.$fullscreenWeb = append($control, icons$1.fullscreenWeb);
|
this.$fullscreenWeb = append($control, icons$1.fullscreenWeb);
|
||||||
tooltip(this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
tooltip(this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
||||||
proxy($control, 'click', function () {
|
proxy($control, 'click', function () {
|
||||||
if (player.fullscreenWebState) {
|
player.fullscreenWebToggle();
|
||||||
player.fullscreenWebExit();
|
});
|
||||||
setStyle(_this.$fullscreenWeb, 'opacity', '1');
|
art.on('fullscreenWeb:enabled', function () {
|
||||||
tooltip(_this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
setStyle(_this.$fullscreenWeb, 'opacity', '0.8');
|
||||||
} else {
|
tooltip(_this.$fullscreenWeb, i18n.get('Exit web fullscreen'));
|
||||||
player.fullscreenWebEnabled();
|
});
|
||||||
setStyle(_this.$fullscreenWeb, 'opacity', '0.8');
|
art.on('fullscreenWeb:exit', function () {
|
||||||
tooltip(_this.$fullscreenWeb, i18n.get('Exit web fullscreen'));
|
setStyle(_this.$fullscreenWeb, 'opacity', '1');
|
||||||
}
|
tooltip(_this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
@@ -3141,7 +3170,7 @@
|
|||||||
proxy($control, 'mousemove', function (event) {
|
proxy($control, 'mousemove', function (event) {
|
||||||
setStyle(_this.$tip, 'display', 'block');
|
setStyle(_this.$tip, 'display', 'block');
|
||||||
|
|
||||||
if (event.path.indexOf(_this.$highlight) > -1) {
|
if (event.composedPath().indexOf(_this.$highlight) > -1) {
|
||||||
_this.showHighlight(event);
|
_this.showHighlight(event);
|
||||||
} else {
|
} else {
|
||||||
_this.showTime(event);
|
_this.showTime(event);
|
||||||
@@ -3281,15 +3310,15 @@
|
|||||||
this.$subtitle = append($control, icons$1.subtitle);
|
this.$subtitle = append($control, icons$1.subtitle);
|
||||||
tooltip(this.$subtitle, i18n.get('Hide subtitle'));
|
tooltip(this.$subtitle, i18n.get('Hide subtitle'));
|
||||||
proxy($control, 'click', function () {
|
proxy($control, 'click', function () {
|
||||||
if (subtitle.isOpen) {
|
subtitle.toggle();
|
||||||
subtitle.hide();
|
});
|
||||||
setStyle(_this.$subtitle, 'opacity', '1');
|
art.on('subtitle:show', function () {
|
||||||
tooltip(_this.$subtitle, i18n.get('Show subtitle'));
|
setStyle(_this.$subtitle, 'opacity', '0.8');
|
||||||
} else {
|
tooltip(_this.$subtitle, i18n.get('Hide subtitle'));
|
||||||
subtitle.show();
|
});
|
||||||
setStyle(_this.$subtitle, 'opacity', '0.8');
|
art.on('subtitle:hide', function () {
|
||||||
tooltip(_this.$subtitle, i18n.get('Hide subtitle'));
|
setStyle(_this.$subtitle, 'opacity', '1');
|
||||||
}
|
tooltip(_this.$subtitle, i18n.get('Show subtitle'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
@@ -3309,27 +3338,22 @@
|
|||||||
createClass(Time, [{
|
createClass(Time, [{
|
||||||
key: "apply",
|
key: "apply",
|
||||||
value: function apply(art, $control) {
|
value: function apply(art, $control) {
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
this.art = art;
|
|
||||||
this.$control = $control;
|
|
||||||
$control.innerHTML = '00:00 / 00:00';
|
$control.innerHTML = '00:00 / 00:00';
|
||||||
this.art.on('video:canplay', function () {
|
|
||||||
_this.getTime();
|
function setTime() {
|
||||||
|
$control.innerHTML = "".concat(secondToTime(art.player.currentTime()), " / ").concat(secondToTime(art.player.duration()));
|
||||||
|
}
|
||||||
|
|
||||||
|
art.on('video:canplay', function () {
|
||||||
|
setTime();
|
||||||
});
|
});
|
||||||
this.art.on('video:timeupdate', function () {
|
art.on('video:timeupdate', function () {
|
||||||
_this.getTime();
|
setTime();
|
||||||
});
|
});
|
||||||
this.art.on('video:seeking', function () {
|
art.on('video:seeking', function () {
|
||||||
_this.getTime();
|
setTime();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: "getTime",
|
|
||||||
value: function getTime() {
|
|
||||||
var player = this.art.player;
|
|
||||||
this.$control.innerHTML = "".concat(secondToTime(player.currentTime()), " / ").concat(secondToTime(player.duration()));
|
|
||||||
}
|
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
return Time;
|
return Time;
|
||||||
@@ -3475,15 +3499,15 @@
|
|||||||
this.$setting = append($control, icons$1.setting);
|
this.$setting = append($control, icons$1.setting);
|
||||||
tooltip(this.$setting, i18n.get('Show setting'));
|
tooltip(this.$setting, i18n.get('Show setting'));
|
||||||
proxy($control, 'click', function () {
|
proxy($control, 'click', function () {
|
||||||
if (setting.isOpen) {
|
setting.toggle();
|
||||||
setting.hide();
|
});
|
||||||
setStyle(_this.$setting, 'opacity', '1');
|
art.on('setting:show', function () {
|
||||||
tooltip(_this.$setting, i18n.get('Show setting'));
|
setStyle(_this.$setting, 'opacity', '0.8');
|
||||||
} else {
|
tooltip(_this.$setting, i18n.get('Hide setting'));
|
||||||
setting.show();
|
});
|
||||||
setStyle(_this.$setting, 'opacity', '0.8');
|
art.on('setting:hide', function () {
|
||||||
tooltip(_this.$setting, i18n.get('Hide setting'));
|
setStyle(_this.$setting, 'opacity', '1');
|
||||||
}
|
tooltip(_this.$setting, i18n.get('Show setting'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
@@ -3977,7 +4001,7 @@
|
|||||||
_this.setPos(event);
|
_this.setPos(event);
|
||||||
});
|
});
|
||||||
proxy(refs.$player, 'click', function (event) {
|
proxy(refs.$player, 'click', function (event) {
|
||||||
if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) {
|
if (refs.$contextmenu && !event.composedPath().includes(refs.$contextmenu)) {
|
||||||
_this.hide();
|
_this.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -4250,7 +4274,7 @@
|
|||||||
classCallCheck(this, Subtitle);
|
classCallCheck(this, Subtitle);
|
||||||
|
|
||||||
this.art = art;
|
this.art = art;
|
||||||
this.isOpen = true;
|
this.state = true;
|
||||||
this.vttText = '';
|
this.vttText = '';
|
||||||
var url = this.art.option.subtitle.url;
|
var url = this.art.option.subtitle.url;
|
||||||
|
|
||||||
@@ -4353,7 +4377,7 @@
|
|||||||
i18n = _this$art2.i18n,
|
i18n = _this$art2.i18n,
|
||||||
notice = _this$art2.notice;
|
notice = _this$art2.notice;
|
||||||
setStyle($subtitle, 'display', 'block');
|
setStyle($subtitle, 'display', 'block');
|
||||||
this.isOpen = true;
|
this.state = true;
|
||||||
notice.show(i18n.get('Show subtitle'));
|
notice.show(i18n.get('Show subtitle'));
|
||||||
this.art.emit('subtitle:show', $subtitle);
|
this.art.emit('subtitle:show', $subtitle);
|
||||||
}
|
}
|
||||||
@@ -4365,29 +4389,31 @@
|
|||||||
i18n = _this$art3.i18n,
|
i18n = _this$art3.i18n,
|
||||||
notice = _this$art3.notice;
|
notice = _this$art3.notice;
|
||||||
setStyle($subtitle, 'display', 'none');
|
setStyle($subtitle, 'display', 'none');
|
||||||
this.isOpen = false;
|
this.state = false;
|
||||||
notice.show(i18n.get('Hide subtitle'));
|
notice.show(i18n.get('Hide subtitle'));
|
||||||
this.art.emit('subtitle:hide', $subtitle);
|
this.art.emit('subtitle:hide', $subtitle);
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
key: "toggle",
|
||||||
|
value: function toggle() {
|
||||||
|
if (this.state) {
|
||||||
|
this.hide();
|
||||||
|
} else {
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "switch",
|
key: "switch",
|
||||||
value: function _switch(url) {
|
value: function _switch(url) {
|
||||||
var _this3 = this;
|
var _this3 = this;
|
||||||
|
|
||||||
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
|
var $track = this.art.refs.$track;
|
||||||
var _this$art$refs2 = this.art.refs,
|
|
||||||
$track = _this$art$refs2.$track,
|
|
||||||
i18n = _this$art$refs2.i18n,
|
|
||||||
notice = _this$art$refs2.notice;
|
|
||||||
this.checkExt(url);
|
this.checkExt(url);
|
||||||
errorHandle($track, 'You need to initialize the subtitle option first.');
|
errorHandle($track, 'You need to initialize the subtitle option first.');
|
||||||
this.load(url).then(function (data) {
|
this.load(url).then(function (data) {
|
||||||
if (url !== data) {
|
$track.src = data;
|
||||||
$track.src = data;
|
|
||||||
notice.show("".concat(i18n.get('Switch subtitle'), ": ").concat(name));
|
|
||||||
|
|
||||||
_this3.art.emit('subtitle:switch', url);
|
_this3.art.emit('subtitle:switch', url);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
@@ -4424,6 +4450,15 @@
|
|||||||
|
|
||||||
_this.art.emit('hoverleave');
|
_this.art.emit('hoverleave');
|
||||||
});
|
});
|
||||||
|
this.proxy(document, ['click', 'contextmenu'], function (event) {
|
||||||
|
if (event.composedPath().indexOf($player) > -1) {
|
||||||
|
_this.art.isFocus = true;
|
||||||
|
} else {
|
||||||
|
_this.art.isFocus = false;
|
||||||
|
|
||||||
|
_this.art.contextmenu.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
var hideCursor = debounce(function () {
|
var hideCursor = debounce(function () {
|
||||||
$player.classList.add('artplayer-hide-cursor');
|
$player.classList.add('artplayer-hide-cursor');
|
||||||
|
|
||||||
@@ -4440,6 +4475,8 @@
|
|||||||
|
|
||||||
if (!_this.art.player.pipState) {
|
if (!_this.art.player.pipState) {
|
||||||
hideCursor();
|
hideCursor();
|
||||||
|
} else {
|
||||||
|
hideCursor.clearTimeout();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -4500,11 +4537,7 @@
|
|||||||
|
|
||||||
var _this$art = this.art,
|
var _this$art = this.art,
|
||||||
player = _this$art.player,
|
player = _this$art.player,
|
||||||
$player = _this$art.refs.$player,
|
|
||||||
proxy = _this$art.events.proxy;
|
proxy = _this$art.events.proxy;
|
||||||
proxy(document, ['click', 'contextmenu'], function (event) {
|
|
||||||
_this.art.isFocus = event.path.indexOf($player) > -1;
|
|
||||||
});
|
|
||||||
proxy(window, 'keydown', function (event) {
|
proxy(window, 'keydown', function (event) {
|
||||||
if (_this.art.isFocus) {
|
if (_this.art.isFocus) {
|
||||||
var tag = document.activeElement.tagName.toUpperCase();
|
var tag = document.activeElement.tagName.toUpperCase();
|
||||||
@@ -4735,7 +4768,7 @@
|
|||||||
classCallCheck(this, Setting);
|
classCallCheck(this, Setting);
|
||||||
|
|
||||||
this.art = art;
|
this.art = art;
|
||||||
this.isOpen = false;
|
this.state = false;
|
||||||
this.$settings = [];
|
this.$settings = [];
|
||||||
|
|
||||||
if (art.option.setting) {
|
if (art.option.setting) {
|
||||||
@@ -4800,7 +4833,7 @@
|
|||||||
i18n = _this$art2.i18n,
|
i18n = _this$art2.i18n,
|
||||||
notice = _this$art2.notice;
|
notice = _this$art2.notice;
|
||||||
setStyle($setting, 'display', 'flex');
|
setStyle($setting, 'display', 'flex');
|
||||||
this.isOpen = true;
|
this.state = true;
|
||||||
notice.show(i18n.get('Show setting'));
|
notice.show(i18n.get('Show setting'));
|
||||||
this.art.emit('setting:show', $setting);
|
this.art.emit('setting:show', $setting);
|
||||||
}
|
}
|
||||||
@@ -4812,10 +4845,19 @@
|
|||||||
i18n = _this$art3.i18n,
|
i18n = _this$art3.i18n,
|
||||||
notice = _this$art3.notice;
|
notice = _this$art3.notice;
|
||||||
setStyle($setting, 'display', 'none');
|
setStyle($setting, 'display', 'none');
|
||||||
this.isOpen = false;
|
this.state = false;
|
||||||
notice.show(i18n.get('Hide setting'));
|
notice.show(i18n.get('Hide setting'));
|
||||||
this.art.emit('setting:hide', $setting);
|
this.art.emit('setting:hide', $setting);
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
key: "toggle",
|
||||||
|
value: function toggle() {
|
||||||
|
if (this.state) {
|
||||||
|
this.hide();
|
||||||
|
} else {
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
return Setting;
|
return Setting;
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.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/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/index.js","../../node_modules/option-validator/dist/option-validator.js","../../src/scheme/validElement.js","../../src/scheme/index.js","../../src/config/mimeCodec.js","../../src/config/mse.js","../../src/config/video.js","../../src/config/index.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/player/attrInit.js","../../src/player/eventInit.js","../../src/player/playMix.js","../../src/player/pauseMin.js","../../src/player/toggleMix.js","../../src/player/seekMix.js","../../src/player/volumeMix.js","../../src/player/currentTimeMix.js","../../src/player/durationMix.js","../../src/player/switchMix.js","../../src/player/playbackRateMix.js","../../src/player/aspectRatioMix.js","../../src/player/screenshotMix.js","../../node_modules/screenfull/dist/screenfull.js","../../src/player/fullscreenMix.js","../../src/player/fullscreenWebMix.js","../../node_modules/get-size/get-size.js","../../node_modules/ev-emitter/ev-emitter.js","../../node_modules/unipointer/unipointer.js","../../node_modules/unidragger/unidragger.js","../../node_modules/draggabilly/draggabilly.js","../../src/player/pipMix.js","../../src/player/index.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../src/icons/index.js","../../src/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/fullscreenWeb.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/screenshot.js","../../src/controls/quality.js","../../src/controls/index.js","../../src/contextmenu/playbackRate.js","../../src/contextmenu/aspectRatio.js","../../src/contextmenu/info.js","../../src/contextmenu/version.js","../../src/contextmenu/close.js","../../src/contextmenu/index.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/setting/common.js","../../src/setting/index.js","../../src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function Line truncated
|
{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.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/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/index.js","../../node_modules/option-validator/dist/option-validator.js","../../src/scheme/validElement.js","../../src/scheme/index.js","../../src/config/mimeCodec.js","../../src/config/mse.js","../../src/config/video.js","../../src/config/index.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/player/mountUrlMix.js","../../src/player/attrInit.js","../../src/player/eventInit.js","../../src/player/playMix.js","../../src/player/pauseMin.js","../../src/player/toggleMix.js","../../src/player/seekMix.js","../../src/player/volumeMix.js","../../src/player/currentTimeMix.js","../../src/player/durationMix.js","../../src/player/switchMix.js","../../src/player/playbackRateMix.js","../../src/player/aspectRatioMix.js","../../src/player/screenshotMix.js","../../node_modules/screenfull/dist/screenfull.js","../../src/player/fullscreenMix.js","../../src/player/fullscreenWebMix.js","../../node_modules/get-size/get-size.js","../../node_modules/ev-emitter/ev-emitter.js","../../node_modules/unipointer/unipointer.js","../../node_modules/unidragger/unidragger.js","../../node_modules/draggabilly/draggabilly.js","../../src/player/pipMix.js","../../src/player/index.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../src/icons/index.js","../../src/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/fullscreenWeb.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/screenshot.js","../../src/controls/quality.js","../../src/controls/index.js","../../src/contextmenu/playbackRate.js","../../src/contextmenu/aspectRatio.js","../../src/contextmenu/info.js","../../src/contextmenu/version.js","../../src/contextmenu/close.js","../../src/contextmenu/index.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/setting/common.js","../../src/setting/index.js","../../src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n moLine truncated
|
||||||
@@ -33,7 +33,7 @@ export default class Contextmenu {
|
|||||||
});
|
});
|
||||||
|
|
||||||
proxy(refs.$player, 'click', event => {
|
proxy(refs.$player, 'click', event => {
|
||||||
if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) {
|
if (refs.$contextmenu && !event.composedPath().includes(refs.$contextmenu)) {
|
||||||
this.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,16 +10,19 @@ export default class Fullscreen {
|
|||||||
const { events: { proxy }, i18n, player } = art;
|
const { events: { proxy }, i18n, player } = art;
|
||||||
this.$fullscreen = append($control, icons.fullscreen);
|
this.$fullscreen = append($control, icons.fullscreen);
|
||||||
tooltip(this.$fullscreen, i18n.get('Fullscreen'));
|
tooltip(this.$fullscreen, i18n.get('Fullscreen'));
|
||||||
|
|
||||||
proxy($control, 'click', () => {
|
proxy($control, 'click', () => {
|
||||||
if (player.fullscreenState) {
|
player.fullscreenToggle();
|
||||||
player.fullscreenExit();
|
});
|
||||||
setStyle(this.$fullscreen, 'opacity', '1');
|
|
||||||
tooltip(this.$fullscreen, i18n.get('Fullscreen'));
|
art.on('fullscreen:enabled', () => {
|
||||||
} else {
|
setStyle(this.$fullscreen, 'opacity', '0.8');
|
||||||
player.fullscreenEnabled();
|
tooltip(this.$fullscreen, i18n.get('Exit fullscreen'));
|
||||||
setStyle(this.$fullscreen, 'opacity', '0.8');
|
});
|
||||||
tooltip(this.$fullscreen, i18n.get('Exit fullscreen'));
|
|
||||||
}
|
art.on('fullscreen:exit', () => {
|
||||||
|
setStyle(this.$fullscreen, 'opacity', '1');
|
||||||
|
tooltip(this.$fullscreen, i18n.get('Fullscreen'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,16 +10,19 @@ export default class FullscreenWeb {
|
|||||||
const { events: { proxy }, i18n, player } = art;
|
const { events: { proxy }, i18n, player } = art;
|
||||||
this.$fullscreenWeb = append($control, icons.fullscreenWeb);
|
this.$fullscreenWeb = append($control, icons.fullscreenWeb);
|
||||||
tooltip(this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
tooltip(this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
||||||
|
|
||||||
proxy($control, 'click', () => {
|
proxy($control, 'click', () => {
|
||||||
if (player.fullscreenWebState) {
|
player.fullscreenWebToggle();
|
||||||
player.fullscreenWebExit();
|
});
|
||||||
setStyle(this.$fullscreenWeb, 'opacity', '1');
|
|
||||||
tooltip(this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
art.on('fullscreenWeb:enabled', () => {
|
||||||
} else {
|
setStyle(this.$fullscreenWeb, 'opacity', '0.8');
|
||||||
player.fullscreenWebEnabled();
|
tooltip(this.$fullscreenWeb, i18n.get('Exit web fullscreen'));
|
||||||
setStyle(this.$fullscreenWeb, 'opacity', '0.8');
|
});
|
||||||
tooltip(this.$fullscreenWeb, i18n.get('Exit web fullscreen'));
|
|
||||||
}
|
art.on('fullscreenWeb:exit', () => {
|
||||||
|
setStyle(this.$fullscreenWeb, 'opacity', '1');
|
||||||
|
tooltip(this.$fullscreenWeb, i18n.get('Web fullscreen'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,7 @@ export default class Progress {
|
|||||||
|
|
||||||
proxy($control, 'mousemove', event => {
|
proxy($control, 'mousemove', event => {
|
||||||
setStyle(this.$tip, 'display', 'block');
|
setStyle(this.$tip, 'display', 'block');
|
||||||
if (event.path.indexOf(this.$highlight) > -1) {
|
if (event.composedPath().indexOf(this.$highlight) > -1) {
|
||||||
this.showHighlight(event);
|
this.showHighlight(event);
|
||||||
} else {
|
} else {
|
||||||
this.showTime(event);
|
this.showTime(event);
|
||||||
|
|||||||
+12
-9
@@ -10,16 +10,19 @@ export default class Setting {
|
|||||||
const { events: { proxy }, i18n, setting } = art;
|
const { events: { proxy }, i18n, setting } = art;
|
||||||
this.$setting = append($control, icons.setting);
|
this.$setting = append($control, icons.setting);
|
||||||
tooltip(this.$setting, i18n.get('Show setting'));
|
tooltip(this.$setting, i18n.get('Show setting'));
|
||||||
|
|
||||||
proxy($control, 'click', () => {
|
proxy($control, 'click', () => {
|
||||||
if (setting.isOpen) {
|
setting.toggle();
|
||||||
setting.hide();
|
});
|
||||||
setStyle(this.$setting, 'opacity', '1');
|
|
||||||
tooltip(this.$setting, i18n.get('Show setting'));
|
art.on('setting:show', () => {
|
||||||
} else {
|
setStyle(this.$setting, 'opacity', '0.8');
|
||||||
setting.show();
|
tooltip(this.$setting, i18n.get('Hide setting'));
|
||||||
setStyle(this.$setting, 'opacity', '0.8');
|
});
|
||||||
tooltip(this.$setting, i18n.get('Hide setting'));
|
|
||||||
}
|
art.on('setting:hide', () => {
|
||||||
|
setStyle(this.$setting, 'opacity', '1');
|
||||||
|
tooltip(this.$setting, i18n.get('Show setting'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,16 +10,19 @@ export default class Subtitle {
|
|||||||
const { events: { proxy }, i18n, subtitle } = art;
|
const { events: { proxy }, i18n, subtitle } = art;
|
||||||
this.$subtitle = append($control, icons.subtitle);
|
this.$subtitle = append($control, icons.subtitle);
|
||||||
tooltip(this.$subtitle, i18n.get('Hide subtitle'));
|
tooltip(this.$subtitle, i18n.get('Hide subtitle'));
|
||||||
|
|
||||||
proxy($control, 'click', () => {
|
proxy($control, 'click', () => {
|
||||||
if (subtitle.isOpen) {
|
subtitle.toggle();
|
||||||
subtitle.hide();
|
});
|
||||||
setStyle(this.$subtitle, 'opacity', '1');
|
|
||||||
tooltip(this.$subtitle, i18n.get('Show subtitle'));
|
art.on('subtitle:show', () => {
|
||||||
} else {
|
setStyle(this.$subtitle, 'opacity', '0.8');
|
||||||
subtitle.show();
|
tooltip(this.$subtitle, i18n.get('Hide subtitle'));
|
||||||
setStyle(this.$subtitle, 'opacity', '0.8');
|
});
|
||||||
tooltip(this.$subtitle, i18n.get('Hide subtitle'));
|
|
||||||
}
|
art.on('subtitle:hide', () => {
|
||||||
|
setStyle(this.$subtitle, 'opacity', '1');
|
||||||
|
tooltip(this.$subtitle, i18n.get('Show subtitle'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+10
-13
@@ -6,25 +6,22 @@ export default class Time {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply(art, $control) {
|
apply(art, $control) {
|
||||||
this.art = art;
|
|
||||||
this.$control = $control;
|
|
||||||
$control.innerHTML = '00:00 / 00:00';
|
$control.innerHTML = '00:00 / 00:00';
|
||||||
|
|
||||||
this.art.on('video:canplay', () => {
|
function setTime() {
|
||||||
this.getTime();
|
$control.innerHTML = `${secondToTime(art.player.currentTime())} / ${secondToTime(art.player.duration())}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
art.on('video:canplay', () => {
|
||||||
|
setTime();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.art.on('video:timeupdate', () => {
|
art.on('video:timeupdate', () => {
|
||||||
this.getTime();
|
setTime();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.art.on('video:seeking', () => {
|
art.on('video:seeking', () => {
|
||||||
this.getTime();
|
setTime();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getTime() {
|
|
||||||
const { player } = this.art;
|
|
||||||
this.$control.innerHTML = `${secondToTime(player.currentTime())} / ${secondToTime(player.duration())}`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,7 @@ export default class Events {
|
|||||||
|
|
||||||
init() {
|
init() {
|
||||||
const { refs: { $player } } = this.art;
|
const { refs: { $player } } = this.art;
|
||||||
|
|
||||||
this.hover($player, () => {
|
this.hover($player, () => {
|
||||||
$player.classList.add('artplayer-hover');
|
$player.classList.add('artplayer-hover');
|
||||||
this.art.emit('hoverenter');
|
this.art.emit('hoverenter');
|
||||||
@@ -20,6 +21,15 @@ export default class Events {
|
|||||||
this.art.emit('hoverleave');
|
this.art.emit('hoverleave');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.proxy(document, ['click', 'contextmenu'], event => {
|
||||||
|
if (event.composedPath().indexOf($player) > -1) {
|
||||||
|
this.art.isFocus = true;
|
||||||
|
} else {
|
||||||
|
this.art.isFocus = false;
|
||||||
|
this.art.contextmenu.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const hideCursor = debounce(() => {
|
const hideCursor = debounce(() => {
|
||||||
$player.classList.add('artplayer-hide-cursor');
|
$player.classList.add('artplayer-hide-cursor');
|
||||||
if (this.art.player.fullscreenState || this.art.player.fullscreenWebState) {
|
if (this.art.player.fullscreenState || this.art.player.fullscreenWebState) {
|
||||||
@@ -27,11 +37,14 @@ export default class Events {
|
|||||||
this.art.controls.hide();
|
this.art.controls.hide();
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
|
||||||
this.proxy($player, 'mousemove', () => {
|
this.proxy($player, 'mousemove', () => {
|
||||||
$player.classList.remove('artplayer-hide-cursor');
|
$player.classList.remove('artplayer-hide-cursor');
|
||||||
this.art.controls.show();
|
this.art.controls.show();
|
||||||
if (!this.art.player.pipState) {
|
if (!this.art.player.pipState) {
|
||||||
hideCursor();
|
hideCursor();
|
||||||
|
} else {
|
||||||
|
hideCursor.clearTimeout();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-5
@@ -7,11 +7,7 @@ export default class Hotkey {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
const { player, refs: { $player }, events: { proxy } } = this.art;
|
const { player, events: { proxy } } = this.art;
|
||||||
|
|
||||||
proxy(document, ['click', 'contextmenu'], event => {
|
|
||||||
this.art.isFocus = event.path.indexOf($player) > -1;
|
|
||||||
});
|
|
||||||
|
|
||||||
proxy(window, 'keydown', event => {
|
proxy(window, 'keydown', event => {
|
||||||
if (this.art.isFocus) {
|
if (this.art.isFocus) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { clamp } from '../utils';
|
import { clamp, sleep } from '../utils';
|
||||||
|
|
||||||
export default function attrInit(art) {
|
export default function attrInit(art, player) {
|
||||||
const { option, refs: { $video } } = art;
|
const { option, refs: { $video } } = art;
|
||||||
Object.keys(option.moreVideoAttr).forEach(key => {
|
Object.keys(option.moreVideoAttr).forEach(key => {
|
||||||
$video[key] = option.moreVideoAttr[key];
|
$video[key] = option.moreVideoAttr[key];
|
||||||
@@ -8,5 +8,8 @@ export default function attrInit(art) {
|
|||||||
$video.volume = clamp(option.volume, 0, 1);
|
$video.volume = clamp(option.volume, 0, 1);
|
||||||
$video.poster = option.poster;
|
$video.poster = option.poster;
|
||||||
$video.autoplay = option.autoplay;
|
$video.autoplay = option.autoplay;
|
||||||
$video.src = option.url;
|
sleep().then(() => {
|
||||||
|
art.emit('beforeMountUrl', option.url);
|
||||||
|
$video.src = player.mountUrl(option.url);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
@@ -30,6 +30,7 @@ export default function fullscreenMix(art, player) {
|
|||||||
}
|
}
|
||||||
$player.classList.add('artplayer-fullscreen');
|
$player.classList.add('artplayer-fullscreen');
|
||||||
screenfull.request($player);
|
screenfull.request($player);
|
||||||
|
art.emit('fullscreen:enabled');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -40,6 +41,7 @@ export default function fullscreenMix(art, player) {
|
|||||||
}
|
}
|
||||||
$player.classList.remove('artplayer-fullscreen');
|
$player.classList.remove('artplayer-fullscreen');
|
||||||
screenfull.exit();
|
screenfull.exit();
|
||||||
|
art.emit('fullscreen:exit');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export default function fullscreenWebMix(art, player) {
|
|||||||
}
|
}
|
||||||
$player.classList.add('artplayer-web-fullscreen');
|
$player.classList.add('artplayer-web-fullscreen');
|
||||||
player.aspectRatioReset();
|
player.aspectRatioReset();
|
||||||
art.emit('fullscreenWeb', true);
|
art.emit('fullscreenWeb:enabled');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ export default function fullscreenWebMix(art, player) {
|
|||||||
}
|
}
|
||||||
$player.classList.remove('artplayer-web-fullscreen');
|
$player.classList.remove('artplayer-web-fullscreen');
|
||||||
player.aspectRatioReset();
|
player.aspectRatioReset();
|
||||||
art.emit('fullscreenWeb', false);
|
art.emit('fullscreenWeb:exit');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import mountUrlMix from './mountUrlMix';
|
||||||
import attrInit from './attrInit';
|
import attrInit from './attrInit';
|
||||||
import eventInit from './eventInit';
|
import eventInit from './eventInit';
|
||||||
import playMix from './playMix';
|
import playMix from './playMix';
|
||||||
@@ -20,6 +21,7 @@ export default class Player {
|
|||||||
this.reconnectTime = 0;
|
this.reconnectTime = 0;
|
||||||
this.maxReconnectTime = 5;
|
this.maxReconnectTime = 5;
|
||||||
|
|
||||||
|
mountUrlMix(art, this);
|
||||||
attrInit(art, this);
|
attrInit(art, this);
|
||||||
eventInit(art, this);
|
eventInit(art, this);
|
||||||
playMix(art, this);
|
playMix(art, this);
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
export default function mountUrlMix(art, player) {
|
||||||
|
Object.defineProperty(player, 'mountUrl', {
|
||||||
|
writable: true,
|
||||||
|
value: url => url
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
import Draggabilly from 'draggabilly';
|
import Draggabilly from 'draggabilly';
|
||||||
import { setStyle, append } from '../utils';
|
import { setStyle, append } from '../utils';
|
||||||
|
|
||||||
let draggie = null;
|
|
||||||
export default function pipMix(art, player) {
|
export default function pipMix(art, player) {
|
||||||
const { option, i18n, refs: { $player, $pipClose, $pipTitle }, events: { destroyEvents, proxy } } = art;
|
const { option, i18n, refs: { $player, $pipClose, $pipTitle }, events: { destroyEvents, proxy } } = art;
|
||||||
|
let cachePos = null;
|
||||||
|
let draggie = null;
|
||||||
|
|
||||||
Object.defineProperty(player, 'pipState', {
|
Object.defineProperty(player, 'pipState', {
|
||||||
get: () => $player.classList.contains('artplayer-pip')
|
get: () => $player.classList.contains('artplayer-pip')
|
||||||
@@ -29,6 +30,9 @@ export default function pipMix(art, player) {
|
|||||||
destroyEvents.push(() => {
|
destroyEvents.push(() => {
|
||||||
draggie.destroy();
|
draggie.destroy();
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
setStyle($player, 'left', `${cachePos.x}px`);
|
||||||
|
setStyle($player, 'top', `${cachePos.y}px`);
|
||||||
}
|
}
|
||||||
$player.classList.add('artplayer-pip');
|
$player.classList.add('artplayer-pip');
|
||||||
player.fullscreenExit();
|
player.fullscreenExit();
|
||||||
@@ -42,6 +46,7 @@ export default function pipMix(art, player) {
|
|||||||
Object.defineProperty(player, 'pipExit', {
|
Object.defineProperty(player, 'pipExit', {
|
||||||
value: () => {
|
value: () => {
|
||||||
$player.classList.remove('artplayer-pip');
|
$player.classList.remove('artplayer-pip');
|
||||||
|
cachePos = draggie.position;
|
||||||
setStyle($player, 'left', null);
|
setStyle($player, 'left', null);
|
||||||
setStyle($player, 'top', null);
|
setStyle($player, 'top', null);
|
||||||
player.fullscreenExit();
|
player.fullscreenExit();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { setStyle, secondToTime } from '../utils';
|
import { setStyle, secondToTime } from '../utils';
|
||||||
|
|
||||||
export default function screenshotMix(art, player) {
|
export default function screenshotMix(art, player) {
|
||||||
const { notice } = art;
|
const { option, notice } = art;
|
||||||
|
|
||||||
function captureFrame() {
|
function captureFrame() {
|
||||||
const { $video } = art.refs;
|
const { $video } = art.refs;
|
||||||
@@ -13,7 +13,7 @@ export default function screenshotMix(art, player) {
|
|||||||
const elink = document.createElement('a');
|
const elink = document.createElement('a');
|
||||||
setStyle(elink, 'display', 'none');
|
setStyle(elink, 'display', 'none');
|
||||||
elink.href = dataUri;
|
elink.href = dataUri;
|
||||||
elink.download = `ArtPlayer_${secondToTime($video.currentTime)}.png`;
|
elink.download = `${option.title || 'artplayer'}_${secondToTime($video.currentTime)}.png`;
|
||||||
document.body.appendChild(elink);
|
document.body.appendChild(elink);
|
||||||
elink.click();
|
elink.click();
|
||||||
document.body.removeChild(elink);
|
document.body.removeChild(elink);
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ export default function switchMix(art, player) {
|
|||||||
const { refs: { $video }, i18n, notice, isPlaying, option } = art;
|
const { refs: { $video }, i18n, notice, isPlaying, option } = art;
|
||||||
|
|
||||||
Object.defineProperty(player, 'switch', {
|
Object.defineProperty(player, 'switch', {
|
||||||
value: (url, name = 'Unknown') => {
|
value: (url, name = 'unknown') => {
|
||||||
const currentTime = player.currentTime();
|
const currentTime = player.currentTime();
|
||||||
$video.src = url;
|
art.emit('beforeMountUrl', url);
|
||||||
|
$video.src = player.mountUrl(url);
|
||||||
option.url = url;
|
option.url = url;
|
||||||
player.playbackRateRemove();
|
player.playbackRateRemove();
|
||||||
player.aspectRatioRemove();
|
player.aspectRatioRemove();
|
||||||
|
|||||||
+11
-3
@@ -5,7 +5,7 @@ let id = 0;
|
|||||||
export default class Setting {
|
export default class Setting {
|
||||||
constructor(art) {
|
constructor(art) {
|
||||||
this.art = art;
|
this.art = art;
|
||||||
this.isOpen = false;
|
this.state = false;
|
||||||
this.$settings = [];
|
this.$settings = [];
|
||||||
if (art.option.setting) {
|
if (art.option.setting) {
|
||||||
this.init();
|
this.init();
|
||||||
@@ -59,7 +59,7 @@ export default class Setting {
|
|||||||
show() {
|
show() {
|
||||||
const { refs: { $setting }, i18n, notice } = this.art;
|
const { refs: { $setting }, i18n, notice } = this.art;
|
||||||
setStyle($setting, 'display', 'flex');
|
setStyle($setting, 'display', 'flex');
|
||||||
this.isOpen = true;
|
this.state = true;
|
||||||
notice.show(i18n.get('Show setting'));
|
notice.show(i18n.get('Show setting'));
|
||||||
this.art.emit('setting:show', $setting);
|
this.art.emit('setting:show', $setting);
|
||||||
}
|
}
|
||||||
@@ -67,8 +67,16 @@ export default class Setting {
|
|||||||
hide() {
|
hide() {
|
||||||
const { refs: { $setting }, i18n, notice } = this.art;
|
const { refs: { $setting }, i18n, notice } = this.art;
|
||||||
setStyle($setting, 'display', 'none');
|
setStyle($setting, 'display', 'none');
|
||||||
this.isOpen = false;
|
this.state = false;
|
||||||
notice.show(i18n.get('Hide setting'));
|
notice.show(i18n.get('Hide setting'));
|
||||||
this.art.emit('setting:hide', $setting);
|
this.art.emit('setting:hide', $setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
if (this.state) {
|
||||||
|
this.hide();
|
||||||
|
} else {
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -12,12 +12,16 @@
|
|||||||
background: rgba(0, 0, 0, 0.5);
|
background: rgba(0, 0, 0, 0.5);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
transition: all .2s ease-in-out;
|
||||||
.artplayer-pip-title {
|
.artplayer-pip-title {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
cursor: move;
|
||||||
}
|
}
|
||||||
.artplayer-pip-close {
|
.artplayer-pip-close {
|
||||||
width: 35px;
|
width: 35px;
|
||||||
@@ -43,6 +47,13 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.artplayer-hover {
|
||||||
|
.artplayer-pip-header {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.artplayer-mask {
|
.artplayer-mask {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|||||||
+15
-10
@@ -3,7 +3,7 @@ import { errorHandle, getExt, setStyles, setStyle } from './utils';
|
|||||||
export default class Subtitle {
|
export default class Subtitle {
|
||||||
constructor(art) {
|
constructor(art) {
|
||||||
this.art = art;
|
this.art = art;
|
||||||
this.isOpen = true;
|
this.state = true;
|
||||||
this.vttText = '';
|
this.vttText = '';
|
||||||
const { url } = this.art.option.subtitle;
|
const { url } = this.art.option.subtitle;
|
||||||
if (url) {
|
if (url) {
|
||||||
@@ -95,7 +95,7 @@ export default class Subtitle {
|
|||||||
show() {
|
show() {
|
||||||
const { refs: { $subtitle }, i18n, notice } = this.art;
|
const { refs: { $subtitle }, i18n, notice } = this.art;
|
||||||
setStyle($subtitle, 'display', 'block');
|
setStyle($subtitle, 'display', 'block');
|
||||||
this.isOpen = true;
|
this.state = true;
|
||||||
notice.show(i18n.get('Show subtitle'));
|
notice.show(i18n.get('Show subtitle'));
|
||||||
this.art.emit('subtitle:show', $subtitle);
|
this.art.emit('subtitle:show', $subtitle);
|
||||||
}
|
}
|
||||||
@@ -103,21 +103,26 @@ export default class Subtitle {
|
|||||||
hide() {
|
hide() {
|
||||||
const { refs: { $subtitle }, i18n, notice } = this.art;
|
const { refs: { $subtitle }, i18n, notice } = this.art;
|
||||||
setStyle($subtitle, 'display', 'none');
|
setStyle($subtitle, 'display', 'none');
|
||||||
this.isOpen = false;
|
this.state = false;
|
||||||
notice.show(i18n.get('Hide subtitle'));
|
notice.show(i18n.get('Hide subtitle'));
|
||||||
this.art.emit('subtitle:hide', $subtitle);
|
this.art.emit('subtitle:hide', $subtitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(url, name = 'unknown') {
|
toggle() {
|
||||||
const { $track, i18n, notice } = this.art.refs;
|
if (this.state) {
|
||||||
|
this.hide();
|
||||||
|
} else {
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(url) {
|
||||||
|
const { $track } = this.art.refs;
|
||||||
this.checkExt(url);
|
this.checkExt(url);
|
||||||
errorHandle($track, 'You need to initialize the subtitle option first.');
|
errorHandle($track, 'You need to initialize the subtitle option first.');
|
||||||
this.load(url).then(data => {
|
this.load(url).then(data => {
|
||||||
if (url !== data) {
|
$track.src = data;
|
||||||
$track.src = data;
|
this.art.emit('subtitle:switch', url);
|
||||||
notice.show(`${i18n.get('Switch subtitle')}: ${name}`);
|
|
||||||
this.art.emit('subtitle:switch', url);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+7
-1
@@ -120,7 +120,7 @@ export function sublings(target) {
|
|||||||
|
|
||||||
export function debounce(func, wait, context) {
|
export function debounce(func, wait, context) {
|
||||||
let timeout;
|
let timeout;
|
||||||
return function fn() {
|
function fn() {
|
||||||
const args = arguments;
|
const args = arguments;
|
||||||
const later = function later() {
|
const later = function later() {
|
||||||
timeout = null;
|
timeout = null;
|
||||||
@@ -128,5 +128,11 @@ export function debounce(func, wait, context) {
|
|||||||
};
|
};
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
timeout = setTimeout(later, wait);
|
timeout = setTimeout(later, wait);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn.clearTimeout = function ct() {
|
||||||
|
clearTimeout(timeout);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return fn;
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user