Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91b66ee453 | ||
|
|
1f3952a34c |
38
components.d.ts
vendored
38
components.d.ts
vendored
@@ -9,7 +9,7 @@ export {}
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
About: typeof import('./src/components/About.vue')['default']
|
||||
ArticleAudio: typeof import('./src/components/article/components/ArticleAudio.vue')['default']
|
||||
ArticleAudio: typeof import('./src/components/article/ArticleAudio.vue')['default']
|
||||
ArticleList: typeof import('./src/components/list/ArticleList.vue')['default']
|
||||
ArticleSetting: typeof import('./src/components/setting/ArticleSetting.vue')['default']
|
||||
Audio: typeof import('./src/components/base/Audio.vue')['default']
|
||||
@@ -21,7 +21,7 @@ declare module 'vue' {
|
||||
BasePage: typeof import('./src/components/BasePage.vue')['default']
|
||||
BaseTable: typeof import('./src/components/BaseTable.vue')['default']
|
||||
Book: typeof import('./src/components/Book.vue')['default']
|
||||
ChangeLastPracticeIndexDialog: typeof import('./src/components/word/components/ChangeLastPracticeIndexDialog.vue')['default']
|
||||
ChangeLastPracticeIndexDialog: typeof import('./src/components/word/ChangeLastPracticeIndexDialog.vue')['default']
|
||||
ChannelIcons: typeof import('./src/components/ChannelIcons/ChannelIcons.vue')['default']
|
||||
Checkbox: typeof import('./src/components/base/checkbox/Checkbox.vue')['default']
|
||||
Close: typeof import('./src/components/icon/Close.vue')['default']
|
||||
@@ -35,15 +35,15 @@ declare module 'vue' {
|
||||
DictGroup: typeof import('./src/components/list/DictGroup.vue')['default']
|
||||
DictList: typeof import('./src/components/list/DictList.vue')['default']
|
||||
EditAbleText: typeof import('./src/components/EditAbleText.vue')['default']
|
||||
EditArticle: typeof import('./src/components/article/components/EditArticle.vue')['default']
|
||||
EditBook: typeof import('./src/components/article/components/EditBook.vue')['default']
|
||||
EditSingleArticleModal: typeof import('./src/components/article/components/EditSingleArticleModal.vue')['default']
|
||||
EditArticle: typeof import('./src/components/article/EditArticle.vue')['default']
|
||||
EditBook: typeof import('./src/components/article/EditBook.vue')['default']
|
||||
EditSingleArticleModal: typeof import('./src/components/article/EditSingleArticleModal.vue')['default']
|
||||
Empty: typeof import('./src/components/Empty.vue')['default']
|
||||
Footer: typeof import('./src/components/word/components/Footer.vue')['default']
|
||||
Footer: typeof import('./src/components/word/Footer.vue')['default']
|
||||
Form: typeof import('./src/components/base/form/Form.vue')['default']
|
||||
FormItem: typeof import('./src/components/base/form/FormItem.vue')['default']
|
||||
Github: typeof import('./src/components/ChannelIcons/Github.vue')['default']
|
||||
GroupList: typeof import('./src/components/word/components/GroupList.vue')['default']
|
||||
GroupList: typeof import('./src/components/word/GroupList.vue')['default']
|
||||
Header: typeof import('./src/components/Header.vue')['default']
|
||||
IconBxVolume: typeof import('~icons/bx/volume')['default']
|
||||
IconBxVolumeFull: typeof import('~icons/bx/volume-full')['default']
|
||||
@@ -156,39 +156,39 @@ declare module 'vue' {
|
||||
Panel: typeof import('./src/components/Panel.vue')['default']
|
||||
PopConfirm: typeof import('./src/components/PopConfirm.vue')['default']
|
||||
PracticeLayout: typeof import('./src/components/PracticeLayout.vue')['default']
|
||||
PracticeSettingDialog: typeof import('./src/components/word/components/PracticeSettingDialog.vue')['default']
|
||||
PracticeWordListDialog: typeof import('./src/components/word/components/PracticeWordListDialog.vue')['default']
|
||||
PracticeSettingDialog: typeof import('./src/components/word/PracticeSettingDialog.vue')['default']
|
||||
PracticeWordListDialog: typeof import('./src/components/word/PracticeWordListDialog.vue')['default']
|
||||
Progress: typeof import('./src/components/base/Progress.vue')['default']
|
||||
QuestionForm: typeof import('./src/components/article/components/QuestionForm.vue')['default']
|
||||
QuestionItem: typeof import('./src/components/article/components/QuestionItem.vue')['default']
|
||||
QuestionForm: typeof import('./src/components/article/QuestionForm.vue')['default']
|
||||
QuestionItem: typeof import('./src/components/article/QuestionItem.vue')['default']
|
||||
Radio: typeof import('./src/components/base/radio/Radio.vue')['default']
|
||||
RadioGroup: typeof import('./src/components/base/radio/RadioGroup.vue')['default']
|
||||
ResourceCard: typeof import('./src/components/ResourceCard.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
Select: typeof import('./src/components/base/select/Select.vue')['default']
|
||||
SentenceHightLightWord: typeof import('./src/components/word/components/SentenceHightLightWord.vue')['default']
|
||||
SentenceHightLightWord: typeof import('./src/components/word/SentenceHightLightWord.vue')['default']
|
||||
SettingDialog: typeof import('./src/components/setting/SettingDialog.vue')['default']
|
||||
SettingItem: typeof import('./src/components/setting/SettingItem.vue')['default']
|
||||
ShareIcon: typeof import('./src/components/ChannelIcons/ShareIcon.vue')['default']
|
||||
ShufflePracticeSettingDialog: typeof import('./src/components/word/components/ShufflePracticeSettingDialog.vue')['default']
|
||||
ShufflePracticeSettingDialog: typeof import('./src/components/word/ShufflePracticeSettingDialog.vue')['default']
|
||||
Slide: typeof import('./src/components/Slide.vue')['default']
|
||||
SlideHorizontal: typeof import('./src/components/slide/SlideHorizontal.vue')['default']
|
||||
SlideItem: typeof import('./src/components/slide/SlideItem.vue')['default']
|
||||
Slider: typeof import('./src/components/base/Slider.vue')['default']
|
||||
Space: typeof import('./src/components/article/components/Space.vue')['default']
|
||||
Space: typeof import('./src/components/article/Space.vue')['default']
|
||||
StageProgress: typeof import('./src/components/StageProgress.vue')['default']
|
||||
Statistics: typeof import('./src/components/word/components/Statistics.vue')['default']
|
||||
Statistics: typeof import('./src/components/word/Statistics.vue')['default']
|
||||
Switch: typeof import('./src/components/base/Switch.vue')['default']
|
||||
Textarea: typeof import('./src/components/base/Textarea.vue')['default']
|
||||
Toast: typeof import('./src/components/base/toast/Toast.vue')['default']
|
||||
ToastComponent: typeof import('./src/components/base/toast/ToastComponent.vue')['default']
|
||||
Tooltip: typeof import('./src/components/base/Tooltip.vue')['default']
|
||||
TypeWord: typeof import('./src/components/word/components/TypeWord.vue')['default']
|
||||
TypingArticle: typeof import('./src/components/article/components/TypingArticle.vue')['default']
|
||||
TypingWord: typeof import('./src/components/article/components/TypingWord.vue')['default']
|
||||
TypeWord: typeof import('./src/components/word/TypeWord.vue')['default']
|
||||
TypingArticle: typeof import('./src/components/article/TypingArticle.vue')['default']
|
||||
TypingWord: typeof import('./src/components/article/TypingWord.vue')['default']
|
||||
VolumeIcon: typeof import('./src/components/icon/VolumeIcon.vue')['default']
|
||||
VolumeSettingMiniDialog: typeof import('./src/components/word/components/VolumeSettingMiniDialog.vue')['default']
|
||||
VolumeSettingMiniDialog: typeof import('./src/components/word/VolumeSettingMiniDialog.vue')['default']
|
||||
WeChat: typeof import('./src/components/ChannelIcons/WeChat.vue')['default']
|
||||
WordItem: typeof import('./src/components/WordItem.vue')['default']
|
||||
WordList: typeof import('./src/components/list/WordList.vue')['default']
|
||||
|
||||
@@ -17,7 +17,7 @@ import Tooltip from '@/components/base/Tooltip.vue'
|
||||
import InputNumber from '@/components/base/InputNumber.vue'
|
||||
import { nanoid } from 'nanoid'
|
||||
import { update } from 'idb-keyval'
|
||||
import ArticleAudio from '@/components/article/components/ArticleAudio.vue'
|
||||
import ArticleAudio from '@/components/article/ArticleAudio.vue'
|
||||
import BaseInput from '@/components/base/BaseInput.vue'
|
||||
import Textarea from '@/components/base/Textarea.vue'
|
||||
import { LOCAL_FILE_KEY } from '@/config/env.ts'
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import type {Article} from "@/types/types.ts";
|
||||
import {useDisableEventListener} from "@/hooks/event.ts";
|
||||
import EditArticle from "@/components/article/components/EditArticle.vue";
|
||||
import EditArticle from "@/components/article/EditArticle.vue";
|
||||
import {getDefaultArticle} from "@/types/func.ts";
|
||||
import {defineAsyncComponent} from "vue";
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<script setup lang="ts">
|
||||
import Toast from '@/components/base/toast/Toast'
|
||||
import Toast from '@/components/base/toast/Toast.ts'
|
||||
import BaseButton from '@/components/BaseButton.vue'
|
||||
import { useWordOptions } from '@/hooks/dict'
|
||||
import { usePlayBeep, usePlayKeyboardAudio, usePlayWordAudio } from '@/hooks/sound'
|
||||
import QuestionForm from '@/components/article/components/QuestionForm.vue'
|
||||
import Space from '@/components/article/components/Space.vue'
|
||||
import TypingWord from '@/components/article/components/TypingWord.vue'
|
||||
import { useBaseStore } from '@/stores/base'
|
||||
import { usePracticeStore } from '@/stores/practice'
|
||||
import { useSettingStore } from '@/stores/setting'
|
||||
import { getDefaultArticle, getDefaultWord } from '@/types/func'
|
||||
import type { Article, ArticleWord, Sentence, Word } from '@/types/types'
|
||||
import { useWordOptions } from '@/hooks/dict.ts'
|
||||
import { usePlayBeep, usePlayKeyboardAudio, usePlayWordAudio } from '@/hooks/sound.ts'
|
||||
import QuestionForm from '@/components/article/QuestionForm.vue'
|
||||
import Space from '@/components/article/Space.vue'
|
||||
import TypingWord from '@/components/article/TypingWord.vue'
|
||||
import { useBaseStore } from '@/stores/base.ts'
|
||||
import { usePracticeStore } from '@/stores/practice.ts'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import { getDefaultArticle, getDefaultWord } from '@/types/func.ts'
|
||||
import type { Article, ArticleWord, Sentence, Word } from '@/types/types.ts'
|
||||
import { _dateFormat, _nextTick, isMobile, msToHourMinute, total } from '@/utils'
|
||||
import { emitter, EventKey, useEvents } from '@/utils/eventBus'
|
||||
import { emitter, EventKey, useEvents } from '@/utils/eventBus.ts'
|
||||
import ContextMenu from '@imengyu/vue3-context-menu'
|
||||
import '@imengyu/vue3-context-menu/lib/vue3-context-menu.css'
|
||||
import nlp from 'compromise/three'
|
||||
import { nanoid } from 'nanoid'
|
||||
import { inject, onMounted, onUnmounted, watch } from 'vue'
|
||||
|
||||
import { getPracticeArticleCache, setPracticeArticleCache } from '@/utils/cache'
|
||||
import { PracticeArticleWordType, ShortcutKey } from '@/types/enum'
|
||||
import { getPracticeArticleCache, setPracticeArticleCache } from '@/utils/cache.ts'
|
||||
import { PracticeArticleWordType, ShortcutKey } from '@/types/enum.ts'
|
||||
|
||||
interface IProps {
|
||||
article: Article
|
||||
@@ -1,6 +1,6 @@
|
||||
<script setup lang="tsx">
|
||||
import {useSettingStore} from "@/stores/setting.ts";
|
||||
import Space from "@/components/article/components/Space.vue";
|
||||
import Space from "@/components/article/Space.vue";
|
||||
|
||||
import {PracticeArticleWordType} from "@/types/enum.ts";
|
||||
import type {ArticleWord} from "@/types/types.ts";
|
||||
@@ -1,17 +1,17 @@
|
||||
<script setup lang="ts">
|
||||
import { inject, Ref } from 'vue'
|
||||
import { usePracticeStore } from '@/stores/practice'
|
||||
import { useSettingStore } from '@/stores/setting'
|
||||
import type { PracticeData, TaskWords } from '@/types/types'
|
||||
import { usePracticeStore } from '@/stores/practice.ts'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import type { PracticeData, TaskWords } from '@/types/types.ts'
|
||||
import BaseIcon from '@/components/BaseIcon.vue'
|
||||
import Tooltip from '@/components/base/Tooltip.vue'
|
||||
import SettingDialog from '@/components/setting/SettingDialog.vue'
|
||||
import BaseButton from '@/components/BaseButton.vue'
|
||||
import { useBaseStore } from '@/stores/base'
|
||||
import VolumeSettingMiniDialog from '@/components/word/components/VolumeSettingMiniDialog.vue'
|
||||
import { useBaseStore } from '@/stores/base.ts'
|
||||
import VolumeSettingMiniDialog from '@/components/word/VolumeSettingMiniDialog.vue'
|
||||
import StageProgress from '@/components/StageProgress.vue'
|
||||
import { ShortcutKey, WordPracticeMode, WordPracticeStage } from '@/types/enum'
|
||||
import { WordPracticeModeNameMap, WordPracticeModeStageMap, WordPracticeStageNameMap } from '@/config/env'
|
||||
import { ShortcutKey, WordPracticeMode, WordPracticeStage } from '@/types/enum.ts'
|
||||
import { WordPracticeModeNameMap, WordPracticeModeStageMap, WordPracticeStageNameMap } from '@/config/env.ts'
|
||||
|
||||
const statStore = usePracticeStore()
|
||||
const store = useBaseStore()
|
||||
@@ -4,11 +4,11 @@ import BaseButton from '@/components/BaseButton.vue'
|
||||
import Checkbox from '@/components/base/checkbox/Checkbox.vue'
|
||||
import Slider from '@/components/base/Slider.vue'
|
||||
import { defineAsyncComponent, watch } from 'vue'
|
||||
import { useSettingStore } from '@/stores/setting'
|
||||
import Toast from '@/components/base/toast/Toast'
|
||||
import ChangeLastPracticeIndexDialog from '@/components/word/components/ChangeLastPracticeIndexDialog.vue'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import Toast from '@/components/base/toast/Toast.ts'
|
||||
import ChangeLastPracticeIndexDialog from '@/components/word/ChangeLastPracticeIndexDialog.vue'
|
||||
import Tooltip from '@/components/base/Tooltip.vue'
|
||||
import { useRuntimeStore } from '@/stores/runtime'
|
||||
import { useRuntimeStore } from '@/stores/runtime.ts'
|
||||
import BaseInput from '@/components/base/BaseInput.vue'
|
||||
import InputNumber from '@/components/base/InputNumber.vue'
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<script setup lang="ts">
|
||||
import type { Word } from '@/types/types'
|
||||
import type { Word } from '@/types/types.ts'
|
||||
import VolumeIcon from '@/components/icon/VolumeIcon.vue'
|
||||
import { useSettingStore } from '@/stores/setting'
|
||||
import { usePlayBeep, usePlayCorrect, usePlayKeyboardAudio, usePlayWordAudio } from '@/hooks/sound'
|
||||
import { emitter, EventKey, useEvents } from '@/utils/eventBus'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import { usePlayBeep, usePlayCorrect, usePlayKeyboardAudio, usePlayWordAudio } from '@/hooks/sound.ts'
|
||||
import { emitter, EventKey, useEvents } from '@/utils/eventBus.ts'
|
||||
import { onMounted, onUnmounted, watch } from 'vue'
|
||||
import SentenceHightLightWord from '@/components/word/components/SentenceHightLightWord.vue'
|
||||
import { usePracticeStore } from '@/stores/practice'
|
||||
import { getDefaultWord } from '@/types/func'
|
||||
import SentenceHightLightWord from '@/components/word/SentenceHightLightWord.vue'
|
||||
import { usePracticeStore } from '@/stores/practice.ts'
|
||||
import { getDefaultWord } from '@/types/func.ts'
|
||||
import { _nextTick, last } from '@/utils'
|
||||
import BaseButton from '@/components/BaseButton.vue'
|
||||
import Space from '@/components/article/components/Space.vue'
|
||||
import Toast from '@/components/base/toast/Toast'
|
||||
import Space from '@/components/article/Space.vue'
|
||||
import Toast from '@/components/base/toast/Toast.ts'
|
||||
import Tooltip from '@/components/base/Tooltip.vue'
|
||||
import { ShortcutKey, WordPracticeStage, WordPracticeType } from '@/types/enum'
|
||||
import { ShortcutKey, WordPracticeStage, WordPracticeType } from '@/types/enum.ts'
|
||||
|
||||
interface IProps {
|
||||
word: Word
|
||||
@@ -9,7 +9,7 @@ import { useWindowClick } from '@/hooks/event.ts'
|
||||
import { MessageBox } from '@/utils/MessageBox.tsx'
|
||||
import { useRuntimeStore } from '@/stores/runtime.ts'
|
||||
import { nanoid } from 'nanoid'
|
||||
import EditArticle from '@/components/article/components/EditArticle.vue'
|
||||
import EditArticle from '@/components/article/EditArticle.vue'
|
||||
import Toast from '@/components/base/toast/Toast.ts'
|
||||
import { getDefaultArticle } from '@/types/func.ts'
|
||||
import BackIcon from '@/components/BackIcon.vue'
|
||||
|
||||
@@ -7,12 +7,12 @@ import type { Article, Dict } from '@/types/types'
|
||||
import { useRuntimeStore } from '@/stores/runtime.ts'
|
||||
import BaseButton from '@/components/BaseButton.vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import EditBook from '@/components/article/components/EditBook.vue'
|
||||
import EditBook from '@/components/article/EditBook.vue'
|
||||
import { computed, onMounted, onUnmounted, watch } from 'vue'
|
||||
import { _dateFormat, _getDictDataByUrl, _nextTick, msToHourMinute, resourceWrap, total, useNav } from '@/utils'
|
||||
import { getDefaultArticle, getDefaultDict } from '@/types/func.ts'
|
||||
import Toast from '@/components/base/toast/Toast.ts'
|
||||
import ArticleAudio from '@/components/article/components/ArticleAudio.vue'
|
||||
import ArticleAudio from '@/components/article/ArticleAudio.vue'
|
||||
import { MessageBox } from '@/utils/MessageBox.tsx'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import { useFetch } from '@vueuse/core'
|
||||
|
||||
@@ -13,9 +13,9 @@ import { genArticleSectionData, usePlaySentenceAudio } from '@/hooks/article.ts'
|
||||
import { useArticleOptions } from '@/hooks/dict.ts'
|
||||
import { useDisableEventListener, useOnKeyboardEventListener, useStartKeyboardEventListener } from '@/hooks/event.ts'
|
||||
import useTheme from '@/hooks/theme.ts'
|
||||
import ArticleAudio from '@/components/article/components/ArticleAudio.vue'
|
||||
import EditSingleArticleModal from '@/components/article/components/EditSingleArticleModal.vue'
|
||||
import TypingArticle from '@/components/article/components/TypingArticle.vue'
|
||||
import ArticleAudio from '@/components/article/ArticleAudio.vue'
|
||||
import EditSingleArticleModal from '@/components/article/EditSingleArticleModal.vue'
|
||||
import TypingArticle from '@/components/article/TypingArticle.vue'
|
||||
import { useBaseStore } from '@/stores/base.ts'
|
||||
import { usePracticeStore } from '@/stores/practice.ts'
|
||||
import { useRuntimeStore } from '@/stores/runtime.ts'
|
||||
|
||||
@@ -15,8 +15,8 @@ import Toast from '@/components/base/toast/Toast.ts'
|
||||
import DeleteIcon from '@/components/icon/DeleteIcon.vue'
|
||||
import { AppEnv, DictId, LIB_JS_URL, TourConfig } from '@/config/env.ts'
|
||||
import { getCurrentStudyWord } from '@/hooks/dict.ts'
|
||||
import EditBook from '@/components/article/components/EditBook.vue'
|
||||
import PracticeSettingDialog from '@/components/word/components/PracticeSettingDialog.vue'
|
||||
import EditBook from '@/components/article/EditBook.vue'
|
||||
import PracticeSettingDialog from '@/components/word/PracticeSettingDialog.vue'
|
||||
import { useBaseStore } from '@/stores/base.ts'
|
||||
import { useRuntimeStore } from '@/stores/runtime.ts'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { onMounted, onUnmounted, provide, ref, watch } from 'vue'
|
||||
|
||||
import Statistics from '@/components/word/components/Statistics.vue'
|
||||
import Statistics from '@/components/word/Statistics.vue'
|
||||
import { emitter, EventKey, useEvents } from '@/utils/eventBus.ts'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import { useRuntimeStore } from '@/stores/runtime.ts'
|
||||
@@ -11,12 +11,12 @@ import useTheme from '@/hooks/theme.ts'
|
||||
import { getCurrentStudyWord, useWordOptions } from '@/hooks/dict.ts'
|
||||
import { _getDictDataByUrl, _nextTick, cloneDeep, isMobile, loadJsLib, resourceWrap, shuffle } from '@/utils'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import Footer from '@/components/word/components/Footer.vue'
|
||||
import Footer from '@/components/word/Footer.vue'
|
||||
import Panel from '@/components/Panel.vue'
|
||||
import BaseIcon from '@/components/BaseIcon.vue'
|
||||
import Tooltip from '@/components/base/Tooltip.vue'
|
||||
import WordList from '@/components/list/WordList.vue'
|
||||
import TypeWord from '@/components/word/components/TypeWord.vue'
|
||||
import TypeWord from '@/components/word/TypeWord.vue'
|
||||
import Empty from '@/components/Empty.vue'
|
||||
import { useBaseStore } from '@/stores/base.ts'
|
||||
import { usePracticeStore } from '@/stores/practice.ts'
|
||||
@@ -29,7 +29,7 @@ import { AppEnv, DICT_LIST, LIB_JS_URL, TourConfig, WordPracticeModeStageMap } f
|
||||
import { ToastInstance } from '@/components/base/toast/type.ts'
|
||||
import { watchOnce } from '@vueuse/core'
|
||||
import { setUserDictProp } from '@/apis'
|
||||
import GroupList from '@/components/word/components/GroupList.vue'
|
||||
import GroupList from '@/components/word/GroupList.vue'
|
||||
import { getPracticeWordCache, setPracticeWordCache } from '@/utils/cache.ts'
|
||||
import { ShortcutKey, WordPracticeMode, WordPracticeStage, WordPracticeType } from '@/types/enum.ts'
|
||||
|
||||
|
||||
@@ -24,14 +24,14 @@ import Toast from '@/components/base/toast/Toast.ts'
|
||||
import BaseButton from '@/components/BaseButton.vue'
|
||||
import { getDefaultDict } from '@/types/func.ts'
|
||||
import DeleteIcon from '@/components/icon/DeleteIcon.vue'
|
||||
import PracticeSettingDialog from '@/components/word/components/PracticeSettingDialog.vue'
|
||||
import ChangeLastPracticeIndexDialog from '@/components/word/components/ChangeLastPracticeIndexDialog.vue'
|
||||
import PracticeSettingDialog from '@/components/word/PracticeSettingDialog.vue'
|
||||
import ChangeLastPracticeIndexDialog from '@/components/word/ChangeLastPracticeIndexDialog.vue'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import { useFetch } from '@vueuse/core'
|
||||
import { AppEnv, DICT_LIST, Host, LIB_JS_URL, Origin, TourConfig, WordPracticeModeNameMap } from '@/config/env.ts'
|
||||
import { myDictList } from '@/apis'
|
||||
import PracticeWordListDialog from '@/components/word/components/PracticeWordListDialog.vue'
|
||||
import ShufflePracticeSettingDialog from '@/components/word/components/ShufflePracticeSettingDialog.vue'
|
||||
import PracticeWordListDialog from '@/components/word/PracticeWordListDialog.vue'
|
||||
import ShufflePracticeSettingDialog from '@/components/word/ShufflePracticeSettingDialog.vue'
|
||||
import { deleteDict } from '@/apis/dict.ts'
|
||||
import OptionButton from '@/components/base/OptionButton.vue'
|
||||
import { getPracticeWordCache, setPracticeWordCache } from '@/utils/cache.ts'
|
||||
|
||||
Reference in New Issue
Block a user