@lexical/react
Version:
This package provides Lexical components and hooks for React applications.
57 lines (48 loc) • 1.5 kB
text/typescript
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';
import {
$createHorizontalRuleNode,
INSERT_HORIZONTAL_RULE_COMMAND,
} from '@lexical/react/LexicalHorizontalRuleNode';
import {$insertNodeToNearestRoot} from '@lexical/utils';
import {
$getSelection,
$isRangeSelection,
COMMAND_PRIORITY_EDITOR,
} from 'lexical';
import {useEffect} from 'react';
/**
* This is a legacy plugin. When building an editor with the extension API,
* configure {@link HorizontalRuleExtension} instead.
*
* @deprecated A pure Lexical implementation is available in `@lexical/extension`
* as {@link HorizontalRuleExtension}
*/
export function HorizontalRulePlugin(): null {
const [editor] = useLexicalComposerContext();
useEffect(() => {
return editor.registerCommand(
INSERT_HORIZONTAL_RULE_COMMAND,
type => {
const selection = $getSelection();
if (!$isRangeSelection(selection)) {
return false;
}
const focusNode = selection.focus.getNode();
if (focusNode !== null) {
const horizontalRuleNode = $createHorizontalRuleNode();
$insertNodeToNearestRoot(horizontalRuleNode);
}
return true;
},
COMMAND_PRIORITY_EDITOR,
);
}, [editor]);
return null;
}