Merge remote-tracking branch 'origin/master'
# Conflicts: # components.d.ts
This commit is contained in:
4
components.d.ts
vendored
4
components.d.ts
vendored
@@ -14,7 +14,6 @@ declare module 'vue' {
|
||||
BaseButton: typeof import('./src/components/BaseButton.vue')['default']
|
||||
BaseIcon: typeof import('./src/components/BaseIcon.vue')['default']
|
||||
BaseList: typeof import('./src/components/list/BaseList.vue')['default']
|
||||
ChapterDetail: typeof import('./src/components/ChapterDetail.vue')['default']
|
||||
ChapterName: typeof import('./src/components/toolbar/ChapterName.vue')['default']
|
||||
Close: typeof import('./src/components/icon/Close.vue')['default']
|
||||
Dialog: typeof import('./src/components/dialog/Dialog.vue')['default']
|
||||
@@ -47,7 +46,6 @@ declare module 'vue' {
|
||||
IconWrapper: typeof import('./src/components/IconWrapper.vue')['default']
|
||||
Input: typeof import('./src/components/Input.vue')['default']
|
||||
List: typeof import('./src/components/list/List.vue')['default']
|
||||
ListItem: typeof import('./src/components/list/ListItem.vue')['default']
|
||||
Logo: typeof import('./src/components/Logo.vue')['default']
|
||||
MiniDialog: typeof import('./src/components/dialog/MiniDialog.vue')['default']
|
||||
PopConfirm: typeof import('./src/components/PopConfirm.vue')['default']
|
||||
@@ -63,9 +61,7 @@ declare module 'vue' {
|
||||
TranslateSetting: typeof import('./src/components/toolbar/TranslateSetting.vue')['default']
|
||||
VolumeIcon: typeof import('./src/components/icon/VolumeIcon.vue')['default']
|
||||
VolumeSetting: typeof import('./src/components/toolbar/VolumeSetting.vue')['default']
|
||||
WordItem: typeof import('./src/components/list/WordItem.vue')['default']
|
||||
WordList: typeof import('./src/components/list/WordList.vue')['default']
|
||||
WordList2: typeof import('./src/components/list/WordList2.vue')['default']
|
||||
WordListDialog: typeof import('./src/components/dialog/WordListDialog.vue')['default']
|
||||
}
|
||||
export interface ComponentCustomProperties {
|
||||
|
||||
@@ -36,8 +36,6 @@
|
||||
"vue-activity-calendar": "^1.2.2",
|
||||
"vue-i18n": "9",
|
||||
"vue-router": "4",
|
||||
"vue-virtual-list-v3": "^1.5.1",
|
||||
"vue-virtual-scroll-list": "^2.3.5",
|
||||
"vue-virtual-scroller": "2.0.0-beta.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
20
pnpm-lock.yaml
generated
20
pnpm-lock.yaml
generated
@@ -65,12 +65,6 @@ dependencies:
|
||||
vue-router:
|
||||
specifier: '4'
|
||||
version: 4.2.5(vue@3.3.4)
|
||||
vue-virtual-list-v3:
|
||||
specifier: ^1.5.1
|
||||
version: 1.5.1
|
||||
vue-virtual-scroll-list:
|
||||
specifier: ^2.3.5
|
||||
version: 2.3.5
|
||||
vue-virtual-scroller:
|
||||
specifier: 2.0.0-beta.8
|
||||
version: 2.0.0-beta.8(vue@3.3.4)
|
||||
@@ -814,10 +808,6 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@juggle/resize-observer@3.4.0:
|
||||
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
|
||||
dev: false
|
||||
|
||||
/@nodelib/fs.scandir@2.1.5:
|
||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||
engines: {node: '>= 8'}
|
||||
@@ -5139,16 +5129,6 @@ packages:
|
||||
typescript: 5.2.2
|
||||
dev: true
|
||||
|
||||
/vue-virtual-list-v3@1.5.1:
|
||||
resolution: {integrity: sha512-HbI2DTTRmw6GotG//wrKj6qcYpS8ecPFTxCxRUzXbz929xgXuO/VlcxxIQ9eusGVv5T64twk4l93MnKgyscL9g==}
|
||||
dependencies:
|
||||
'@juggle/resize-observer': 3.4.0
|
||||
dev: false
|
||||
|
||||
/vue-virtual-scroll-list@2.3.5:
|
||||
resolution: {integrity: sha512-YFK6u5yltqtAOfTBcij/KGAS2SoZvzbNIAf9qTULauPObEp53xj22tDuohrrM2vNkgoD5kejXICIUBt2Q4ZDqQ==}
|
||||
dev: false
|
||||
|
||||
/vue-virtual-scroller@2.0.0-beta.8(vue@3.3.4):
|
||||
resolution: {integrity: sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==}
|
||||
peerDependencies:
|
||||
|
||||
File diff suppressed because one or more lines are too long
1
public/dicts/en/article/common/NCE_3.json
Normal file
1
public/dicts/en/article/common/NCE_3.json
Normal file
File diff suppressed because one or more lines are too long
1
public/dicts/en/article/common/NCE_4.json
Normal file
1
public/dicts/en/article/common/NCE_4.json
Normal file
File diff suppressed because one or more lines are too long
@@ -449,7 +449,7 @@ html, body {
|
||||
.mobile {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: $dark-main-bg;
|
||||
background: var(--color-background);
|
||||
overflow: hidden;
|
||||
|
||||
canvas {
|
||||
|
||||
@@ -135,13 +135,6 @@ html.dark {
|
||||
transition: background var(--anim-time), color var(--anim-time), border var(--anim-time);
|
||||
}
|
||||
|
||||
.word-font-family {
|
||||
font-family: var(--word-font-family);
|
||||
//font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; //medium
|
||||
//font-family: Optimistic Text,-apple-system,ui-sans-serif,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji; // react
|
||||
//font-family: Google Sans Text,Noto Sans,Noto Sans JP,Noto Sans KR,Noto Naskh Arabic,Noto Sans Thai,Noto Sans Hebrew,Noto Sans Bengali,sans-serif; //android-dev
|
||||
line-height: 30rem;
|
||||
}
|
||||
|
||||
html, body {
|
||||
font-size: 1px;
|
||||
@@ -150,30 +143,27 @@ html, body {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
color: $font-color;
|
||||
color: rgb(187, 187, 187);
|
||||
//color: var(--color-font-1);
|
||||
//font-family: var(--font-family);
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.en-word {
|
||||
font-family: var(--word-font-family);
|
||||
}
|
||||
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
a {
|
||||
$main: rgb(64,158,255);
|
||||
color: $main;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.base-textarea {
|
||||
flex: 1;
|
||||
font-family: $font-family;
|
||||
font-family: var(--font-family);
|
||||
font-size: 18rem;
|
||||
outline: none;
|
||||
border: 1px solid transparent;
|
||||
@@ -220,6 +210,7 @@ a {
|
||||
}
|
||||
|
||||
footer {
|
||||
$footer-height: 60rem;
|
||||
box-sizing: content-box;
|
||||
height: $footer-height;
|
||||
display: flex;
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
//$dark-main-bg: rgb(46, 46, 46);
|
||||
$dark-main-bg: rgba(0, 5, 24, 1);
|
||||
$dark-second-bg: rgb(60, 63, 65);
|
||||
|
||||
$font-color: rgb(187, 187, 187);
|
||||
|
||||
$main: rgb(64,158,255);
|
||||
//$main: rgb(121,187,255);
|
||||
//$second: rgb(75, 110, 175);
|
||||
$second: rgb(59, 87, 138);
|
||||
$item-hover: rgb(75, 75, 75);
|
||||
$footer-height: 40rem;
|
||||
$card-radius: 8rem;
|
||||
|
||||
$font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;
|
||||
$word-font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
|
||||
@@ -2325,14 +2325,38 @@ const enArticle: DictResource[] = [
|
||||
id: 'article_nce2',
|
||||
name: "新概念英语2-课文",
|
||||
description: '新概念英语2-课文',
|
||||
category: '英语学习',
|
||||
category: '文章学习',
|
||||
tags: ['新概念英语'],
|
||||
url: 'NCE_2.json',
|
||||
length: 13,
|
||||
length: 96,
|
||||
translateLanguage: 'common',
|
||||
language: 'en',
|
||||
type: DictType.article
|
||||
},
|
||||
{
|
||||
id: 'article_nce3',
|
||||
name: "新概念英语3-课文",
|
||||
description: '新概念英语3-课文',
|
||||
category: '文章学习',
|
||||
tags: ['新概念英语'],
|
||||
url: 'NCE_3.json',
|
||||
length: 3,
|
||||
translateLanguage: 'common',
|
||||
language: 'en',
|
||||
type: DictType.article
|
||||
},
|
||||
{
|
||||
id: 'article_nce4',
|
||||
name: "新概念英语4-课文",
|
||||
description: '新概念英语4-课文',
|
||||
category: '文章学习',
|
||||
tags: ['新概念英语'],
|
||||
url: 'NCE_4.json',
|
||||
length: 3,
|
||||
translateLanguage: 'common',
|
||||
language: 'en',
|
||||
type: DictType.article
|
||||
}
|
||||
]
|
||||
|
||||
export const dictionaryResources: DictResource[] = [
|
||||
|
||||
@@ -94,7 +94,7 @@ const groupedByCategoryAndTag = $computed(() => {
|
||||
<div class="translate">
|
||||
<span>翻译:</span>
|
||||
<el-radio-group v-model="currentTranslateLanguage">
|
||||
<el-radio-button border v-for="i in translateLanguageList" :label="i">{{ i }}</el-radio-button>
|
||||
<el-radio-button border v-for="i in translateLanguageList" :label="i">{{ $t(i) }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<DictGroup
|
||||
@@ -143,6 +143,7 @@ const groupedByCategoryAndTag = $computed(() => {
|
||||
gap: 6rem;
|
||||
|
||||
&.active {
|
||||
$main: rgb(64,158,255);
|
||||
border-bottom: 2px solid $main;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ useDisableEventListener(() => focus)
|
||||
}
|
||||
|
||||
input {
|
||||
font-family: $font-family;
|
||||
font-family: var(--font-family);
|
||||
font-size: 18rem;
|
||||
outline: none;
|
||||
min-height: 20rem;
|
||||
|
||||
@@ -64,6 +64,7 @@ $w2: calc($w / 2);
|
||||
position: absolute;
|
||||
|
||||
.circle-full {
|
||||
$item-hover: rgb(75, 75, 75);
|
||||
stroke: $item-hover;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ onUnmounted(() => {
|
||||
:header="false"
|
||||
v-model="show">
|
||||
<div class="content">
|
||||
<div class="article-content word-font-family">
|
||||
<div class="article-content">
|
||||
<div class="title">
|
||||
<div>{{ article.title }}</div>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import Dialog from "@/components/dialog/Dialog.vue"
|
||||
import {useBaseStore} from "@/stores/base.ts"
|
||||
import {Icon} from '@iconify/vue';
|
||||
import {watch, ref} from "vue";
|
||||
import {ref} from "vue";
|
||||
import {useSettingStore} from "@/stores/setting.ts";
|
||||
import {getAudioFileUrl, useChangeAllSound, usePlayAudio, useWatchAllSound} from "@/hooks/sound.ts";
|
||||
import {getShortcutKey, useDisableEventListener, useEventListener} from "@/hooks/event.ts";
|
||||
|
||||
@@ -25,7 +25,7 @@ const emit = defineEmits([
|
||||
<div class="options">
|
||||
<BaseButton>
|
||||
<a :href="`${GITHUB}/issues/new?assignees=&labels=&projects=&template=%E5%8D%95%E8%AF%8D%E9%94%99%E8%AF%AF---word-error.md&title=%E5%8D%95%E8%AF%8D%E9%94%99%E8%AF%AF+%7C+Word+error`"
|
||||
target="_blank">字典错误?</a>
|
||||
target="_blank">词典错误?</a>
|
||||
</BaseButton>
|
||||
<BaseButton>
|
||||
<a :href="`${GITHUB}/issues/new?assignees=&labels=&projects=&template=问题报告---bug-report-.md&title=问题报告+%7C+Bug+report+`"
|
||||
|
||||
@@ -286,5 +286,69 @@
|
||||
"ko": "",
|
||||
"de": "",
|
||||
"fr": ""
|
||||
},
|
||||
"common": {
|
||||
"en": "",
|
||||
"zh": "中文",
|
||||
"id": "",
|
||||
"tw": "",
|
||||
"th": "",
|
||||
"ru": "",
|
||||
"vi": "",
|
||||
"es": "",
|
||||
"pt": "",
|
||||
"ja": "",
|
||||
"uk": "",
|
||||
"ko": "",
|
||||
"de": "",
|
||||
"fr": ""
|
||||
},
|
||||
"en": {
|
||||
"en": "",
|
||||
"zh": "英语",
|
||||
"id": "",
|
||||
"tw": "",
|
||||
"th": "",
|
||||
"ru": "",
|
||||
"vi": "",
|
||||
"es": "",
|
||||
"pt": "",
|
||||
"ja": "",
|
||||
"uk": "",
|
||||
"ko": "",
|
||||
"de": "",
|
||||
"fr": ""
|
||||
},
|
||||
"de": {
|
||||
"en": "",
|
||||
"zh": "德语",
|
||||
"id": "",
|
||||
"tw": "",
|
||||
"th": "",
|
||||
"ru": "",
|
||||
"vi": "",
|
||||
"es": "",
|
||||
"pt": "",
|
||||
"ja": "",
|
||||
"uk": "",
|
||||
"ko": "",
|
||||
"de": "",
|
||||
"fr": ""
|
||||
},
|
||||
"zh-CN": {
|
||||
"en": "",
|
||||
"zh": "中文",
|
||||
"id": "",
|
||||
"tw": "",
|
||||
"th": "",
|
||||
"ru": "",
|
||||
"vi": "",
|
||||
"es": "",
|
||||
"pt": "",
|
||||
"ja": "",
|
||||
"uk": "",
|
||||
"ko": "",
|
||||
"de": "",
|
||||
"fr": ""
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -4,7 +4,6 @@ import App from './App.vue'
|
||||
// import Mobile from './Mobile.vue'
|
||||
import {createPinia} from "pinia"
|
||||
// import ElementPlus from 'element-plus'
|
||||
import VirtualList from 'vue-virtual-list-v3';
|
||||
import ZH from "@/locales/zh-CN.ts";
|
||||
import {createI18n} from 'vue-i18n'
|
||||
import router from "@/router.ts";
|
||||
@@ -26,7 +25,6 @@ const app = createApp(App)
|
||||
app.use(VueVirtualScroller)
|
||||
// app.use(ElementPlus)
|
||||
app.use(pinia)
|
||||
app.use(VirtualList);
|
||||
app.use(i18n)
|
||||
app.use(router)
|
||||
|
||||
|
||||
@@ -359,7 +359,7 @@ defineExpose({getDictDetail, add, editDict})
|
||||
<Empty v-else/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="article-content word-font-family">
|
||||
<div class="article-content">
|
||||
<div class="title">
|
||||
<div>{{ article.title }}</div>
|
||||
<BaseIcon
|
||||
|
||||
@@ -128,6 +128,10 @@ const isEnd = $computed(() => {
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/css/style";
|
||||
|
||||
$card-radius: 8rem;
|
||||
$dark-second-bg: rgb(60, 63, 65);
|
||||
$item-hover: rgb(75, 75, 75);
|
||||
|
||||
.statistics {
|
||||
width: 800rem;
|
||||
padding: var(--space);
|
||||
@@ -184,6 +188,7 @@ const isEnd = $computed(() => {
|
||||
}
|
||||
|
||||
.notice {
|
||||
$main: rgb(64,158,255);
|
||||
background: $main;
|
||||
height: 40rem;
|
||||
display: flex;
|
||||
|
||||
@@ -223,7 +223,7 @@ defineExpose({del, showWord, hideWord, play})
|
||||
|
||||
.phonetic {
|
||||
margin-top: 5rem;
|
||||
font-family: $word-font-family;
|
||||
font-family: var(--word-font-family);
|
||||
}
|
||||
|
||||
.translate {
|
||||
@@ -259,7 +259,7 @@ defineExpose({del, showWord, hideWord, play})
|
||||
.word {
|
||||
font-size: 48rem;
|
||||
line-height: 1;
|
||||
font-family: $word-font-family;
|
||||
font-family: var(--word-font-family);
|
||||
letter-spacing: 5rem;
|
||||
|
||||
.input {
|
||||
|
||||
@@ -406,7 +406,7 @@ onUnmounted(() => {
|
||||
.word {
|
||||
font-size: 24rem;
|
||||
margin-bottom: 4rem;
|
||||
font-family: $word-font-family;
|
||||
font-family: var(--word-font-family);
|
||||
}
|
||||
|
||||
.prev {
|
||||
|
||||
@@ -104,34 +104,34 @@ export const useBaseStore = defineStore('base', {
|
||||
language: 'en',
|
||||
type: DictType.word
|
||||
},
|
||||
{
|
||||
...cloneDeep(DefaultDict),
|
||||
id: 'article_nce2',
|
||||
name: "新概念英语2-课文",
|
||||
description: '新概念英语2-课文',
|
||||
category: '英语学习',
|
||||
tags: ['新概念英语'],
|
||||
url: 'NCE_2.json',
|
||||
translateLanguage: 'common',
|
||||
language: 'en',
|
||||
type: DictType.article,
|
||||
resourceId: 'article_nce2',
|
||||
length: 13
|
||||
},
|
||||
{
|
||||
...cloneDeep(DefaultDict),
|
||||
id: 'nce-new-2',
|
||||
name: '新概念英语(新版)-2',
|
||||
description: '新概念英语新版第二册',
|
||||
category: '青少年英语',
|
||||
tags: ['新概念英语'],
|
||||
url: 'nce-new-2.json',
|
||||
translateLanguage: 'common',
|
||||
language: 'en',
|
||||
type: DictType.word,
|
||||
resourceId: 'nce-new-2',
|
||||
length: 862
|
||||
},
|
||||
// {
|
||||
// ...cloneDeep(DefaultDict),
|
||||
// id: 'article_nce2',
|
||||
// name: "新概念英语2-课文",
|
||||
// description: '新概念英语2-课文',
|
||||
// category: '英语学习',
|
||||
// tags: ['新概念英语'],
|
||||
// url: 'NCE_2.json',
|
||||
// translateLanguage: 'common',
|
||||
// language: 'en',
|
||||
// type: DictType.article,
|
||||
// resourceId: 'article_nce2',
|
||||
// length: 96
|
||||
// },
|
||||
// {
|
||||
// ...cloneDeep(DefaultDict),
|
||||
// id: 'nce-new-2',
|
||||
// name: '新概念英语(新版)-2',
|
||||
// description: '新概念英语新版第二册',
|
||||
// category: '青少年英语',
|
||||
// tags: ['新概念英语'],
|
||||
// url: 'nce-new-2.json',
|
||||
// translateLanguage: 'common',
|
||||
// language: 'en',
|
||||
// type: DictType.word,
|
||||
// resourceId: 'nce-new-2',
|
||||
// length: 862
|
||||
// },
|
||||
],
|
||||
current: {
|
||||
index: 3,
|
||||
@@ -142,22 +142,21 @@ export const useBaseStore = defineStore('base', {
|
||||
simpleWords: [
|
||||
'a', 'an',
|
||||
'i', 'my', 'you', 'your', 'me', 'it',
|
||||
'am', 'is', 'do', 'are', 'did', 'were',
|
||||
'what', 'who', 'where', 'how', 'no', 'yes',
|
||||
'not', 'can', 'could',
|
||||
'the', 'to', 'of', 'for', 'and', 'that', 'this', 'be'
|
||||
'what', 'who', 'where', 'how', 'when', 'which',
|
||||
'be', 'am', 'is', 'do', 'are', 'did', 'were', 'was', 'can', 'could', 'will', 'would',
|
||||
'the', 'that', 'this', 'to', 'of', 'for', 'and', 'at', 'not', 'no', 'yes',
|
||||
],
|
||||
load: false
|
||||
}
|
||||
},
|
||||
getters: {
|
||||
collect() {
|
||||
return this.myDictList[0] ?? {}
|
||||
collect(): Dict {
|
||||
return this.myDictList[0]
|
||||
},
|
||||
simple(): Dict {
|
||||
return this.myDictList[1]
|
||||
},
|
||||
wrong() {
|
||||
wrong(): Dict {
|
||||
return this.myDictList[2]
|
||||
},
|
||||
skipWordNames() {
|
||||
|
||||
@@ -103,7 +103,7 @@ export const DefaultArticle: Article = {
|
||||
newWords: [],
|
||||
textAllWords: [],
|
||||
sections: [],
|
||||
useTranslateType: TranslateType.network
|
||||
useTranslateType: TranslateType.custom
|
||||
}
|
||||
|
||||
export interface Statistics {
|
||||
|
||||
Reference in New Issue
Block a user