From dd2708f9052579ee7f0e91b7b0a73c695946b909 Mon Sep 17 00:00:00 2001 From: polv Date: Tue, 7 Jul 2026 17:34:54 +0700 Subject: [PATCH] vocab quiz convert ** to em --- .../theme/components/AudioButton.vue | 8 ++- .../theme/components/SentenceAudio.vue | 54 +++++++++++++++++++ .../.vitepress/theme/components/VocabQuiz.vue | 49 ++++++----------- 3 files changed, 76 insertions(+), 35 deletions(-) create mode 100644 docs/.vitepress/theme/components/SentenceAudio.vue diff --git a/docs/.vitepress/theme/components/AudioButton.vue b/docs/.vitepress/theme/components/AudioButton.vue index d2bf37a..04a679b 100644 --- a/docs/.vitepress/theme/components/AudioButton.vue +++ b/docs/.vitepress/theme/components/AudioButton.vue @@ -13,9 +13,13 @@ const props = defineProps<{ src: string; }>(); +defineExpose({ + playAudio, +}); + const audioEl = useTemplateRef("audio"); -function playAudio() { +async function playAudio() { if (!audioEl.value) return; document.querySelectorAll("audio").forEach((el) => { @@ -25,7 +29,7 @@ function playAudio() { audioEl.value.src = props.src; audioEl.value.currentTime = 0; - audioEl.value.play(); + await audioEl.value.play(); } diff --git a/docs/.vitepress/theme/components/SentenceAudio.vue b/docs/.vitepress/theme/components/SentenceAudio.vue new file mode 100644 index 0000000..6cc2588 --- /dev/null +++ b/docs/.vitepress/theme/components/SentenceAudio.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/docs/.vitepress/theme/components/VocabQuiz.vue b/docs/.vitepress/theme/components/VocabQuiz.vue index ab75cfe..d41e7c5 100644 --- a/docs/.vitepress/theme/components/VocabQuiz.vue +++ b/docs/.vitepress/theme/components/VocabQuiz.vue @@ -15,30 +15,22 @@
- - {{ v.ko }} - - - - {{ v.ko }} - + {{ " = " }} {{ v.en }}
- - - {{ example.ko }} - - - - {{ example.ko }} - + + - {{ example.en }} - +
import { useData } from "vitepress"; import { computed, nextTick, ref, useTemplateRef, watch } from "vue"; -import TTS from "./TTS.vue"; +import SentenceAudio, { IVoc } from "./SentenceAudio.vue"; const vCats = ref([]); const vChosenCats = ref([]); @@ -96,7 +88,7 @@ const isSentAutoplayAudio = ref(true); const isKoFirst = ref(true); const sentenceDetails = useTemplateRef("sdetails"); -const stts = useTemplateRef>("stts"); +const saud = useTemplateRef>("saud"); const v = computed(() => vList.value[vIndex.value]); const example = computed(() => { @@ -107,15 +99,6 @@ const example = computed(() => { const MAX_VOC = 5; -interface IVoc { - ko: string; - audio?: string; - en: string; - usages?: IVoc[]; - notes?: string; - examples?: IVoc[]; -} - const { frontmatter } = useData(); const { vocabulary } = frontmatter.value as { vocabulary: Record; @@ -156,11 +139,11 @@ function mark(isRight: boolean) { } if (isSentAutoplayAudio.value) { - if (stts.value) { - stts.value.playAudio(); - } else if (example.value?.audio) { - new Audio(example.value.audio).play(); - } + nextTick(() => { + if (saud.value) { + saud.value.playAudio(); + } + }); } });