@kungal/editor-vue 0.38.2 → 0.38.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @kungal/editor-vue
|
|
2
2
|
|
|
3
|
+
## 0.38.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cac6a81: 一次输入整段插进来的网址会自动变成链接,和粘贴一样
|
|
8
|
+
|
|
9
|
+
下游报的问题:手机上复制链接再插进编辑器,不会自动变成超链接。
|
|
10
|
+
|
|
11
|
+
真正的粘贴(长按「粘贴」、Ctrl+V)一直会变:Milkdown 的剪贴板插件把文本当 markdown 读,GFM 的裸链接识别把它变成链接。但安卓输入法的**剪贴板栏**(Gboard、搜狗、百度……)根本不触发 paste,它像打出一个词一样把整段文字提交进来,所以网址一直是纯文本。这不只是「编辑时不是蓝的」:序列化器会把纯文本网址转义成 `https\://…`(正是为了它以后不被读成链接),发出去的帖子上它也点不了。
|
|
12
|
+
|
|
13
|
+
新增(在 `createLinkPlugin()` 里,预设默认启用,纯逻辑):**一次输入插进来的文本,如果整段恰好是一个链接**(由粘贴所用的同一个 markdown 解析器判定,所以 `www.…`、邮箱都和粘贴时一样),就给它加上链接,保存为 `<https://…>`。三种情况不转:
|
|
14
|
+
|
|
15
|
+
- 在代码块或行内代码里;
|
|
16
|
+
- 已经在链接里(剧透里也不转 —— 剧透只装纯文本);
|
|
17
|
+
- 逐字打出来的网址:每次按键都是单独一次输入,几个字符永远不是一整个链接,打到一半不会变蓝。
|
|
18
|
+
|
|
19
|
+
输入法在前后带的空格不算进链接;链接后面接着打的字不会跟进链接。输入法组字过程中不动它,等 `compositionend` 再加(和输入规则一样 —— 组字中改样式会把组字打断);加链接这一步和那次输入在同一个撤销步骤里,撤销一次全部撤掉。
|
|
20
|
+
|
|
21
|
+
无破坏性变更。
|
|
22
|
+
|
|
23
|
+
- 8c798e2: 剧透里的网址不再在第二次打开时把收尾的 `||` 吞进链接
|
|
24
|
+
|
|
25
|
+
下游报的问题:引用块里放一个链接再隐藏,第一次编辑正常,第二次打开就把右边的 `||` 当成了链接的一部分;再保存,帖子里就成了一条坏链接。
|
|
26
|
+
|
|
27
|
+
根因:GFM 的裸链接识别(micromark 的 autolink literal)不会在 `|` 处停下,所以 `||https://a.com||` 在剧透的 remark 转换运行**之前**,收尾的 `||` 就被吞进了链接 —— mdast 里是文字 `||` 加一个指向 `https://a.com||` 的链接,没有哪个文字节点装着完整的一对 `||`,剧透就没了。再保存会写出 `||<https://a.com||>`,任何渲染器读出来都是一条以 `||` 结尾的坏链接。服务端的 linkify 遇到 `|` 会停,所以第一次保存看起来没问题。
|
|
28
|
+
|
|
29
|
+
修法(`remarkSpoilerPlugin`):落在**未闭合的 `||` 里**、且收尾的 `||` 在它里面或后面的**裸链接**(GFM 字面链接或 `<…>`,也就是文字就是网址本身的链接),先还原成文字、和前后文字合并,再按原来的规则配对。这一步不丢任何东西 —— 剧透本来就只装纯文本(`marks: ''`),装不下链接。
|
|
30
|
+
|
|
31
|
+
- `||https://…||`、`||www.…||`、`||me@a.com||`、`||看 https://… 这个||` 都会得到同一个剧透,打开、保存多少次都一样。剧透里的网址存成 `https\://…`(序列化器对纯文本网址的既有转义,防止它被再读成链接)。
|
|
32
|
+
- 已经坏成 `||<https://…||>` 的旧内容,**打开再保存一次即可自愈**。
|
|
33
|
+
- 不在剧透里的裸链接不受影响;`[文字](链接)` 这种带自己文字的链接不会被拆(拆了会丢网址),原样保留。
|
|
34
|
+
|
|
35
|
+
无破坏性变更。
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [cac6a81]
|
|
38
|
+
- Updated dependencies [8c798e2]
|
|
39
|
+
- @kungal/editor-core@0.38.3
|
|
40
|
+
|
|
3
41
|
## 0.38.2
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungal/editor-vue",
|
|
3
|
-
"version": "0.38.
|
|
3
|
+
"version": "0.38.3",
|
|
4
4
|
"description": "KunEditor Vue 3 layer — the headless <KunEditor> component (dual WYSIWYG / markdown-source), toolbar and plugin views. Ships zero CSS and no UI-kit dependency; consumes @kungal/editor-core, and pairs with @kungal/editor-nuxt for optional KunUI chrome.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@prosemirror-adapter/vue": "^0.4.6",
|
|
43
|
-
"@kungal/editor-core": "0.38.
|
|
43
|
+
"@kungal/editor-core": "0.38.3"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@codemirror/lang-markdown": "^6.0.0",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"vite": "^8.0.16",
|
|
81
81
|
"vue": "^3.5.35",
|
|
82
82
|
"vue-tsc": "^3.3.3",
|
|
83
|
-
"@kungal/editor-core": "0.38.
|
|
83
|
+
"@kungal/editor-core": "0.38.3"
|
|
84
84
|
},
|
|
85
85
|
"scripts": {
|
|
86
86
|
"build": "vite build && vue-tsc -p tsconfig.build.json",
|