11<script setup lang="ts">
2- import { computed , defineProps } from ' vue'
2+ import { computed , defineProps , ref } from ' vue'
33import { isDark , toggleDark } from ' ../logic/dark'
44import { hasNext , hasPrev , prev , next , total , isPresenter , currentPage , downloadPDF } from ' ../logic/nav'
5- import { toggleOverview , showEditor , showInfoDialog , fullscreen , breakpoints } from ' ../state'
5+ import { toggleOverview , showEditor , showInfoDialog , fullscreen , breakpoints , activeElement } from ' ../state'
66import { configs } from ' ../env'
77import RecordingControls from ' ./RecordingControls.vue'
88import Settings from ' ./Settings.vue'
@@ -19,10 +19,16 @@ const { isFullscreen, toggle: toggleFullscreen } = fullscreen
1919
2020const presenterLink = computed (() => ` ${location .origin }/presenter/${currentPage .value } ` )
2121const nonPresenterLink = computed (() => ` ${location .origin }/${currentPage .value } ` )
22+
23+ const root = ref <HTMLDivElement >()
24+ const onMouseLeave = () => {
25+ if (root .value && activeElement .value && root .value .contains (activeElement .value ))
26+ activeElement .value .blur ()
27+ }
2228 </script >
2329
2430<template >
25- <nav class =" flex flex-wrap-reverse text-xl p-2 gap-1" >
31+ <nav ref = " root " class =" flex flex-wrap-reverse text-xl p-2 gap-1" @mouseleave = " onMouseLeave " >
2632 <button class =" icon-btn" @click =" toggleFullscreen" >
2733 <carbon:minimize v-if =" isFullscreen" />
2834 <carbon:maximize v-else />
0 commit comments