mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-16 01:26:16 -08:00
78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
import screenfull from 'screenfull';
|
|
|
|
export default function fullscreenMix(art, player) {
|
|
const {
|
|
i18n,
|
|
notice,
|
|
events: { destroyEvents },
|
|
template: { $player },
|
|
} = art;
|
|
|
|
const screenfullChange = () => {
|
|
art.emit('fullscreen:change', screenfull.isFullscreen);
|
|
};
|
|
|
|
const screenfullError = () => {
|
|
notice.show(i18n.get('This does not seem to support full screen functionality'));
|
|
};
|
|
|
|
try {
|
|
screenfull.on('change', screenfullChange);
|
|
screenfull.on('error', screenfullError);
|
|
destroyEvents.push(() => {
|
|
screenfull.off('change', screenfullChange);
|
|
screenfull.off('error', screenfullError);
|
|
});
|
|
} catch (error) {
|
|
screenfullError();
|
|
}
|
|
|
|
Object.defineProperty(player, 'fullscreenState', {
|
|
get: () => screenfull.isFullscreen,
|
|
});
|
|
|
|
Object.defineProperty(player, 'fullscreenEnabled', {
|
|
value: () => {
|
|
if (screenfull.enabled) {
|
|
if (!player.fullscreenState) {
|
|
player.fullscreenWebExit();
|
|
screenfull.request($player).then(() => {
|
|
$player.classList.add('artplayer-fullscreen');
|
|
player.aspectRatioReset();
|
|
art.emit('fullscreen:enabled');
|
|
});
|
|
}
|
|
} else {
|
|
screenfullError();
|
|
}
|
|
},
|
|
});
|
|
|
|
Object.defineProperty(player, 'fullscreenExit', {
|
|
value: () => {
|
|
if (screenfull.enabled) {
|
|
if (player.fullscreenState) {
|
|
player.fullscreenWebExit();
|
|
screenfull.exit().then(() => {
|
|
$player.classList.remove('artplayer-fullscreen');
|
|
player.aspectRatioReset();
|
|
art.emit('fullscreen:exit');
|
|
});
|
|
}
|
|
} else {
|
|
screenfullError();
|
|
}
|
|
},
|
|
});
|
|
|
|
Object.defineProperty(player, 'fullscreenToggle', {
|
|
value: () => {
|
|
if (player.fullscreenState) {
|
|
player.fullscreenExit();
|
|
} else {
|
|
player.fullscreenEnabled();
|
|
}
|
|
},
|
|
});
|
|
}
|