feat: fullscreen composable, roadmap update, and future plans doc
This commit is contained in:
28
src/composables/useFullscreen.ts
Normal file
28
src/composables/useFullscreen.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { ref, onMounted, onUnmounted } from 'vue'
|
||||
|
||||
export function useFullscreen() {
|
||||
const isFullscreen = ref(false)
|
||||
|
||||
function sync() {
|
||||
isFullscreen.value = !!document.fullscreenElement
|
||||
}
|
||||
|
||||
async function toggle() {
|
||||
if (!document.fullscreenElement) {
|
||||
await document.documentElement.requestFullscreen().catch(() => {})
|
||||
} else {
|
||||
await document.exitFullscreen()
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
document.addEventListener('fullscreenchange', sync)
|
||||
sync()
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
document.removeEventListener('fullscreenchange', sync)
|
||||
})
|
||||
|
||||
return { isFullscreen, toggle }
|
||||
}
|
||||
Reference in New Issue
Block a user