mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-21 12:41:20 -08:00
- Introduced a new globalInit function to manage document and window events. - Replaced direct event proxies with a unified bindGlobalEvents method. - Updated event handling in various modules to utilize the new global event system. - Removed the deprecated documentInit module. - Bumped version to 5.2.6 in package.json.
89 lines
1.9 KiB
JavaScript
89 lines
1.9 KiB
JavaScript
import screenfull from '../libs/screenfull'
|
|
import { addClass, def, get, removeClass } 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)
|
|
|
|
if (screenfull.isFullscreen) {
|
|
art.state = 'fullscreen'
|
|
addClass($player, 'art-fullscreen')
|
|
}
|
|
else {
|
|
removeClass($player, 'art-fullscreen')
|
|
}
|
|
|
|
art.emit('resize')
|
|
})
|
|
|
|
screenfull.on('error', (event) => {
|
|
art.emit('fullscreenError', event)
|
|
})
|
|
|
|
def(art, 'fullscreen', {
|
|
get() {
|
|
return screenfull.isFullscreen
|
|
},
|
|
async set(value) {
|
|
if (value) {
|
|
await screenfull.request($player)
|
|
}
|
|
else {
|
|
await screenfull.exit()
|
|
}
|
|
},
|
|
})
|
|
}
|
|
|
|
const webkitScreenfull = (art) => {
|
|
art.on('document:webkitfullscreenchange', () => {
|
|
art.emit('fullscreen', art.fullscreen)
|
|
art.emit('resize')
|
|
})
|
|
|
|
def(art, 'fullscreen', {
|
|
get() {
|
|
return document.fullscreenElement === $video
|
|
},
|
|
set(value) {
|
|
if (value) {
|
|
art.state = 'fullscreen'
|
|
$video.webkitEnterFullscreen()
|
|
}
|
|
else {
|
|
$video.webkitExitFullscreen()
|
|
}
|
|
},
|
|
})
|
|
}
|
|
|
|
art.once('video:loadedmetadata', () => {
|
|
if (screenfull.isEnabled) {
|
|
nativeScreenfull(art)
|
|
}
|
|
else if ($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'))
|
|
})
|
|
}
|