Files
ArtPlayer/packages/artplayer/src/player/fullscreenMix.js
T
2020-12-01 10:27:33 +08:00

80 lines
2.2 KiB
JavaScript

import screenfull from 'screenfull';
import { addClass, removeClass, def } from '../utils';
const nativeScreenfull = (art, player) => {
const { $player } = art.template;
def(player, 'fullscreen', {
get() {
return screenfull.isFullscreen;
},
set(value) {
if (value) {
screenfull.request($player).then(() => {
addClass($player, 'art-fullscreen');
player.aspectRatioReset = true;
art.emit('resize');
art.emit('fullscreen', true);
});
} else {
screenfull.exit().then(() => {
removeClass($player, 'art-fullscreen');
player.aspectRatioReset = true;
player.autoSize = art.option.autoSize;
art.emit('resize');
art.emit('fullscreen');
});
}
},
});
};
const webkitScreenfull = (art, player) => {
const { $video } = art.template;
def(player, 'fullscreen', {
get() {
console.log($video.webkitDisplayingFullscreen);
return $video.webkitDisplayingFullscreen;
},
set(value) {
console.log(value);
if (value) {
console.log($video.webkitEnterFullscreen);
$video.webkitEnterFullscreen();
} else {
console.log($video.webkitExitFullscreen);
$video.webkitExitFullscreen();
}
},
});
};
export default function fullscreenMix(art, player) {
const { $video } = art.template;
if (screenfull.isEnabled) {
nativeScreenfull(art, player);
} else if ($video.webkitSupportsFullscreen) {
webkitScreenfull(art, player);
} else {
def(player, 'fullscreen', {
get() {
return false;
},
set() {
return false;
},
});
}
def(player, 'fullscreenToggle', {
set(value) {
if (value) {
console.log($video.webkitEnterFullscreen);
player.fullscreen = !player.fullscreen;
}
},
});
}