Select
Customize selection and deletion behavior for specific node types.
安装
npm install @udecode/plate-select
用法
import { DeletePlugin, SelectOnBackspacePlugin } from '@udecode/plate-select';
const plugins = [
// ...otherPlugins,
SelectOnBackspacePlugin.configure({
options: {
query: {
allow: ['img', 'hr'],
},
},
}),
DeletePlugin,
];
插件
DeletePlugin
在按删除键(向前删除)时,如果匹配查询选项,则删除空块的插件。
Options
Collapse all
- 默认:
{ allow: ['p'] }
查询选项,用于过滤哪些空块可以被删除。
例如:
const plugins = [
DeletePlugin.configure({
options: {
// Only remove empty paragraphs and blockquotes
query: {
allow: ['p', 'blockquote'],
},
},
}),
];
插件将:
- 检查当前块是否为空并匹配查询选项
- 如果为真:删除整个块
- 如果为假:使用默认删除行为
// Empty paragraph followed by code block
<editor>
<p>
<cursor />
</p>
<codeblock>
<codeline>test</codeline>
</codeblock>
</editor>
// Pressing delete will remove the empty paragraph instead of nothing
<editor>
<codeblock>
<codeline>test</codeline>
</codeblock>
</editor>
SelectOnBackspacePlugin
在按退格键时选择节点而不是删除它们的插件。适用于图像或水平规则等节点。
Options
Collapse all
- 默认:
false
查询选项,用于确定哪些节点在按退格键时触发选择。
是否在按退格键时删除空节点。
例如:
const plugins = [
SelectOnBackspacePlugin.configure({
options: {
// Select these nodes instead of deleting them
query: {
allow: ['img', 'hr'],
},
// Remove current node if empty
removeNodeIfEmpty: true,
},
}),
];
插件将:
- 当按退格键在块的开头时:
- 检查前一个节点是否匹配查询选项
- 如果为真:
- 选择前一个节点而不是删除它
- 如果为空,则删除当前节点
- 如果为假:使用默认退格行为
// 图片后的空段落
<editor>
<img src="..." />
<p>
<cursor />
</p>
</editor>
// 按退格键将选择图片而不是删除它
<editor>
<img src="..." selected />
<p></p>
</editor>
// 如果 removeNodeIfEmpty 为 true,空段落也会被删除
<editor>
<img src="..." selected />
</editor>