Files
ArtPlayer/packages/artplayer/src/player/minMix.js
T
2020-05-15 18:35:41 +08:00

75 lines
2.4 KiB
JavaScript

import { append, setStyle, addClass, removeClass, hasClass, def } from '../utils';
export default function minMix(art, player) {
const {
i18n,
option,
events: { proxy },
template: { $player, $minClose, $minTitle, $minHeader },
} = art;
let cacheStyle = '';
let isDroging = false;
let lastPageX = 0;
let lastPageY = 0;
let lastPlayerLeft = 0;
let lastPlayerTop = 0;
proxy($minHeader, 'mousedown', (event) => {
isDroging = true;
lastPageX = event.pageX;
lastPageY = event.pageY;
lastPlayerLeft = player.left;
lastPlayerTop = player.top;
});
proxy(document, 'mousemove', (event) => {
if (isDroging) {
addClass($player, 'art-is-dragging');
setStyle($player, 'left', `${lastPlayerLeft + event.pageX - lastPageX}px`);
setStyle($player, 'top', `${lastPlayerTop + event.pageY - lastPageY}px`);
}
});
proxy(document, 'mouseup', () => {
isDroging = false;
removeClass($player, 'art-is-dragging');
});
proxy($minClose, 'click', () => {
player.min = false;
isDroging = false;
removeClass($player, 'art-is-dragging');
});
append($minTitle, option.title || i18n.get('Mini player'));
def(player, 'min', {
get() {
return hasClass($player, 'art-min');
},
set(value) {
if (value) {
player.autoSize = false;
cacheStyle = $player.style.cssText;
addClass($player, 'art-min');
const $body = document.body;
setStyle($player, 'top', `${$body.clientHeight - player.height - 50}px`);
setStyle($player, 'left', `${$body.clientWidth - player.width - 50}px`);
player.aspectRatio = false;
player.playbackRate = false;
art.emit('minChange', true);
} else if (player.min) {
$player.style.cssText = cacheStyle;
removeClass($player, 'art-min');
setStyle($player, 'top', null);
setStyle($player, 'left', null);
player.aspectRatio = false;
player.playbackRate = false;
player.autoSize = option.autoSize;
art.emit('minChange', false);
}
},
});
}