@ant-design/agentic-ui 2.29.7 → 2.29.8
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/dist/ChatLayout/components/FooterBackgroundLottie/index.js +1 -1
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.js +69 -0
- package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.d.ts +30 -0
- package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.js +88 -0
- package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.d.ts +34 -0
- package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.js +96 -0
- package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.js +145 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.d.ts +34 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.js +125 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.d.ts +34 -0
- package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.js +101 -0
- package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.js +111 -0
- package/dist/MarkdownEditor/editor/elements/Head/index.d.ts +3 -0
- package/dist/MarkdownEditor/editor/elements/Head/index.js +3 -1
- package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.d.ts +30 -0
- package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.js +95 -0
- package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.js +426 -0
- package/dist/MarkdownEditor/editor/elements/Image/index.js +38 -50
- package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.d.ts +32 -0
- package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.js +100 -0
- package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.d.ts +32 -0
- package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.js +110 -0
- package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.d.ts +40 -0
- package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.js +215 -0
- package/dist/MarkdownEditor/editor/elements/List/List.js +27 -12
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.js +93 -0
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.js +138 -0
- package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.d.ts +36 -0
- package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.js +600 -0
- package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.d.ts +32 -0
- package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.js +101 -0
- package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.d.ts +35 -0
- package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +109 -0
- package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +2 -1
- package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.d.ts +33 -0
- package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.js +163 -0
- package/dist/MarkdownEditor/editor/elements/index.d.ts +20 -1
- package/dist/MarkdownEditor/editor/elements/index.js +65 -29
- package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +18 -10
- package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +64 -21
- package/dist/MarkdownEditor/editor/plugins/elements.js +60 -6
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +97 -39
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.d.ts +14 -0
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +117 -90
- package/dist/MarkdownEditor/editor/plugins/index.d.ts +8 -0
- package/dist/MarkdownEditor/editor/plugins/index.js +8 -0
- package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.d.ts +12 -6
- package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +67 -42
- package/dist/MarkdownEditor/editor/plugins/utils.d.ts +31 -0
- package/dist/MarkdownEditor/editor/plugins/utils.js +75 -0
- package/dist/MarkdownEditor/editor/plugins/withCardPlugin.d.ts +15 -0
- package/dist/MarkdownEditor/editor/plugins/withCardPlugin.js +329 -0
- package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.d.ts +11 -0
- package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.js +299 -0
- package/dist/MarkdownEditor/editor/plugins/withInlineNodes.d.ts +12 -0
- package/dist/MarkdownEditor/editor/plugins/withInlineNodes.js +17 -0
- package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.d.ts +11 -0
- package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.js +70 -0
- package/dist/MarkdownEditor/editor/plugins/withListsPlugin.d.ts +23 -0
- package/dist/MarkdownEditor/editor/plugins/withListsPlugin.js +204 -0
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.d.ts +9 -12
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +17 -764
- package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.d.ts +11 -0
- package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.js +55 -0
- package/dist/MarkdownEditor/editor/plugins/withVoidNodes.d.ts +12 -0
- package/dist/MarkdownEditor/editor/plugins/withVoidNodes.js +17 -0
- package/dist/MarkdownEditor/editor/store.js +1 -1
- package/dist/MarkdownEditor/editor/utils/docx/module.js +41 -8
- package/dist/MarkdownEditor/editor/utils/editorCommands.d.ts +97 -0
- package/dist/MarkdownEditor/editor/utils/editorCommands.js +966 -0
- package/dist/MarkdownEditor/editor/utils/editorUtils.js +2 -2
- package/dist/MarkdownEditor/editor/utils/keyboard.js +15 -391
- package/dist/MarkdownEditor/el.d.ts +12 -5
- package/dist/MarkdownInputField/MarkdownInputField.js +10 -23
- package/dist/MarkdownInputField/style.js +9 -4
- package/package.json +8 -8
|
@@ -90,6 +90,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
90
90
|
}
|
|
91
91
|
import { Editor, Element, Node, Path, Point, Range, Transforms } from "slate";
|
|
92
92
|
import { EditorUtils } from "../../utils/editorUtils";
|
|
93
|
+
import { isListType } from "../withListsPlugin";
|
|
93
94
|
export var BackspaceKey = /*#__PURE__*/ function() {
|
|
94
95
|
"use strict";
|
|
95
96
|
function BackspaceKey(editor) {
|
|
@@ -166,67 +167,124 @@ export var BackspaceKey = /*#__PURE__*/ function() {
|
|
|
166
167
|
var _parent_1;
|
|
167
168
|
var parent1 = Editor.parent(this.editor, path);
|
|
168
169
|
if ((parent1 === null || parent1 === void 0 ? void 0 : (_parent_1 = parent1[0]) === null || _parent_1 === void 0 ? void 0 : _parent_1.type) === 'list-item') {
|
|
170
|
+
// 处理行首 Backspace 减少缩进
|
|
171
|
+
if (Range.isCollapsed(sel) && sel.anchor.offset === 0) {
|
|
172
|
+
var listItemPath = parent1[1];
|
|
173
|
+
var listPath = Path.parent(listItemPath);
|
|
174
|
+
var list = Node.get(this.editor, listPath);
|
|
175
|
+
if (isListType(list)) {
|
|
176
|
+
var listParent = Editor.parent(this.editor, listPath);
|
|
177
|
+
// 如果父节点是 list-item,说明在嵌套列表中,可以提升
|
|
178
|
+
if (Element.isElement(listParent[0]) && listParent[0].type === 'list-item') {
|
|
179
|
+
// 使用 liftNodes 提升当前 list-item
|
|
180
|
+
Transforms.liftNodes(this.editor, {
|
|
181
|
+
at: listItemPath
|
|
182
|
+
});
|
|
183
|
+
// 如果提升后,原列表为空,需要删除空列表
|
|
184
|
+
var updatedList = Node.get(this.editor, listPath);
|
|
185
|
+
if (isListType(updatedList) && updatedList.children.length === 0) {
|
|
186
|
+
Transforms.removeNodes(this.editor, {
|
|
187
|
+
at: listPath
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
169
194
|
if (Node.string(parent1[0]) !== '') {
|
|
170
195
|
return false;
|
|
171
196
|
}
|
|
172
197
|
if (Node.string(parent1[0]) === '') {
|
|
173
198
|
// 使用新的拆分逻辑处理空的list-item
|
|
174
|
-
var
|
|
175
|
-
var listNode = Editor.node(this.editor,
|
|
199
|
+
var listPath1 = Path.parent(parent1[1]);
|
|
200
|
+
var listNode = Editor.node(this.editor, listPath1);
|
|
176
201
|
var currentItemIndex = parent1[1][parent1[1].length - 1];
|
|
177
202
|
var isLastItem = currentItemIndex === listNode[0].children.length - 1;
|
|
178
203
|
if (isLastItem) {
|
|
179
204
|
// 如果是最后一个项目,删除list-item并替换成paragraph
|
|
180
|
-
|
|
205
|
+
// 使用 removeNodes 删除元素节点
|
|
206
|
+
Transforms.removeNodes(this.editor, {
|
|
181
207
|
at: parent1[1]
|
|
182
208
|
});
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
209
|
+
// 如果列表为空,删除列表容器
|
|
210
|
+
var updatedList1 = Node.get(this.editor, listPath1);
|
|
211
|
+
if (isListType(updatedList1) && updatedList1.children.length === 0) {
|
|
212
|
+
Transforms.removeNodes(this.editor, {
|
|
213
|
+
at: listPath1
|
|
214
|
+
});
|
|
215
|
+
// 在列表位置插入 paragraph
|
|
216
|
+
Transforms.insertNodes(this.editor, {
|
|
217
|
+
type: 'paragraph',
|
|
218
|
+
children: [
|
|
219
|
+
{
|
|
220
|
+
text: ''
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
}, {
|
|
224
|
+
at: listPath1,
|
|
225
|
+
select: true
|
|
226
|
+
});
|
|
227
|
+
} else {
|
|
228
|
+
// 在删除的位置插入 paragraph
|
|
229
|
+
Transforms.insertNodes(this.editor, {
|
|
230
|
+
type: 'paragraph',
|
|
231
|
+
children: [
|
|
232
|
+
{
|
|
233
|
+
text: ''
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
}, {
|
|
237
|
+
at: parent1[1],
|
|
238
|
+
select: true
|
|
239
|
+
});
|
|
240
|
+
}
|
|
194
241
|
} else {
|
|
195
|
-
//
|
|
196
|
-
|
|
197
|
-
// 删除当前item之后的所有items
|
|
242
|
+
// 如果不是最后一个项目,删除当前item和之后的所有items
|
|
243
|
+
// 先删除后面的 items(从后往前删除,避免索引变化)
|
|
198
244
|
for(var i = listNode[0].children.length - 1; i > currentItemIndex; i--){
|
|
199
|
-
Transforms.
|
|
200
|
-
at: _to_consumable_array(
|
|
245
|
+
Transforms.removeNodes(this.editor, {
|
|
246
|
+
at: _to_consumable_array(listPath1).concat([
|
|
201
247
|
i
|
|
202
248
|
])
|
|
203
249
|
});
|
|
204
250
|
}
|
|
205
251
|
// 删除当前item
|
|
206
|
-
Transforms.
|
|
252
|
+
Transforms.removeNodes(this.editor, {
|
|
207
253
|
at: parent1[1]
|
|
208
254
|
});
|
|
209
|
-
//
|
|
210
|
-
var
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
255
|
+
// 检查列表是否为空,如果为空则删除列表容器
|
|
256
|
+
var updatedList2 = Node.get(this.editor, listPath1);
|
|
257
|
+
if (isListType(updatedList2) && updatedList2.children.length === 0) {
|
|
258
|
+
// 列表为空,删除列表容器
|
|
259
|
+
Transforms.removeNodes(this.editor, {
|
|
260
|
+
at: listPath1
|
|
261
|
+
});
|
|
262
|
+
// 在列表位置插入 paragraph
|
|
263
|
+
Transforms.insertNodes(this.editor, {
|
|
264
|
+
type: 'paragraph',
|
|
265
|
+
children: [
|
|
266
|
+
{
|
|
267
|
+
text: ''
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}, {
|
|
271
|
+
at: listPath1,
|
|
272
|
+
select: true
|
|
273
|
+
});
|
|
274
|
+
} else {
|
|
275
|
+
// 列表还有前面的 items,保持列表
|
|
276
|
+
// 在列表后插入 paragraph
|
|
277
|
+
var insertPath = Path.next(listPath1);
|
|
225
278
|
Transforms.insertNodes(this.editor, {
|
|
226
|
-
type:
|
|
227
|
-
children:
|
|
279
|
+
type: 'paragraph',
|
|
280
|
+
children: [
|
|
281
|
+
{
|
|
282
|
+
text: ''
|
|
283
|
+
}
|
|
284
|
+
]
|
|
228
285
|
}, {
|
|
229
|
-
at:
|
|
286
|
+
at: insertPath,
|
|
287
|
+
select: true
|
|
230
288
|
});
|
|
231
289
|
}
|
|
232
290
|
}
|
|
@@ -8,5 +8,19 @@ export declare class TabKey {
|
|
|
8
8
|
constructor(editor: Editor);
|
|
9
9
|
run(e: React.KeyboardEvent): void;
|
|
10
10
|
private tableCell;
|
|
11
|
+
/**
|
|
12
|
+
* 处理列表项的 Tab/Shift+Tab 键
|
|
13
|
+
*
|
|
14
|
+
* Tab: 增加缩进(将当前 list-item 移动到前一个 list-item 的子列表中)
|
|
15
|
+
* Shift+Tab: 减少缩进(将当前 list-item 提升一级)
|
|
16
|
+
*/
|
|
11
17
|
private listItem;
|
|
18
|
+
/**
|
|
19
|
+
* 增加缩进:将当前 list-item 移动到前一个 list-item 的子列表中
|
|
20
|
+
*/
|
|
21
|
+
private indentListItem;
|
|
22
|
+
/**
|
|
23
|
+
* 减少缩进:将当前 list-item 提升一级
|
|
24
|
+
*/
|
|
25
|
+
private outdentListItem;
|
|
12
26
|
}
|
|
@@ -89,6 +89,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
89
89
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
90
90
|
}
|
|
91
91
|
import { Editor, Element, Node, Path, Point, Range, Text, Transforms } from "slate";
|
|
92
|
+
import { isListType, getListType } from "../withListsPlugin";
|
|
92
93
|
/**
|
|
93
94
|
* TabKey 类用于处理编辑器中的 Tab 键事件。
|
|
94
95
|
*/ export var TabKey = /*#__PURE__*/ function() {
|
|
@@ -176,7 +177,7 @@ import { Editor, Element, Node, Path, Point, Range, Text, Transforms } from "sla
|
|
|
176
177
|
} else if (e.shiftKey) {
|
|
177
178
|
var _Editor_nodes3 = _sliced_to_array(Editor.nodes(this.editor, {
|
|
178
179
|
match: function(n) {
|
|
179
|
-
return n
|
|
180
|
+
return isListType(n);
|
|
180
181
|
}
|
|
181
182
|
}), 1), node1 = _Editor_nodes3[0];
|
|
182
183
|
if (node1) {
|
|
@@ -232,102 +233,128 @@ import { Editor, Element, Node, Path, Point, Range, Text, Transforms } from "sla
|
|
|
232
233
|
},
|
|
233
234
|
{
|
|
234
235
|
key: "listItem",
|
|
235
|
-
value:
|
|
236
|
+
value: /**
|
|
237
|
+
* 处理列表项的 Tab/Shift+Tab 键
|
|
238
|
+
*
|
|
239
|
+
* Tab: 增加缩进(将当前 list-item 移动到前一个 list-item 的子列表中)
|
|
240
|
+
* Shift+Tab: 减少缩进(将当前 list-item 提升一级)
|
|
241
|
+
*/ function listItem(node, e) {
|
|
242
|
+
var listItemPath = Path.parent(node[1]);
|
|
243
|
+
var listItem = Node.get(this.editor, listItemPath);
|
|
244
|
+
if (!Element.isElement(listItem) || listItem.type !== 'list-item') {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
var listPath = Path.parent(listItemPath);
|
|
248
|
+
var list = Node.get(this.editor, listPath);
|
|
249
|
+
if (!isListType(list)) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
236
252
|
if (e.shiftKey) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
var
|
|
270
|
-
Transforms.
|
|
271
|
-
at:
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
});
|
|
276
|
-
var nextPath = Path.next(li[1]);
|
|
277
|
-
var lastIndex = nextPath.slice().pop();
|
|
278
|
-
Transforms.liftNodes(this.editor, {
|
|
279
|
-
at: {
|
|
280
|
-
anchor: {
|
|
281
|
-
path: nextPath,
|
|
282
|
-
offset: 1
|
|
283
|
-
},
|
|
284
|
-
focus: {
|
|
285
|
-
path: nextPath.slice(0, -1).concat([
|
|
286
|
-
lastIndex + move
|
|
287
|
-
]),
|
|
288
|
-
offset: 0
|
|
289
|
-
}
|
|
290
|
-
}
|
|
253
|
+
// Shift+Tab: 减少缩进
|
|
254
|
+
return this.outdentListItem(listItemPath, listPath);
|
|
255
|
+
} else {
|
|
256
|
+
// Tab: 增加缩进
|
|
257
|
+
return this.indentListItem(listItemPath);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
key: "indentListItem",
|
|
263
|
+
value: /**
|
|
264
|
+
* 增加缩进:将当前 list-item 移动到前一个 list-item 的子列表中
|
|
265
|
+
*/ function indentListItem(listItemPath) {
|
|
266
|
+
// 检查是否是第一个 list-item(第一行按 Tab 应该无效)
|
|
267
|
+
if (!Path.hasPrevious(listItemPath)) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
var previousListItemPath = Path.previous(listItemPath);
|
|
271
|
+
var previousListItem = Node.get(this.editor, previousListItemPath);
|
|
272
|
+
if (!Element.isElement(previousListItem) || previousListItem.type !== 'list-item') {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
// 检查前一个 list-item 的最后一个子节点是否为列表
|
|
276
|
+
var lastChildIndex = previousListItem.children.length - 1;
|
|
277
|
+
var lastChild = previousListItem.children[lastChildIndex];
|
|
278
|
+
if (isListType(lastChild)) {
|
|
279
|
+
// 如果最后一个子节点是列表,直接将当前项移动到该列表中
|
|
280
|
+
var targetListPath = _to_consumable_array(previousListItemPath).concat([
|
|
281
|
+
lastChildIndex
|
|
282
|
+
]);
|
|
283
|
+
var targetList = Node.get(this.editor, targetListPath);
|
|
284
|
+
if (isListType(targetList)) {
|
|
285
|
+
var targetIndex = targetList.children.length;
|
|
286
|
+
Transforms.moveNodes(this.editor, {
|
|
287
|
+
at: listItemPath,
|
|
288
|
+
to: _to_consumable_array(targetListPath).concat([
|
|
289
|
+
targetIndex
|
|
290
|
+
])
|
|
291
291
|
});
|
|
292
|
+
return true;
|
|
292
293
|
}
|
|
293
|
-
return true;
|
|
294
294
|
} else {
|
|
295
|
-
|
|
296
|
-
var
|
|
297
|
-
|
|
295
|
+
// 如果最后一个子节点不是列表,需要创建一个新的列表
|
|
296
|
+
var listType = getListType();
|
|
297
|
+
var currentListItem = Node.get(this.editor, listItemPath);
|
|
298
|
+
// 先创建新的列表,包含当前 list-item
|
|
299
|
+
var newList = {
|
|
300
|
+
type: listType,
|
|
301
|
+
children: [
|
|
302
|
+
currentListItem
|
|
303
|
+
]
|
|
304
|
+
};
|
|
305
|
+
// 将当前项移动到新列表中
|
|
306
|
+
Transforms.removeNodes(this.editor, {
|
|
307
|
+
at: listItemPath
|
|
308
|
+
});
|
|
309
|
+
Transforms.insertNodes(this.editor, newList, {
|
|
310
|
+
at: _to_consumable_array(previousListItemPath).concat([
|
|
311
|
+
previousListItem.children.length
|
|
312
|
+
])
|
|
313
|
+
});
|
|
314
|
+
// 更新路径,因为节点已移动
|
|
315
|
+
var newListPath = _to_consumable_array(previousListItemPath).concat([
|
|
316
|
+
previousListItem.children.length
|
|
317
|
+
]);
|
|
318
|
+
var newListItemPath = _to_consumable_array(newListPath).concat([
|
|
319
|
+
0
|
|
320
|
+
]);
|
|
321
|
+
// 选中新位置
|
|
322
|
+
Transforms.select(this.editor, Editor.start(this.editor, newListItemPath));
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
key: "outdentListItem",
|
|
330
|
+
value: /**
|
|
331
|
+
* 减少缩进:将当前 list-item 提升一级
|
|
332
|
+
*/ function outdentListItem(listItemPath, listPath) {
|
|
333
|
+
// 检查当前 list 的父节点
|
|
334
|
+
var listParent = Editor.parent(this.editor, listPath);
|
|
335
|
+
// 如果父节点是 list-item,说明在嵌套列表中,可以提升
|
|
336
|
+
if (Element.isElement(listParent[0]) && listParent[0].type === 'list-item') {
|
|
337
|
+
var parentListItemPath = listParent[1];
|
|
338
|
+
// 检查是否是父列表的第一个 list-item
|
|
339
|
+
var isFirstInParentList = !Path.hasPrevious(listPath);
|
|
340
|
+
if (isFirstInParentList && !Path.hasPrevious(parentListItemPath)) {
|
|
341
|
+
// 如果是最顶层的第一个项,不能提升
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
// 使用 liftNodes 提升当前 list-item
|
|
345
|
+
Transforms.liftNodes(this.editor, {
|
|
346
|
+
at: listItemPath
|
|
347
|
+
});
|
|
348
|
+
// 如果提升后,原列表为空,需要删除空列表
|
|
349
|
+
var updatedList = Node.get(this.editor, listPath);
|
|
350
|
+
if (isListType(updatedList) && updatedList.children.length === 0) {
|
|
298
351
|
Transforms.removeNodes(this.editor, {
|
|
299
|
-
at:
|
|
300
|
-
});
|
|
301
|
-
var pre = Path.previous(listItem[1]);
|
|
302
|
-
var _Node_children = _sliced_to_array(Node.children(this.editor, pre, {
|
|
303
|
-
reverse: true
|
|
304
|
-
}), 1), next = _Node_children[0];
|
|
305
|
-
Transforms.insertNodes(this.editor, {
|
|
306
|
-
type: 'list',
|
|
307
|
-
order: list[0].order,
|
|
308
|
-
task: list[0].task,
|
|
309
|
-
children: [
|
|
310
|
-
{
|
|
311
|
-
type: 'list-item',
|
|
312
|
-
checked: Node.get(this.editor, pre).checked,
|
|
313
|
-
children: [
|
|
314
|
-
{
|
|
315
|
-
type: 'paragraph',
|
|
316
|
-
children: [
|
|
317
|
-
{
|
|
318
|
-
text: ''
|
|
319
|
-
}
|
|
320
|
-
]
|
|
321
|
-
}
|
|
322
|
-
]
|
|
323
|
-
}
|
|
324
|
-
]
|
|
325
|
-
}, {
|
|
326
|
-
at: Path.next(next[1]),
|
|
327
|
-
select: true
|
|
352
|
+
at: listPath
|
|
328
353
|
});
|
|
329
|
-
return true;
|
|
330
354
|
}
|
|
355
|
+
return true;
|
|
356
|
+
} else {
|
|
357
|
+
// 已经是最顶层,不能提升
|
|
331
358
|
return false;
|
|
332
359
|
}
|
|
333
360
|
}
|
|
@@ -1 +1,9 @@
|
|
|
1
1
|
export * from './withMarkdown';
|
|
2
|
+
export * from './withInlineNodes';
|
|
3
|
+
export * from './withVoidNodes';
|
|
4
|
+
export * from './withCardPlugin';
|
|
5
|
+
export * from './withLinkAndMediaPlugin';
|
|
6
|
+
export * from './withListsPlugin';
|
|
7
|
+
export * from './withSchemaPlugin';
|
|
8
|
+
export * from './withCodeTagPlugin';
|
|
9
|
+
export * from './utils';
|
|
@@ -1 +1,9 @@
|
|
|
1
1
|
export * from "./withMarkdown";
|
|
2
|
+
export * from "./withInlineNodes";
|
|
3
|
+
export * from "./withVoidNodes";
|
|
4
|
+
export * from "./withCardPlugin";
|
|
5
|
+
export * from "./withLinkAndMediaPlugin";
|
|
6
|
+
export * from "./withListsPlugin";
|
|
7
|
+
export * from "./withSchemaPlugin";
|
|
8
|
+
export * from "./withCodeTagPlugin";
|
|
9
|
+
export * from "./utils";
|
|
@@ -3,23 +3,28 @@ export declare const ELEMENT_TAGS: {
|
|
|
3
3
|
BLOCKQUOTE: () => {
|
|
4
4
|
type: string;
|
|
5
5
|
};
|
|
6
|
-
H1: () => {
|
|
6
|
+
H1: (el: HTMLElement) => {
|
|
7
|
+
align?: string | undefined;
|
|
7
8
|
type: string;
|
|
8
9
|
level: number;
|
|
9
10
|
};
|
|
10
|
-
H2: () => {
|
|
11
|
+
H2: (el: HTMLElement) => {
|
|
12
|
+
align?: string | undefined;
|
|
11
13
|
type: string;
|
|
12
14
|
level: number;
|
|
13
15
|
};
|
|
14
|
-
H3: () => {
|
|
16
|
+
H3: (el: HTMLElement) => {
|
|
17
|
+
align?: string | undefined;
|
|
15
18
|
type: string;
|
|
16
19
|
level: number;
|
|
17
20
|
};
|
|
18
|
-
H4: () => {
|
|
21
|
+
H4: (el: HTMLElement) => {
|
|
22
|
+
align?: string | undefined;
|
|
19
23
|
type: string;
|
|
20
24
|
level: number;
|
|
21
25
|
};
|
|
22
|
-
H5: () => {
|
|
26
|
+
H5: (el: HTMLElement) => {
|
|
27
|
+
align?: string | undefined;
|
|
23
28
|
type: string;
|
|
24
29
|
level: number;
|
|
25
30
|
};
|
|
@@ -51,7 +56,8 @@ export declare const ELEMENT_TAGS: {
|
|
|
51
56
|
type: string;
|
|
52
57
|
order: boolean;
|
|
53
58
|
};
|
|
54
|
-
P: () => {
|
|
59
|
+
P: (el: HTMLElement) => {
|
|
60
|
+
align?: string | undefined;
|
|
55
61
|
type: string;
|
|
56
62
|
};
|
|
57
63
|
PRE: () => {
|