mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-21 21:01:20 -08:00
75 lines
2.4 KiB
JavaScript
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);
|
|
}
|
|
},
|
|
});
|
|
}
|