video controls toggle

This commit is contained in:
Nikita Krupin 2022-05-27 19:03:02 -04:00
parent 2d4b6e4424
commit a71bf8ba31
2 changed files with 113 additions and 77 deletions

View File

@ -8,38 +8,36 @@
? `${$store.state.tweaks.roundTweak / 3}rem` ? `${$store.state.tweaks.roundTweak / 3}rem`
: '0', : '0',
}" }"
@click="controls = !controls"
> >
<video <video
ref="player" ref="player"
v-touch="{
down: () => ($refs.player.innerWidth = '50%'),
up: () => ($refs.player.fillStyle = 'cover'),
}"
autoplay autoplay
width="100%" width="100%"
:src="vidSrc" :src="vidSrc"
style="filter: brightness(50%); max-height: 100vh" style="transition: filter 0.15s ease-in-out; object-fit: cover"
:style="
controls ? 'filter: brightness(50%); max-height: 100vh' : 'filter: none'
"
/> />
<!-- @webkitfullscreenchange="handleFullscreenChange" --> <!-- @webkitfullscreenchange="handleFullscreenChange" -->
<video
ref="playerfake"
muted
autoplay
style="display: none"
:src="vidSrc"
/>
<v-progress-linear
query
active
style="width: 100%"
background-opacity="0.5"
background-color="primary"
:buffer-value="buffered"
:value="percent"
color="primary"
height="2"
/>
<v-btn <v-btn
text text
tile tile
style="position: absolute; top: 0; left: 0; width: 50%; height: 100%" style="
position: absolute;
top: 0;
left: 0;
width: 50%;
height: 100%;
opacity: 0;
"
@doubleclick.stop="$refs.player.currentTime -= $refs.player.duration / 10"
> >
<v-icon>mdi-rewind</v-icon> <v-icon>mdi-rewind</v-icon>
</v-btn> </v-btn>
@ -47,11 +45,23 @@
<v-btn <v-btn
text text
tile tile
style="position: absolute; top: 0; left: 50%; width: 50%; height: 100%" style="
position: absolute;
top: 0;
left: 50%;
width: 50%;
height: 100%;
opacity: 0;
"
@doubleclick.stop="$refs.player.currentTime += $refs.player.duration / 10"
> >
<v-icon>mdi-fast-forward</v-icon> <v-icon>mdi-fast-forward</v-icon>
</v-btn> </v-btn>
<div
style="transition: opacity 0.15s ease-in-out"
:style="controls ? 'opacity: 1;' : 'opacity: 0; pointer-events: none'"
>
<v-btn fab text style="position: absolute; top: 0; left: 0"> <v-btn fab text style="position: absolute; top: 0; left: 0">
<v-icon>mdi-chevron-down</v-icon> <v-icon>mdi-chevron-down</v-icon>
</v-btn> </v-btn>
@ -77,7 +87,11 @@
left: calc(50% - 2.5rem); left: calc(50% - 2.5rem);
" "
color="white" color="white"
@click="$refs.player.paused ? $refs.player.play() : $refs.player.pause()" @click.stop="
$refs.player.paused
? ($refs.player.play(), (controls = false))
: $refs.player.pause()
"
> >
<v-icon <v-icon
ref="pausePlayIndicator" ref="pausePlayIndicator"
@ -96,20 +110,42 @@
<v-btn fab text style="position: absolute; bottom: 0.25rem; right: 7rem"> <v-btn fab text style="position: absolute; bottom: 0.25rem; right: 7rem">
1X 1X
</v-btn> </v-btn>
<v-btn fab text style="position: absolute; bottom: 0.25rem; right: 3.5rem"> <v-btn
fab
text
style="position: absolute; bottom: 0.25rem; right: 3.5rem"
>
HD HD
</v-btn> </v-btn>
<v-btn <v-btn
fab fab
text text
style="position: absolute; bottom: 0.25rem; right: 0" style="position: absolute; bottom: 0.25rem; right: 0"
@click="handleFullscreenChange()" @click.stop="(controls = $refs.player.paused), handleFullscreenChange()"
> >
<v-icon>{{ <v-icon>{{
isFullscreen ? "mdi-fullscreen-exit" : "mdi-fullscreen" isFullscreen ? "mdi-fullscreen-exit" : "mdi-fullscreen"
}}</v-icon> }}</v-icon>
</v-btn> </v-btn>
</div>
<video
ref="playerfake"
muted
autoplay
style="display: none"
:src="vidSrc"
/>
<v-progress-linear
query
active
style="width: 100%"
background-opacity="0.5"
background-color="primary"
:buffer-value="buffered"
:value="percent"
color="primary"
height="2"
/>
<!-- Scrubber --> <!-- Scrubber -->
<v-slider <v-slider
v-if="$refs.player" v-if="$refs.player"
@ -162,6 +198,7 @@ export default {
return { return {
isFullscreen: false, isFullscreen: false,
scrubbing: false, scrubbing: false,
controls: false,
percent: 0, percent: 0,
progress: 0, progress: 0,
buffered: 0, buffered: 0,

View File

@ -12,7 +12,6 @@
v-if="useBetaPlayer !== 'true'" v-if="useBetaPlayer !== 'true'"
id="player" id="player"
ref="player" ref="player"
v-touch="{ down: () => $router.push('/home') }"
:vid-src="vidSrc" :vid-src="vidSrc"
/> />
</div> </div>