@@ -46,7 +99,10 @@ const { isWordCollect, toggleWordCollect, isWordSimple, toggleWordSimple } = use
{{ item.phonetic0 }}
-
+
+
@@ -74,4 +130,20 @@ const { isWordCollect, toggleWordCollect, isWordSimple, toggleWordSimple } = use
-
+
diff --git a/packages/core/src/hooks/dict.ts b/packages/core/src/hooks/dict.ts
index b15d5ef7..e4ad21c0 100644
--- a/packages/core/src/hooks/dict.ts
+++ b/packages/core/src/hooks/dict.ts
@@ -14,6 +14,10 @@ import { computed } from 'vue'
export function useWordOptions() {
const store = useBaseStore()
+ function ensureCurrentWordSource(val: Word) {
+ ensureWordSourceDictId(val, store.sdict.id)
+ }
+
function isWordCollect(val: Word) {
return !!store.collectWord.words.find(v => v.word.toLowerCase() === val.word.toLowerCase())
}
@@ -23,6 +27,7 @@ export function useWordOptions() {
if (rIndex > -1) {
store.collectWord.words.splice(rIndex, 1)
} else {
+ ensureCurrentWordSource(val)
store.collectWord.words.push(val)
}
store.collectWord.length = store.collectWord.words.length
@@ -37,6 +42,7 @@ export function useWordOptions() {
if (rIndex > -1) {
store.known.words.splice(rIndex, 1)
} else {
+ ensureCurrentWordSource(val)
store.known.words.push(val)
}
store.known.length = store.known.words.length
@@ -68,6 +74,13 @@ export function useWordOptions() {
}
}
+export function ensureWordSourceDictId(val: Word, sourceDictId?: string): Word {
+ if (!val.sourceDictId && sourceDictId) {
+ val.sourceDictId = sourceDictId
+ }
+ return val
+}
+
export function useArticleOptions() {
const store = useBaseStore()
diff --git a/packages/core/src/hooks/useWordHydrator.ts b/packages/core/src/hooks/useWordHydrator.ts
new file mode 100644
index 00000000..0a74df77
--- /dev/null
+++ b/packages/core/src/hooks/useWordHydrator.ts
@@ -0,0 +1,63 @@
+import { Word } from '../types'
+import { useBaseStore } from '../stores/base'
+
+type DictIndexCache = {
+ signature: string
+ index: Map