Skip to content
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { computed, defineComponent, onBeforeUnmount, onMounted, reactive, ref, shallowRef, watch } from 'vue'
import { computed, defineComponent, nextTick, onBeforeUnmount, onMounted, reactive, ref, shallowRef, watch } from 'vue'
import shaka from 'shaka-player'
import { useI18n } from '../../composables/use-i18n-polyfill'

Expand Down Expand Up @@ -1977,6 +1977,8 @@ export default defineComponent({
const formattedSeconds = Math.abs(seconds)
showValueChange(`${formattedSeconds}s`, popUpLayout.icon, popUpLayout.invertContentOrder)
}

showOverlayControls()
}

// #endregion mouse and keyboard helpers
Expand Down Expand Up @@ -2224,6 +2226,7 @@ export default defineComponent({

const currentlyVisible = player.isTextTrackVisible()
player.setTextTrackVisibility(!currentlyVisible)
showOverlayControls()
}
break
case KeyboardShortcuts.VIDEO_PLAYER.GENERAL.VOLUME_UP:
Expand All @@ -2241,6 +2244,7 @@ export default defineComponent({
if (canChapterJump(event, 'previous')) {
// Jump to the previous chapter
video_.currentTime = props.chapters[props.currentChapterIndex - 1].startSeconds
showOverlayControls()
} else {
// Rewind by the time-skip interval (in seconds)
seekBySeconds(-defaultSkipInterval.value * player.getPlaybackRate(), false, true)
Expand All @@ -2251,6 +2255,7 @@ export default defineComponent({
if (canChapterJump(event, 'next')) {
// Jump to the next chapter
video_.currentTime = (props.chapters[props.currentChapterIndex + 1].startSeconds)
showOverlayControls()
} else {
// Fast-Forward by the time-skip interval (in seconds)
seekBySeconds(defaultSkipInterval.value * player.getPlaybackRate(), false, true)
Expand Down Expand Up @@ -2286,6 +2291,7 @@ export default defineComponent({
const percentage = parseInt(event.key) / 10

video_.currentTime = seekRange.start + (length * percentage)
showOverlayControls()
}
break
}
Expand Down Expand Up @@ -2317,6 +2323,7 @@ export default defineComponent({
// use seek range instead of duration so that it works for live streams too
const seekRange = player.seekRange()
video_.currentTime = seekRange.start
showOverlayControls()
}
break
case KeyboardShortcuts.VIDEO_PLAYER.PLAYBACK.END:
Expand All @@ -2326,6 +2333,7 @@ export default defineComponent({
// use seek range instead of duration so that it works for live streams too
const seekRange = player.seekRange()
video_.currentTime = seekRange.end
showOverlayControls()
}
break
case 'escape':
Expand Down Expand Up @@ -2585,6 +2593,9 @@ export default defineComponent({

document.removeEventListener('keydown', keyboardShortcutHandler)
document.addEventListener('keydown', keyboardShortcutHandler)
document.addEventListener('fullscreenchange', () => {
nextTick(showOverlayControls)
})

player.addEventListener('loading', () => {
hasLoaded.value = false
Expand Down Expand Up @@ -2925,6 +2936,9 @@ export default defineComponent({
document.body.classList.remove('playerFullWindow')

document.removeEventListener('keydown', keyboardShortcutHandler)
document.removeEventListener('fullscreenchange', () => {
nextTick(showOverlayControls)
})

if (resizeObserver) {
resizeObserver.disconnect()
Expand Down Expand Up @@ -3032,6 +3046,10 @@ export default defineComponent({
const invertValueChangeContentOrder = ref(false)
let valueChangeTimeout = null

function showOverlayControls() {
ui.getControls().showUI()
}

/**
* Shows a popup with a message and an icon on top of the video player.
* @param {string} message - The message to display.
Expand All @@ -3051,6 +3069,8 @@ export default defineComponent({
valueChangeTimeout = setTimeout(() => {
showValueChangePopup.value = false
}, 2000)

showOverlayControls()
}

return {
Expand Down