Skip to content

Commit 8097086

Browse files
committed
fix: wrap node behavior
1 parent 755cd9e commit 8097086

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

packages/utils/src/ref.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const getAboveNode = (
2424
) => {
2525
// 这里与`getBlockNode`最大区别是会有`self`的判断
2626
// 这是很重要的行为 特别是在类似于`Normalizer`的场景中
27+
// https://github.com/ianstormtaylor/slate/blob/25be3b/packages/slate/src/interfaces/editor.ts#L334
2728
const { at = editor.selection, match, self = true } = options || {};
2829
if (!at) return void 0;
2930
const path = Editor.path(editor, at);

packages/utils/src/set.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,15 @@ export const setBlockNode = (
1616
const { at: location, key } = options;
1717
if (!node) {
1818
// 注意`setNodes Match`的查找顺序可能与直觉不一致 顺序是由顶`Editor`至底`Node`
19-
// https://github.com/ianstormtaylor/slate/blob/25be3b/packages/slate/src/transforms/node.ts#L565
2019
// 因此这里需要使用`Editor.above`实现更精确的查找 再将`node`直接传入来精确变换
21-
// https://github.com/ianstormtaylor/slate/blob/25be3b/packages/slate/src/interfaces/editor.ts#L334
2220
const above = getAboveNode(editor, {
2321
at: location,
2422
match: node => isBlock(editor, node) && (key ? existKey(node, key) : true),
2523
});
2624
if (above && above.node) node = above.node as BlockElement;
2725
}
2826
if (!node) return void 0;
27+
// https://github.com/ianstormtaylor/slate/blob/25be3b/packages/slate/src/transforms/node.ts#L565
2928
Transforms.setNodes(editor, config, { match: n => n === node, at: location });
3029
};
3130

@@ -92,10 +91,10 @@ export const setWrapNodes = (
9291
} = {}
9392
) => {
9493
const { at } = options;
95-
const config = { ...wrapConfig } as BlockElement;
9694
Editor.withoutNormalizing(editor, () => {
97-
Transforms.wrapNodes(editor, config, { match: n => isBlock(editor, n), at });
98-
setBlockNode(editor, itemConfig, { at });
95+
// 配合`Normalizer`在此处的规则是新建内层`Node`
96+
setBlockNode(editor, wrapConfig, { at });
97+
Transforms.wrapNodes(editor, itemConfig as BlockElement, { match: isText, at });
9998
});
10099
};
101100

0 commit comments

Comments
 (0)