Merge remote-tracking branch 'origin/master'

# Conflicts:
#	components.d.ts
This commit is contained in:
zyronon
2023-12-06 10:07:24 +08:00
25 changed files with 149 additions and 107 deletions

4
components.d.ts vendored
View File

@@ -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 {

View File

@@ -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
View File

@@ -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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -449,7 +449,7 @@ html, body {
.mobile {
width: 100vw;
height: 100vh;
background: $dark-main-bg;
background: var(--color-background);
overflow: hidden;
canvas {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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[] = [

View File

@@ -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;
}

View File

@@ -67,7 +67,7 @@ useDisableEventListener(() => focus)
}
input {
font-family: $font-family;
font-family: var(--font-family);
font-size: 18rem;
outline: none;
min-height: 20rem;

View File

@@ -64,6 +64,7 @@ $w2: calc($w / 2);
position: absolute;
.circle-full {
$item-hover: rgb(75, 75, 75);
stroke: $item-hover;
}

View File

@@ -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>

View File

@@ -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";

View File

@@ -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+`"

View File

@@ -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.

View File

@@ -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)

View File

@@ -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

View File

@@ -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;

View File

@@ -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 {

View File

@@ -406,7 +406,7 @@ onUnmounted(() => {
.word {
font-size: 24rem;
margin-bottom: 4rem;
font-family: $word-font-family;
font-family: var(--word-font-family);
}
.prev {

View File

@@ -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() {

View File

@@ -103,7 +103,7 @@ export const DefaultArticle: Article = {
newWords: [],
textAllWords: [],
sections: [],
useTranslateType: TranslateType.network
useTranslateType: TranslateType.custom
}
export interface Statistics {