mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 19:06:15 -08:00
81 lines
2.5 KiB
JavaScript
81 lines
2.5 KiB
JavaScript
import screenfull from '../libs/screenfull';
|
|
import { addClass, removeClass, def, get } from '../utils';
|
|
|
|
export default function fullscreenMix(art) {
|
|
const {
|
|
i18n,
|
|
notice,
|
|
template: { $video, $player },
|
|
} = art;
|
|
|
|
const nativeScreenfull = (art) => {
|
|
screenfull.on('change', () => {
|
|
art.emit('fullscreen', screenfull.isFullscreen);
|
|
});
|
|
|
|
screenfull.on('error', (event) => {
|
|
art.emit('fullscreenError', event);
|
|
});
|
|
|
|
def(art, 'fullscreen', {
|
|
get() {
|
|
return screenfull.isFullscreen;
|
|
},
|
|
async set(value) {
|
|
if (value) {
|
|
art.state = 'fullscreen';
|
|
await screenfull.request($player);
|
|
addClass($player, 'art-fullscreen');
|
|
} else {
|
|
await screenfull.exit();
|
|
removeClass($player, 'art-fullscreen');
|
|
}
|
|
art.emit('resize');
|
|
},
|
|
});
|
|
};
|
|
|
|
const webkitScreenfull = (art) => {
|
|
def(art, 'fullscreen', {
|
|
get() {
|
|
console.log('webkitDisplayingFullscreen', $video.webkitDisplayingFullscreen);
|
|
return $video.webkitDisplayingFullscreen;
|
|
},
|
|
set(value) {
|
|
if (value) {
|
|
art.state = 'fullscreen';
|
|
$video.webkitEnterFullscreen();
|
|
art.emit('fullscreen', true);
|
|
} else {
|
|
$video.webkitExitFullscreen();
|
|
art.emit('fullscreen', false);
|
|
}
|
|
art.emit('resize');
|
|
},
|
|
});
|
|
};
|
|
|
|
art.once('video:loadedmetadata', () => {
|
|
console.log('screenfull.isEnabled', screenfull.isEnabled);
|
|
console.log('document.fullscreenEnabled', document.fullscreenEnabled);
|
|
console.log('$video.webkitSupportsFullscreen', $video.webkitSupportsFullscreen);
|
|
if (screenfull.isEnabled) {
|
|
nativeScreenfull(art);
|
|
} else if (document.fullscreenEnabled || $video.webkitSupportsFullscreen) {
|
|
webkitScreenfull(art);
|
|
} else {
|
|
def(art, 'fullscreen', {
|
|
get() {
|
|
return false;
|
|
},
|
|
set() {
|
|
notice.show = i18n.get('Fullscreen Not Supported');
|
|
},
|
|
});
|
|
}
|
|
|
|
// Asynchronous setting
|
|
def(art, 'fullscreen', get(art, 'fullscreen'));
|
|
});
|
|
}
|