diff --git a/package-lock.json b/package-lock.json index 46b3a92..d9430a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "1.6.0", "hasInstallScript": true, "dependencies": { - "@element-plus/icons-vue": "^2.3.1", "@vueuse/core": "^12.0.0", "axios": "^1.7.8", "buffer-from": "^1.1.2", @@ -20,7 +19,6 @@ "cos-js-sdk-v5": "^1.8.6", "crypto-js": "^4.2.0", "csstype": "^3.1.3", - "element-plus": "^2.8.8", "es-toolkit": "^1.27.0", "form-data": "4.0.1", "highlight.js": "^11.10.0", @@ -37,7 +35,9 @@ "tailwindcss-animate": "^1.0.7", "tiny-oss": "^0.5.1", "uuid": "^11.0.3", - "vue": "^3.5.13" + "vue": "^3.5.13", + "vue-pick-colors": "^1.7.8", + "vue-sonner": "^1.3.0" }, "devDependencies": { "@antfu/eslint-config": "3.11.0", @@ -820,14 +820,6 @@ "sisteransi": "^1.0.5" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "engines": { - "node": ">=10" - } - }, "node_modules/@devicefarmer/adbkit": { "version": "3.2.6", "resolved": "https://registry.npmmirror.com/@devicefarmer/adbkit/-/adbkit-3.2.6.tgz", @@ -898,14 +890,6 @@ "integrity": "sha512-zQ42I53sb4WVHA+5yoY1t59Zk++Ot02AvUgtNKLzTT8mPyVqVChFcePa3on/xIoKEgH+RoepgPHzqfk9837YFw==", "dev": true }, - "node_modules/@element-plus/icons-vue": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", - "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", - "peerDependencies": { - "vue": "^3.2.0" - } - }, "node_modules/@es-joy/jsdoccomment": { "version": "0.48.0", "resolved": "https://registry.npmmirror.com/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", @@ -2614,19 +2598,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-4.0.4.tgz", @@ -3880,11 +3851,6 @@ "tslib": "^2.4.0" } }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", @@ -6561,119 +6527,6 @@ "integrity": "sha512-pI2QF6+i+zjPbqRzJwkMvtvkdI7MjVbSh2g8dlMguDJIXEPw+kwasS1Jl+YGPEBfGVxsVgGUratAKymPdPo2vQ==", "dev": true }, - "node_modules/element-plus": { - "version": "2.8.8", - "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.8.8.tgz", - "integrity": "sha512-MLAH1x2PGTnOT7Iwqh9ASgfZhvgqQqrdbxuJH0w2fGjzE4ZjryyLQj24HXoQO7Zon66U3lrYxbdLI57M6OX0qw==", - "dependencies": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.3.1", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.14.182", - "@types/lodash-es": "^4.17.6", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.13", - "escape-html": "^1.0.3", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.2", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/element-plus/node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" - }, - "node_modules/element-plus/node_modules/@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", - "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/element-plus/node_modules/@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/element-plus/node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", - "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/element-plus/node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/elliptic": { "version": "6.6.1", "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.6.1.tgz", @@ -6993,11 +6846,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -10420,16 +10268,6 @@ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "node_modules/lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "peerDependencies": { - "@types/lodash-es": "*", - "lodash": "*", - "lodash-es": "*" - } - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -10985,11 +10823,6 @@ "integrity": "sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==", "dev": true }, - "node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz", @@ -12261,11 +12094,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" - }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmmirror.com/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -17460,6 +17288,23 @@ "vue": "^3.4.37" } }, + "node_modules/vue-pick-colors": { + "version": "1.7.8", + "resolved": "https://registry.npmmirror.com/vue-pick-colors/-/vue-pick-colors-1.7.8.tgz", + "integrity": "sha512-6AIMrjh+q+CYmhgyDUh062qLR9ua0pWFGlBnPD7egT+CEJslThQFNsc1NQ0+KUmgxtGukSGTuI7CkC/eHxbB5w==", + "dependencies": { + "@popperjs/core": "^2.11.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.11.2", + "vue": "^3.2.26" + } + }, + "node_modules/vue-sonner": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/vue-sonner/-/vue-sonner-1.3.0.tgz", + "integrity": "sha512-jAodBy4Mri8rQjVZGQAPs4ZYymc1ywPiwfa81qU0fFl+Suk7U8NaOxIDdI1oBGLeQJqRZi/oxNIuhCLqsBmOwg==" + }, "node_modules/vue-tsc": { "version": "2.1.10", "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.1.10.tgz", diff --git a/package.json b/package.json index 7e56435..8235dd7 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "postinstall": "simple-git-hooks && wxt prepare" }, "dependencies": { - "@element-plus/icons-vue": "^2.3.1", "@vueuse/core": "^12.0.0", "axios": "^1.7.8", "buffer-from": "^1.1.2", @@ -32,7 +31,6 @@ "cos-js-sdk-v5": "^1.8.6", "crypto-js": "^4.2.0", "csstype": "^3.1.3", - "element-plus": "^2.8.8", "es-toolkit": "^1.27.0", "form-data": "4.0.1", "highlight.js": "^11.10.0", @@ -49,7 +47,9 @@ "tailwindcss-animate": "^1.0.7", "tiny-oss": "^0.5.1", "uuid": "^11.0.3", - "vue": "^3.5.13" + "vue": "^3.5.13", + "vue-pick-colors": "^1.7.8", + "vue-sonner": "^1.3.0" }, "devDependencies": { "@antfu/eslint-config": "3.11.0", diff --git a/src/App.vue b/src/App.vue index c33bad3..ad3b939 100644 --- a/src/App.vue +++ b/src/App.vue @@ -72,14 +72,4 @@ body { background: #f0f0f0; } } - -// 修复分栏线负数 margin 导致的轴向滚动条 -.el-dropdown-menu__item--divided:before { - margin: 0; -} - -// 修复颜色选择器下拉箭头位置 -.el-icon.el-color-picker__icon.is-icon-arrow-down { - position: absolute; -} diff --git a/src/assets/less/app.less b/src/assets/less/app.less index d269259..8866cc8 100644 --- a/src/assets/less/app.less +++ b/src/assets/less/app.less @@ -34,11 +34,6 @@ section { height: 100%; } - -.el-message__icon { - display: none; -} - .web-title { margin: 0 15px 0 5px; } diff --git a/src/components/CodemirrorEditor/CssEditor.vue b/src/components/CodemirrorEditor/CssEditor.vue index 09a6a77..cb0838f 100644 --- a/src/components/CodemirrorEditor/CssEditor.vue +++ b/src/components/CodemirrorEditor/CssEditor.vue @@ -1,105 +1,223 @@ - - + - - + + {{ item.title }} - - - - - - + + + + + + + + - + + + + + + 新建自定义 CSS + + 请输入方案名称 + + + + + + 取消 + + + 保存 + + + + + + + + + + 编辑方案名称 + + 请输入新的方案名称 + + + + + + 取消 + + + 保存 + + + + + + + + + 提示 + + 此操作将删除该自定义方案,是否继续? + + + + 取消 + + 确认 + + + + + @@ -141,19 +259,4 @@ function handleTabsEdit(targetName: string, action: string) { transform: none; } } - -:deep(.el-tabs__content) { - padding: 0 !important; -} - -// 当 tab 为激活状态时,隐藏关闭按钮 -:deep(.el-tabs__item.is-active) { - .is-icon-close { - display: none; - } -} - -:deep(.el-tabs__new-tab) { - margin-right: 1em; -} diff --git a/src/components/CodemirrorEditor/EditorHeader/FileDropdown.vue b/src/components/CodemirrorEditor/EditorHeader/FileDropdown.vue index 334ba6f..def8219 100644 --- a/src/components/CodemirrorEditor/EditorHeader/FileDropdown.vue +++ b/src/components/CodemirrorEditor/EditorHeader/FileDropdown.vue @@ -1,6 +1,6 @@ - - 发布 - - - + + + + 发布 + + 发布 + + + 提示 + + 此功能由第三方浏览器插件支持,本平台不保证安全性。 + + - - - - - - - - - - - - + + + 封面 + + + + + + 标题 + + + + + + 描述 + + + diff --git a/src/components/CodemirrorEditor/EditorHeader/StyleDropdown.vue b/src/components/CodemirrorEditor/EditorHeader/StyleDropdown.vue index b004a5e..acb31d4 100644 --- a/src/components/CodemirrorEditor/EditorHeader/StyleDropdown.vue +++ b/src/components/CodemirrorEditor/EditorHeader/StyleDropdown.vue @@ -4,6 +4,7 @@ import { HoverCardContent, HoverCardTrigger, } from '@/components/ui/hover-card' +import { MenubarCheckboxItem } from '@/components/ui/menubar' import { codeBlockThemeOptions, colorOptions, @@ -12,10 +13,10 @@ import { legendOptions, themeOptions, } from '@/config' - import { useDisplayStore, useStore } from '@/stores' import { storeToRefs } from 'pinia' -import { ref } from 'vue' +import { ref, useTemplateRef } from 'vue' +import PickColors, { type Format } from 'vue-pick-colors' import StyleOptionMenu from './StyleOptionMenu.vue' const store = useStore() @@ -56,6 +57,10 @@ function customStyle() { cssEditor.value!.refresh() }, 50) } + +const pickColorsContainer = useTemplateRef(`pickColorsContainer`) +const format = ref(`rgb`) +const formatOptions = ref([`rgb`, `hex`, `hsl`, `hsv`]) @@ -100,54 +105,36 @@ function customStyle() { :change="legendChanged" /> - + - 自定义主题色 - + + + - - - - + + 自定义 CSS - + - - - - + Mac 代码块 - + - - + 重置 - + diff --git a/src/components/CodemirrorEditor/EditorHeader/StyleOptionMenu.vue b/src/components/CodemirrorEditor/EditorHeader/StyleOptionMenu.vue index bc6cd9f..3344095 100644 --- a/src/components/CodemirrorEditor/EditorHeader/StyleOptionMenu.vue +++ b/src/components/CodemirrorEditor/EditorHeader/StyleOptionMenu.vue @@ -1,7 +1,7 @@ @@ -199,25 +197,21 @@ function customStyle() { 格式 - - {{ label }} {{ item }} - + - - - - + 微信外链转底部引用 - + @@ -288,8 +282,15 @@ function customStyle() { 自定义主题色 - - + + @@ -436,11 +437,9 @@ function customStyle() { 样式配置 - - - 重置 - - + + 重置 + @@ -450,6 +449,8 @@ function customStyle() { + + diff --git a/src/components/CodemirrorEditor/InsertFormDialog.vue b/src/components/CodemirrorEditor/InsertFormDialog.vue index 4bd086f..66c90ed 100644 --- a/src/components/CodemirrorEditor/InsertFormDialog.vue +++ b/src/components/CodemirrorEditor/InsertFormDialog.vue @@ -6,6 +6,14 @@ import { DialogHeader, DialogTitle, } from '@/components/ui/dialog' +import { Label } from '@/components/ui/label' +import { + NumberField, + NumberFieldContent, + NumberFieldDecrement, + NumberFieldIncrement, + NumberFieldInput, +} from '@/components/ui/number-field' import { useDisplayStore, useStore } from '@/stores' import { createTable } from '@/utils' @@ -51,40 +59,36 @@ function onUpdate(val: boolean) { 插入表格 - - - 行数: - + + 行数 + + + + + + + + 列数 + + + + + + + + + + - - - 列数: - - - - - - - - - - - + + 取 消 @@ -98,11 +102,4 @@ function onUpdate(val: boolean) { diff --git a/src/components/CodemirrorEditor/UploadImgDialog.vue b/src/components/CodemirrorEditor/UploadImgDialog.vue index 1a588bb..a9de6de 100644 --- a/src/components/CodemirrorEditor/UploadImgDialog.vue +++ b/src/components/CodemirrorEditor/UploadImgDialog.vue @@ -1,13 +1,24 @@ @@ -318,484 +306,409 @@ function uploadImage(params: { file: any }) { 本地上传 + + + + 选择上传 + + + + GitHub 图床 + + + 阿里云 OSS + + + 腾讯云 COS + + + 七牛云 Kodo + + + MinIO + + + 公众号图床 + + + 自定义代码 + + - - - + + + 图床 + + + + + + + + {{ item.label }} + + + + + - - - - - - - + + 将图片拖到此处,或 - 点击上传 - - - - - - - - 安全设置->私人令牌」中生成 + + + + + 保存配置 + + + + --> + + + + - - - + + - - - + + - + + 如何获取 GitHub Token? - - - - + + + + 保存配置 - - - - - - - - + + + + + + + - - - + + - - - - - - + + + + + - - - - - - + + + + + - - - + + - + + 如何使用阿里云 OSS? - - - - + + + + 保存配置 - - - - - - - - + + + + + + + - - - + + - - - + + - - - - - - + + + + + - - - + + - + + 如何使用腾讯云 COS? - - - - + + + + 保存配置 - - - - - - - - + + + + + + + - - - + + - - - - - - + + + + + - - - - - - + + + + + - + + 如何使用七牛云 Kodo? - - - - + + + + 保存配置 - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + 如何使用 MinIO? - - - - + + + + 保存配置 - - - - - - - - - 由于接口请求跨域问题建议在浏览器插件形式中使用 - - 公众号 图床 - - - - - + + + + + + + - - - + + - - - + + - - 如何开启公众号开发者模式并获取应用账号密钥? - - - - - 如何在浏览器插件中使用公众号图床? - - - - + + + + + 如何开启公众号开发者模式并获取应用账号密钥? + + + 如何在浏览器插件中使用公众号图床? + + + + + 保存配置 - - - - - - - - - - 参数详情? - - - - - 保存配置 - - - - - + + + + + + + + diff --git a/src/components/CustomUploadForm.vue b/src/components/CustomUploadForm.vue new file mode 100644 index 0000000..ccb8852 --- /dev/null +++ b/src/components/CustomUploadForm.vue @@ -0,0 +1,70 @@ + + + + + + + + + 参数详情 + + + 保存配置 + + + diff --git a/src/components/FormItem.vue b/src/components/FormItem.vue new file mode 100644 index 0000000..1c5a66d --- /dev/null +++ b/src/components/FormItem.vue @@ -0,0 +1,27 @@ + + + + + + + {{ props.label }} + + + + + + + diff --git a/src/components/RunLoading.vue b/src/components/RunLoading.vue index 1a11d27..1ad7e3d 100644 --- a/src/components/RunLoading.vue +++ b/src/components/RunLoading.vue @@ -34,7 +34,7 @@ onMounted(() => { width: 100vw; height: 100vh; font-size: 18px; - background-color: var(--el-bg-color-page); + background-color: hsl(var(--background)); &::before { content: url('../assets/images/favicon.png'); diff --git a/src/components/ui/alert-dialog/AlertDialog.vue b/src/components/ui/alert-dialog/AlertDialog.vue new file mode 100644 index 0000000..8fb30de --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialog.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogAction.vue b/src/components/ui/alert-dialog/AlertDialogAction.vue new file mode 100644 index 0000000..b417759 --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogAction.vue @@ -0,0 +1,20 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogCancel.vue b/src/components/ui/alert-dialog/AlertDialogCancel.vue new file mode 100644 index 0000000..75caad9 --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogCancel.vue @@ -0,0 +1,27 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogContent.vue b/src/components/ui/alert-dialog/AlertDialogContent.vue new file mode 100644 index 0000000..872f5e2 --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogContent.vue @@ -0,0 +1,42 @@ + + + + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogDescription.vue b/src/components/ui/alert-dialog/AlertDialogDescription.vue new file mode 100644 index 0000000..11d0d51 --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogDescription.vue @@ -0,0 +1,25 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogFooter.vue b/src/components/ui/alert-dialog/AlertDialogFooter.vue new file mode 100644 index 0000000..a522faf --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogFooter.vue @@ -0,0 +1,21 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogHeader.vue b/src/components/ui/alert-dialog/AlertDialogHeader.vue new file mode 100644 index 0000000..8816652 --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogHeader.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogTitle.vue b/src/components/ui/alert-dialog/AlertDialogTitle.vue new file mode 100644 index 0000000..1a98462 --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogTitle.vue @@ -0,0 +1,22 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/AlertDialogTrigger.vue b/src/components/ui/alert-dialog/AlertDialogTrigger.vue new file mode 100644 index 0000000..4f5e2fd --- /dev/null +++ b/src/components/ui/alert-dialog/AlertDialogTrigger.vue @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/components/ui/alert-dialog/index.ts b/src/components/ui/alert-dialog/index.ts new file mode 100644 index 0000000..448d519 --- /dev/null +++ b/src/components/ui/alert-dialog/index.ts @@ -0,0 +1,9 @@ +export { default as AlertDialog } from './AlertDialog.vue' +export { default as AlertDialogAction } from './AlertDialogAction.vue' +export { default as AlertDialogCancel } from './AlertDialogCancel.vue' +export { default as AlertDialogContent } from './AlertDialogContent.vue' +export { default as AlertDialogDescription } from './AlertDialogDescription.vue' +export { default as AlertDialogFooter } from './AlertDialogFooter.vue' +export { default as AlertDialogHeader } from './AlertDialogHeader.vue' +export { default as AlertDialogTitle } from './AlertDialogTitle.vue' +export { default as AlertDialogTrigger } from './AlertDialogTrigger.vue' diff --git a/src/components/ui/alert/Alert.vue b/src/components/ui/alert/Alert.vue new file mode 100644 index 0000000..964d61d --- /dev/null +++ b/src/components/ui/alert/Alert.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/src/components/ui/alert/AlertDescription.vue b/src/components/ui/alert/AlertDescription.vue new file mode 100644 index 0000000..2971a87 --- /dev/null +++ b/src/components/ui/alert/AlertDescription.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/alert/AlertTitle.vue b/src/components/ui/alert/AlertTitle.vue new file mode 100644 index 0000000..e28dd37 --- /dev/null +++ b/src/components/ui/alert/AlertTitle.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/alert/index.ts b/src/components/ui/alert/index.ts new file mode 100644 index 0000000..d608673 --- /dev/null +++ b/src/components/ui/alert/index.ts @@ -0,0 +1,23 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export { default as Alert } from './Alert.vue' +export { default as AlertDescription } from './AlertDescription.vue' +export { default as AlertTitle } from './AlertTitle.vue' + +export const alertVariants = cva( + 'relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground', + { + variants: { + variant: { + default: 'bg-background text-foreground', + destructive: + 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +export type AlertVariants = VariantProps diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue new file mode 100644 index 0000000..329a5d9 --- /dev/null +++ b/src/components/ui/input/Input.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/components/ui/input/index.ts b/src/components/ui/input/index.ts new file mode 100644 index 0000000..a691dd6 --- /dev/null +++ b/src/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from './Input.vue' diff --git a/src/components/ui/label/Label.vue b/src/components/ui/label/Label.vue new file mode 100644 index 0000000..5ad1568 --- /dev/null +++ b/src/components/ui/label/Label.vue @@ -0,0 +1,27 @@ + + + + + + + diff --git a/src/components/ui/label/index.ts b/src/components/ui/label/index.ts new file mode 100644 index 0000000..572c2f0 --- /dev/null +++ b/src/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from './Label.vue' diff --git a/src/components/ui/number-field/NumberField.vue b/src/components/ui/number-field/NumberField.vue new file mode 100644 index 0000000..3c7db46 --- /dev/null +++ b/src/components/ui/number-field/NumberField.vue @@ -0,0 +1,23 @@ + + + + + + + diff --git a/src/components/ui/number-field/NumberFieldContent.vue b/src/components/ui/number-field/NumberFieldContent.vue new file mode 100644 index 0000000..2cde64c --- /dev/null +++ b/src/components/ui/number-field/NumberFieldContent.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/number-field/NumberFieldDecrement.vue b/src/components/ui/number-field/NumberFieldDecrement.vue new file mode 100644 index 0000000..bbfc5bd --- /dev/null +++ b/src/components/ui/number-field/NumberFieldDecrement.vue @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/src/components/ui/number-field/NumberFieldIncrement.vue b/src/components/ui/number-field/NumberFieldIncrement.vue new file mode 100644 index 0000000..be1417e --- /dev/null +++ b/src/components/ui/number-field/NumberFieldIncrement.vue @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/src/components/ui/number-field/NumberFieldInput.vue b/src/components/ui/number-field/NumberFieldInput.vue new file mode 100644 index 0000000..f1c1f03 --- /dev/null +++ b/src/components/ui/number-field/NumberFieldInput.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/components/ui/number-field/index.ts b/src/components/ui/number-field/index.ts new file mode 100644 index 0000000..5489697 --- /dev/null +++ b/src/components/ui/number-field/index.ts @@ -0,0 +1,5 @@ +export { default as NumberField } from './NumberField.vue' +export { default as NumberFieldContent } from './NumberFieldContent.vue' +export { default as NumberFieldDecrement } from './NumberFieldDecrement.vue' +export { default as NumberFieldIncrement } from './NumberFieldIncrement.vue' +export { default as NumberFieldInput } from './NumberFieldInput.vue' diff --git a/src/components/ui/sonner/Sonner.vue b/src/components/ui/sonner/Sonner.vue new file mode 100644 index 0000000..b82b29e --- /dev/null +++ b/src/components/ui/sonner/Sonner.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/src/components/ui/sonner/index.ts b/src/components/ui/sonner/index.ts new file mode 100644 index 0000000..0d4a642 --- /dev/null +++ b/src/components/ui/sonner/index.ts @@ -0,0 +1 @@ +export { default as Toaster } from './Sonner.vue' diff --git a/src/components/ui/switch/Switch.vue b/src/components/ui/switch/Switch.vue new file mode 100644 index 0000000..728963c --- /dev/null +++ b/src/components/ui/switch/Switch.vue @@ -0,0 +1,39 @@ + + + + + + + + + diff --git a/src/components/ui/switch/index.ts b/src/components/ui/switch/index.ts new file mode 100644 index 0000000..87b4b17 --- /dev/null +++ b/src/components/ui/switch/index.ts @@ -0,0 +1 @@ +export { default as Switch } from './Switch.vue' diff --git a/src/components/ui/tabs/Tabs.vue b/src/components/ui/tabs/Tabs.vue new file mode 100644 index 0000000..8feda3f --- /dev/null +++ b/src/components/ui/tabs/Tabs.vue @@ -0,0 +1,15 @@ + + + + + + + diff --git a/src/components/ui/tabs/TabsContent.vue b/src/components/ui/tabs/TabsContent.vue new file mode 100644 index 0000000..fb59dc9 --- /dev/null +++ b/src/components/ui/tabs/TabsContent.vue @@ -0,0 +1,22 @@ + + + + + + + diff --git a/src/components/ui/tabs/TabsList.vue b/src/components/ui/tabs/TabsList.vue new file mode 100644 index 0000000..9d828af --- /dev/null +++ b/src/components/ui/tabs/TabsList.vue @@ -0,0 +1,25 @@ + + + + + + + diff --git a/src/components/ui/tabs/TabsTrigger.vue b/src/components/ui/tabs/TabsTrigger.vue new file mode 100644 index 0000000..f4e7f67 --- /dev/null +++ b/src/components/ui/tabs/TabsTrigger.vue @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/components/ui/tabs/index.ts b/src/components/ui/tabs/index.ts new file mode 100644 index 0000000..a5e58dc --- /dev/null +++ b/src/components/ui/tabs/index.ts @@ -0,0 +1,4 @@ +export { default as Tabs } from './Tabs.vue' +export { default as TabsContent } from './TabsContent.vue' +export { default as TabsList } from './TabsList.vue' +export { default as TabsTrigger } from './TabsTrigger.vue' diff --git a/src/components/ui/textarea/Textarea.vue b/src/components/ui/textarea/Textarea.vue new file mode 100644 index 0000000..1dee55d --- /dev/null +++ b/src/components/ui/textarea/Textarea.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/components/ui/textarea/index.ts b/src/components/ui/textarea/index.ts new file mode 100644 index 0000000..6a7ab2a --- /dev/null +++ b/src/components/ui/textarea/index.ts @@ -0,0 +1 @@ +export { default as Textarea } from './Textarea.vue' diff --git a/src/config/theme.ts b/src/config/theme.ts index d4934ca..0bd1e71 100644 --- a/src/config/theme.ts +++ b/src/config/theme.ts @@ -15,7 +15,7 @@ const defaultTheme: Theme = { 'padding': `0 1em`, 'border-bottom': `2px solid var(--md-primary-color)`, 'margin': `2em auto 1em`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, 'font-size': `1.2em`, 'font-weight': `bold`, 'text-align': `center`, @@ -38,7 +38,7 @@ const defaultTheme: Theme = { 'padding-left': `8px`, 'border-left': `3px solid var(--md-primary-color)`, 'margin': `2em 8px 0.75em 0`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, 'font-size': `1.1em`, 'font-weight': `bold`, 'line-height': `1.2`, @@ -71,7 +71,7 @@ const defaultTheme: Theme = { p: { 'margin': `1.5em 8px`, 'letter-spacing': `0.1em`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, 'text-align': `justify`, }, @@ -91,7 +91,7 @@ const defaultTheme: Theme = { 'display': `block`, 'font-size': `1em`, 'letter-spacing': `0.1em`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, blockquote_note: { @@ -181,7 +181,7 @@ const defaultTheme: Theme = { ol: { 'padding-left': `1em`, 'margin-left': `0`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, // 无序列表 @@ -189,18 +189,18 @@ const defaultTheme: Theme = { 'list-style': `circle`, 'padding-left': `1em`, 'margin-left': `0`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, footnotes: { 'margin': `0.5em 8px`, 'font-size': `80%`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, figure: { margin: `1.5em 8px`, - color: `var(--el-text-color-regular)`, + color: `hsl(var(--foreground))`, }, hr: { @@ -218,7 +218,7 @@ const defaultTheme: Theme = { 'text-indent': `-1em`, 'display': `block`, 'margin': `0.2em 8px`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, codespan: { @@ -255,13 +255,13 @@ const defaultTheme: Theme = { 'border-collapse': `collapse`, 'text-align': `center`, 'margin': `1em 8px`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, thead: { 'background': `rgba(0, 0, 0, 0.05)`, 'font-weight': `bold`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, td: { @@ -273,7 +273,7 @@ const defaultTheme: Theme = { footnote: { 'font-size': `12px`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, }, figcaption: { @@ -403,7 +403,7 @@ const graceTheme = toMerged(defaultTheme, { 'border-spacing': `0`, 'border-radius': `8px`, 'margin': `1em 8px`, - 'color': `var(--el-text-color-regular)`, + 'color': `hsl(var(--foreground))`, 'box-shadow': `0 4px 6px rgba(0,0,0,0.1)`, 'overflow': `hidden`, }, diff --git a/src/element/index.ts b/src/element/index.ts deleted file mode 100644 index f0c8e2a..0000000 --- a/src/element/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { App } from 'vue' -import * as ElementPlusIconsVue from '@element-plus/icons-vue' -import { ElLoading, ElMessage } from 'element-plus' -import 'element-plus/dist/index.css' -import 'element-plus/theme-chalk/dark/css-vars.css' - -export default { - install(app: App) { - // app.use(ElementPlus, { size: `default` }) - - app.config.globalProperties.$loading = ElLoading.service - app.config.globalProperties.$message = ElMessage - - for (const [key, component] of Object.entries(ElementPlusIconsVue)) { - app.component(`ElIcon${key}`, component) - } - }, -} diff --git a/src/main.ts b/src/main.ts index e62e3df..ad34529 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,6 @@ import { createPinia } from 'pinia' import { createApp } from 'vue' import App from './App.vue' -import ElementPlus from './element' import 'virtual:uno.css' import 'codemirror/lib/codemirror.css' @@ -13,6 +12,7 @@ import '@/assets/index.css' import '@/assets/less/theme.less' import 'codemirror/mode/css/css' +import 'codemirror/mode/javascript/javascript' import 'codemirror/mode/markdown/markdown' import 'codemirror/addon/edit/closebrackets' import 'codemirror/addon/edit/matchbrackets' @@ -23,6 +23,5 @@ import 'codemirror/addon/hint/css-hint' const app = createApp(App) app.use(createPinia()) -app.use(ElementPlus) app.mount(`#app`) diff --git a/src/stores/index.ts b/src/stores/index.ts index 8ee3793..d7e9876 100644 --- a/src/stores/index.ts +++ b/src/stores/index.ts @@ -6,10 +6,10 @@ import { initRenderer } from '@/utils/renderer' import { useDark, useStorage, useToggle } from '@vueuse/core' import CodeMirror from 'codemirror' -import { ElMessage, ElMessageBox } from 'element-plus' import { marked } from 'marked' import { defineStore } from 'pinia' import { computed, markRaw, onMounted, ref, toRaw, watch } from 'vue' +import { toast } from 'vue-sonner' export const useStore = defineStore(`store`, () => { // 是否开启深色模式 @@ -265,6 +265,8 @@ export const useStore = defineStore(`store`, () => { updateCss() editorRefresh() + + toast.success(`样式重置成功~`) } // 为函数添加刷新编辑器的功能 @@ -361,7 +363,7 @@ export const useStore = defineStore(`store`, () => { reader.readAsText(file) reader.onload = (event) => { (editor.value!).setValue((event.target!).result as string) - ElMessage.success(`文档导入成功`) + toast.success(`文档导入成功`) } } @@ -370,28 +372,11 @@ export const useStore = defineStore(`store`, () => { body.removeChild(input) } + const isOpenConfirmDialog = ref(false) + // 重置样式 const resetStyleConfirm = () => { - ElMessageBox.confirm( - `此操作将丢失本地自定义样式,是否继续?`, - `提示`, - { - confirmButtonText: `确定`, - cancelButtonText: `取消`, - type: `warning`, - center: true, - }, - ) - .then(() => { - resetStyle() - ElMessage({ - type: `success`, - message: `样式重置成功~`, - }) - }) - .catch(() => { - (editor.value!).focus() - }) + isOpenConfirmDialog.value = true } return { @@ -433,7 +418,9 @@ export const useStore = defineStore(`store`, () => { importMarkdownContent, + isOpenConfirmDialog, resetStyleConfirm, + resetStyle, editorContent, cssContentConfig, diff --git a/src/utils/index.ts b/src/utils/index.ts index d07bb68..7f328bb 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -186,8 +186,6 @@ export function exportHTML(primaryColor: string) { setStyles(element) const htmlStr = element.innerHTML - .replaceAll(`var(--el-text-color-regular)`, `#3f3f3f`) - .replaceAll(`var(--blockquote-background)`, `#f7f7f7`) .replaceAll(`var(--md-primary-color)`, primaryColor) .replaceAll(/--md-primary-color:.+?;/g, ``) diff --git a/src/views/CodemirrorEditor.vue b/src/views/CodemirrorEditor.vue index d1c1b64..e5dcace 100644 --- a/src/views/CodemirrorEditor.vue +++ b/src/views/CodemirrorEditor.vue @@ -4,8 +4,17 @@ import CssEditor from '@/components/CodemirrorEditor/CssEditor.vue' import EditorHeader from '@/components/CodemirrorEditor/EditorHeader/index.vue' import InsertFormDialog from '@/components/CodemirrorEditor/InsertFormDialog.vue' import UploadImgDialog from '@/components/CodemirrorEditor/UploadImgDialog.vue' - import RunLoading from '@/components/RunLoading.vue' +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from '@/components/ui/alert-dialog' import { ContextMenu, ContextMenuContent, @@ -14,7 +23,6 @@ import { ContextMenuShortcut, ContextMenuTrigger, } from '@/components/ui/context-menu' - import { altKey, altSign, ctrlKey, shiftKey, shiftSign } from '@/config' import { useDisplayStore, useStore } from '@/stores' import { @@ -24,12 +32,9 @@ import { } from '@/utils' import fileApi from '@/utils/file' import CodeMirror from 'codemirror' - -import { ElCol, ElMessage } from 'element-plus' - import { storeToRefs } from 'pinia' - import { onMounted, ref, toRaw, watch } from 'vue' +import { toast } from 'vue-sonner' const store = useStore() const displayStore = useDisplayStore() @@ -53,7 +58,7 @@ const { const isImgLoading = ref(false) const timeout = ref() -const preview = ref(null) +const preview = ref(null) // 使浏览区与编辑区滚动条建立同步联系 function leftAndRightScroll() { @@ -63,7 +68,7 @@ function leftAndRightScroll() { clearTimeout(timeout.value) if (text === `preview`) { - source = preview.value!.$el + source = preview.value! target = document.querySelector(`.CodeMirror-scroll`)! editor.value!.off(`scroll`, editorScrollCB) @@ -73,7 +78,7 @@ function leftAndRightScroll() { } else { source = document.querySelector(`.CodeMirror-scroll`)! - target = preview.value!.$el + target = preview.value! target.removeEventListener(`scroll`, previewScrollCB, false) timeout.value = setTimeout(() => { @@ -96,7 +101,7 @@ function leftAndRightScroll() { scrollCB(`preview`) } - (preview.value!.$el).addEventListener(`scroll`, previewScrollCB, false) + (preview.value!).addEventListener(`scroll`, previewScrollCB, false) editor.value!.on(`scroll`, editorScrollCB) } @@ -131,7 +136,7 @@ function beforeUpload(file: File) { // validate image const checkResult = checkImage(file) if (!checkResult.ok) { - ElMessage.error(checkResult.msg) + toast.error(checkResult.msg!) return false } @@ -142,7 +147,7 @@ function beforeUpload(file: File) { const config = localStorage.getItem(`${imgHost}Config`) const isValidHost = imgHost === `default` || config if (!isValidHost) { - ElMessage.error(`请先配置 ${imgHost} 图床参数`) + toast.error(`请先配置 ${imgHost} 图床参数`) return false } return true @@ -151,7 +156,7 @@ function beforeUpload(file: File) { // 图片上传结束 function uploaded(imageUrl: string) { if (!imageUrl) { - ElMessage.error(`上传图片未知异常`) + toast.error(`上传图片未知异常`) return } toggleShowUploadImgDialog(false) @@ -160,7 +165,7 @@ function uploaded(imageUrl: string) { const markdownImage = `![](${imageUrl})` // 将 Markdown 形式的 URL 插入编辑框光标所在位置 toRaw(store.editor!).replaceSelection(`\n${markdownImage}\n`, cursor as any) - ElMessage.success(`图片上传成功`) + toast.success(`图片上传成功`) } function uploadImage(file: File, cb?: { (url: any): void, (arg0: unknown): void } | undefined) { isImgLoading.value = true @@ -176,7 +181,7 @@ function uploadImage(file: File, cb?: { (url: any): void, (arg0: unknown): void } }) .catch((err) => { - ElMessage.error(err.message) + toast.error(err.message) }) .finally(() => { isImgLoading.value = false @@ -274,12 +279,12 @@ function addFormat(cmd: string | number) { (editor.value as any).options.extraKeys[cmd](editor.value) } -const codeMirrorWrapper = ref | null>(null) +const codeMirrorWrapper = ref | null>(null) // 转换 markdown 中的本地图片为线上图片 // todo 处理事件覆盖 function mdLocalToRemote() { - const dom = codeMirrorWrapper.value!.$el as HTMLElement + const dom = codeMirrorWrapper.value! // 上传 md 中的图片 const uploadMdImg = async ({ md, list }: { md: { str: string, path: string, file: File }, list: { path: string, file: File }[] }) => { @@ -391,10 +396,9 @@ onMounted(() => { @end-copy="endCopy" /> - - + { - + - + { + + + + + 提示 + + 此操作将丢失本地自定义样式,是否继续? + + + + 取消 + + 确认 + + + + @@ -497,8 +518,8 @@ onMounted(() => { width: 100%; height: 100%; text-align: center; - color: var(--el-text-color-regular); - background-color: var(--el-bg-color); + color: hsl(var(--foreground)); + background-color: hsl(var(--background)); .loading-mask-box { position: sticky; diff --git a/vite.config.ts b/vite.config.ts index d4d8b56..7c36247 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,7 +5,6 @@ import vue from '@vitejs/plugin-vue' import { visualizer } from 'rollup-plugin-visualizer' import UnoCSS from 'unocss/vite' import AutoImport from 'unplugin-auto-import/vite' -import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import Components from 'unplugin-vue-components/vite' import { defineConfig } from 'vite' import { nodePolyfills } from 'vite-plugin-node-polyfills' @@ -33,10 +32,10 @@ export default defineConfig({ filename: `stats.html`, }), AutoImport({ - resolvers: [ElementPlusResolver()], + resolvers: [], }), Components({ - resolvers: [ElementPlusResolver()], + resolvers: [], }), ], resolve: {
将图片拖到此处,或 - 点击上传 -