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 @@
+
+
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();
+ }
+ });
}
});