Reset Node
components/demo.tsx
'use client';
import React from 'react';
import { Plate } from '@udecode/plate-common/react';
import { editorPlugins } from '@/components/editor/plugins/editor-plugins';
import { useCreateEditor } from '@/components/editor/use-create-editor';
import { Editor, EditorContainer } from '@/components/plate-ui/editor';
import { DEMO_VALUES } from './values/demo-values';
export default function Demo({ id }: { id: string }) {
const editor = useCreateEditor({
plugins: [...editorPlugins],
value: DEMO_VALUES[id],
});
return (
<Plate editor={editor}>
<EditorContainer variant="demo">
<Editor />
</EditorContainer>
</Plate>
);
}
Installation
npm install @udecode/plate-reset-node
Usage
// ...
import {
isBlockAboveEmpty,
isSelectionAtBlockStart,
} from '@udecode/plate-common';
import { ResetNodePlugin } from '@udecode/plate-reset-node/react';
const resetBlockTypesCommonRule = {
types: [BlockquotePlugin.key, TodoListPlugin.key],
defaultType: ParagraphPlugin.key,
};
const resetBlockTypesCodeBlockRule = {
types: [CodeBlockPlugin.key],
defaultType: ParagraphPlugin.key,
onReset: unwrapCodeBlock,
};
const plugins = [
// ...otherPlugins,
ResetNodePlugin.configure({
options: {
rules: [
{
...resetBlockTypesCommonRule,
hotkey: 'Enter',
predicate: isBlockAboveEmpty,
},
{
...resetBlockTypesCommonRule,
hotkey: 'Backspace',
predicate: isSelectionAtBlockStart,
},
{
...resetBlockTypesCodeBlockRule,
hotkey: 'Enter',
predicate: isCodeBlockEmpty,
},
{
...resetBlockTypesCodeBlockRule,
hotkey: 'Backspace',
predicate: isSelectionAtCodeBlockStart,
},
],
},
}),
];
Plugins
ResetNodePlugin
Options
Collapse all
An array of rules which govern how the node reset will be performed. Each rule includes:
Whether to disable reset for the first block in the editor.
Whether to disable the reset operation for the entire editor.