From f103c2fffae089ad345a2c65e799c14e2d804eb3 Mon Sep 17 00:00:00 2001 From: purocean Date: Tue, 7 Apr 2020 11:32:22 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BE=E7=89=87=20Base?= =?UTF-8?q?64=20=E7=B2=98=E8=B4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Editor.vue | 14 ++++++++++---- frontend/src/components/MonacoEditor.vue | 8 +++++--- frontend/src/lib/file.js | 8 ++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Editor.vue b/frontend/src/components/Editor.vue index 3b480d1b..34569b8b 100644 --- a/frontend/src/components/Editor.vue +++ b/frontend/src/components/Editor.vue @@ -183,10 +183,16 @@ export default { console.error(error) } }, - async pasteImg (file) { - const { relativePath } = await File.upload(this.currentFile.repo, this.currentFile.path, file) - this.$bus.emit('file-uploaded', relativePath) - this.$refs.editor.insert(`![图片](${encodeMarkdownLink(relativePath)})\n`) + async pasteImg (file, asBase64) { + console.log(file, asBase64) + if (asBase64) { + const uri = await File.toBase64URL(file) + this.$refs.editor.insert(`![图片](${uri})\n`) + } else { + const { relativePath } = await File.upload(this.currentFile.repo, this.currentFile.path, file) + this.$bus.emit('file-uploaded', relativePath) + this.$refs.editor.insert(`![图片](${encodeMarkdownLink(relativePath)})\n`) + } }, async uploadFile (file) { const filename = `${dayjs().format('YYYYMMDDHHmmss')}.${file.name}` diff --git a/frontend/src/components/MonacoEditor.vue b/frontend/src/components/MonacoEditor.vue index fa15f51a..c7839d70 100644 --- a/frontend/src/components/MonacoEditor.vue +++ b/frontend/src/components/MonacoEditor.vue @@ -195,7 +195,7 @@ export default { paste (e) { if (this.editor.hasTextFocus()) { const items = e.clipboardData.items - if (keys['b'] || keys['B']) { // 粘贴 HTML 转为 markdown + if (keys['m'] || keys['M']) { // 粘贴 HTML 转为 markdown for (let i = 0; i < items.length; i++) { if (items[i].type.match(/^text\/html$/i)) { items[i].getAsString(str => { @@ -209,8 +209,10 @@ export default { e.stopPropagation() } else { for (let i = 0; i < items.length; i++) { - if (items[i].type.match(/^image\/(png|jpg|jpeg|gif)$/i)) { - this.$emit('paste-img', items[i].getAsFile()) + const fileType = items[i].type + if (fileType.match(/^image\/(png|jpg|jpeg|gif)$/i)) { + const asBase64 = keys['b'] || keys['B'] // Ctrl + v 粘贴的同时 按下了 B 键,就粘贴 base64 图像 + this.$emit('paste-img', items[i].getAsFile(), asBase64) } } } diff --git a/frontend/src/lib/file.js b/frontend/src/lib/file.js index e87d788b..21fad40b 100644 --- a/frontend/src/lib/file.js +++ b/frontend/src/lib/file.js @@ -157,6 +157,13 @@ const openInOS = async ({ repo, path }) => { return fetchHttp(`/api/open?repo=${encodeURIComponent(repo)}&path=${encodeURIComponent(path)}`) } +const toBase64URL = async file => new Promise((resolve, reject) => { + const fr = new FileReader() + fr.readAsDataURL(file) + fr.onload = () => resolve(fr.result) + fr.onerror = error => reject(error) +}) + export default { isBelongTo, isSameFile, @@ -180,4 +187,5 @@ export default { mark, unmark, markedFiles, + toBase64URL, } From afba66f63cd731f46c74a8350ca5c07842b25822 Mon Sep 17 00:00:00 2001 From: purocean Date: Tue, 7 Apr 2020 11:35:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- help/FEATURES.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 82c3e417..e5ace7b0 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ + 文件加密:以 `.c.md` 结尾的文件视为加密文件 + 自动保存:文件编辑后自动保存,未保存文件橙色标题栏提醒(加密文档不自动保存) + 编辑优化:列表自动补全 -+ 粘贴图片:粘贴剪切板里面的图片 ++ 粘贴图片:`Ctrl + V` 粘贴剪切板里面的图片,使用快捷键 `Ctrl + B + V` 作为 Base64 形式粘贴 + 嵌入附件:可以添加附件到文档,点击在系统中打开 + 代码运行:支持运行 PHP,nodejs,Python,bash 代码,示例见 FEATURE.md + 待办列表:支持显示文档中的待办进度,点击可快速切换待办状态 @@ -47,7 +47,7 @@ + 样式风格:Markdown 使用 GitHub 风格样式和特性 + 数据仓库:可定义多个数据位置以便文档分类 + 外链转换:将外链或 BASE64 图片转换为本地图片:`Ctrl + Shift + 单击图片` `Ctrl + Alt + L` 转换所有外链图片到本地 -+ HTML 解析:可以直接在文档里面使用 HTML 代码,也可以使用快捷键 `Ctrl + B + V` 粘贴复制 HTML 为 Markdown ++ HTML 解析:可以直接在文档里面使用 HTML 代码,也可以使用快捷键 `Ctrl + M + V` 粘贴复制 HTML 为 Markdown + docx 导出:后端使用 pandoc 做转换器 + TOC 支持:生成 TOC 在需要生成目录的地方写入 `[toc]{type: "ol", level: [1,2,3]}` 即可,,示例见 FEATURE.md + 复制标题链接:`Ctrl + 单击标题` 复制标题链接路径到剪切板,便于插入到其他文件 diff --git a/help/FEATURES.md b/help/FEATURES.md index fba9783e..e46601d5 100644 --- a/help/FEATURES.md +++ b/help/FEATURES.md @@ -300,7 +300,8 @@ xml 代码块 第一行注释需要有 `--drawio--` 文字 1. 转换所有外链图片到本地 `Ctrl + Alt + L` 1. 切换文档预览显示:`Alt + V` 或点击状态栏 `切换预览` 按钮 1. 切换编辑器自动换行:`Alt + W` 或点击状态栏 `切换换行` 按钮 -1. 粘贴 HTML 富文本为 Markdown `Ctrl + B + V` +1. 粘贴 HTML 富文本为 Markdown `Ctrl + M + V` +1. 粘贴图片为 Base64 `Ctrl + B + V` 1. 打开文件快速切换面板 `Ctrl + P` 1. 复制文档标题链接 `Ctrl + 单击标题` 1. 切换编辑器 Tab `Ctrl + Alt + Left/Right` From bfda1225ae52b55f8a08bfb7953385df97381cde Mon Sep 17 00:00:00 2001 From: purocean Date: Tue, 7 Apr 2020 11:39:30 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++++--- package.json | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e5ace7b0..2383776a 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,8 @@ + `Ctrl + K, Ctrl + U` 转换大写 + `Ctrl + K, Ctrl + L` 转换小写 + `Ctrl + Alt + R` 在内置终端里面运行选中内容 - + `Ctrl + B + V` 粘贴 html 富文本 + + `Ctrl + M + V` 粘贴 html 富文本 + + `Ctrl + B + V` 粘贴图片为 Base64 + `Ctrl + Alt + Left/Right` 切换编辑器 Tab ## 开发 @@ -141,12 +142,16 @@ yarn run start ## 更新日志 [最新发布](https://github.com/purocean/yn/releases) -### [v2.2.9](https://github.com/purocean/yn/releases/tag/v2.2.9) 2020-03-17 -1. 修复公式解析问题 +### [v2.2.10](https://github.com/purocean/yn/releases/tag/v2.2.10) 2020-04-07 +1. 新增粘贴图片为 Base64 形式快捷键 `Ctrl + B + V` +2. 更改粘贴富文本为 Markdown 快捷键为 `Ctrl + M + V`
展开查看更多版本记录 +### [v2.2.9](https://github.com/purocean/yn/releases/tag/v2.2.9) 2020-03-17 +1. 修复公式解析问题 + ### [v2.2.8](https://github.com/purocean/yn/releases/tag/v2.2.8) 2020-03-13 1. 增加切换编辑器标签快捷键 `Ctrl + Alt + Left/Right` diff --git a/package.json b/package.json index 0aeb3704..c0cf79c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yank.note.yang", - "version": "2.2.9", + "version": "2.2.10", "description": "Yank Note 一款面向程序员的 Markdown 笔记应用", "main": "dist/app.js", "license": "Apache-2.0",