JSPM

@lexical/react

0.37.1-nightly.20251022.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1269011
  • Score
    100M100P100Q182306F
  • License MIT

This package provides Lexical components and hooks for React applications.

Package Exports

  • @lexical/react/ExtensionComponent
  • @lexical/react/ExtensionComponent.js
  • @lexical/react/LexicalAutoEmbedPlugin
  • @lexical/react/LexicalAutoEmbedPlugin.js
  • @lexical/react/LexicalAutoFocusPlugin
  • @lexical/react/LexicalAutoFocusPlugin.js
  • @lexical/react/LexicalAutoLinkPlugin
  • @lexical/react/LexicalAutoLinkPlugin.js
  • @lexical/react/LexicalBlockWithAlignableContents
  • @lexical/react/LexicalBlockWithAlignableContents.js
  • @lexical/react/LexicalCharacterLimitPlugin
  • @lexical/react/LexicalCharacterLimitPlugin.js
  • @lexical/react/LexicalCheckListPlugin
  • @lexical/react/LexicalCheckListPlugin.js
  • @lexical/react/LexicalClearEditorPlugin
  • @lexical/react/LexicalClearEditorPlugin.js
  • @lexical/react/LexicalClickableLinkPlugin
  • @lexical/react/LexicalClickableLinkPlugin.js
  • @lexical/react/LexicalCollaborationContext
  • @lexical/react/LexicalCollaborationContext.js
  • @lexical/react/LexicalCollaborationPlugin
  • @lexical/react/LexicalCollaborationPlugin.js
  • @lexical/react/LexicalComposer
  • @lexical/react/LexicalComposer.js
  • @lexical/react/LexicalComposerContext
  • @lexical/react/LexicalComposerContext.js
  • @lexical/react/LexicalContentEditable
  • @lexical/react/LexicalContentEditable.js
  • @lexical/react/LexicalContextMenuPlugin
  • @lexical/react/LexicalContextMenuPlugin.js
  • @lexical/react/LexicalDecoratorBlockNode
  • @lexical/react/LexicalDecoratorBlockNode.js
  • @lexical/react/LexicalDraggableBlockPlugin
  • @lexical/react/LexicalDraggableBlockPlugin.js
  • @lexical/react/LexicalEditorRefPlugin
  • @lexical/react/LexicalEditorRefPlugin.js
  • @lexical/react/LexicalErrorBoundary
  • @lexical/react/LexicalErrorBoundary.js
  • @lexical/react/LexicalExtensionComposer
  • @lexical/react/LexicalExtensionComposer.js
  • @lexical/react/LexicalHashtagPlugin
  • @lexical/react/LexicalHashtagPlugin.js
  • @lexical/react/LexicalHistoryPlugin
  • @lexical/react/LexicalHistoryPlugin.js
  • @lexical/react/LexicalHorizontalRuleNode
  • @lexical/react/LexicalHorizontalRuleNode.js
  • @lexical/react/LexicalHorizontalRulePlugin
  • @lexical/react/LexicalHorizontalRulePlugin.js
  • @lexical/react/LexicalLinkPlugin
  • @lexical/react/LexicalLinkPlugin.js
  • @lexical/react/LexicalListPlugin
  • @lexical/react/LexicalListPlugin.js
  • @lexical/react/LexicalMarkdownShortcutPlugin
  • @lexical/react/LexicalMarkdownShortcutPlugin.js
  • @lexical/react/LexicalNestedComposer
  • @lexical/react/LexicalNestedComposer.js
  • @lexical/react/LexicalNodeContextMenuPlugin
  • @lexical/react/LexicalNodeContextMenuPlugin.js
  • @lexical/react/LexicalNodeEventPlugin
  • @lexical/react/LexicalNodeEventPlugin.js
  • @lexical/react/LexicalNodeMenuPlugin
  • @lexical/react/LexicalNodeMenuPlugin.js
  • @lexical/react/LexicalOnChangePlugin
  • @lexical/react/LexicalOnChangePlugin.js
  • @lexical/react/LexicalPlainTextPlugin
  • @lexical/react/LexicalPlainTextPlugin.js
  • @lexical/react/LexicalRichTextPlugin
  • @lexical/react/LexicalRichTextPlugin.js
  • @lexical/react/LexicalSelectionAlwaysOnDisplay
  • @lexical/react/LexicalSelectionAlwaysOnDisplay.js
  • @lexical/react/LexicalTabIndentationPlugin
  • @lexical/react/LexicalTabIndentationPlugin.js
  • @lexical/react/LexicalTableOfContentsPlugin
  • @lexical/react/LexicalTableOfContentsPlugin.js
  • @lexical/react/LexicalTablePlugin
  • @lexical/react/LexicalTablePlugin.js
  • @lexical/react/LexicalTreeView
  • @lexical/react/LexicalTreeView.js
  • @lexical/react/LexicalTypeaheadMenuPlugin
  • @lexical/react/LexicalTypeaheadMenuPlugin.js
  • @lexical/react/ReactExtension
  • @lexical/react/ReactExtension.js
  • @lexical/react/ReactPluginHostExtension
  • @lexical/react/ReactPluginHostExtension.js
  • @lexical/react/ReactProviderExtension
  • @lexical/react/ReactProviderExtension.js
  • @lexical/react/TreeViewExtension
  • @lexical/react/TreeViewExtension.js
  • @lexical/react/useExtensionComponent
  • @lexical/react/useExtensionComponent.js
  • @lexical/react/useLexicalEditable
  • @lexical/react/useLexicalEditable.js
  • @lexical/react/useLexicalIsTextContentEmpty
  • @lexical/react/useLexicalIsTextContentEmpty.js
  • @lexical/react/useLexicalNodeSelection
  • @lexical/react/useLexicalNodeSelection.js
  • @lexical/react/useLexicalSubscription
  • @lexical/react/useLexicalSubscription.js
  • @lexical/react/useLexicalTextEntity
  • @lexical/react/useLexicalTextEntity.js

Readme

@lexical/react

This package provides a set of components and hooks for Lexical that allow for text editing in React applications.

Getting started

Install lexical and @lexical/react:

npm install --save lexical @lexical/react

Below is an example of a basic plain text editor using lexical and @lexical/react (try it yourself).

import {$getRoot, $getSelection} from 'lexical';
import {useEffect} from 'react';

import {LexicalComposer} from '@lexical/react/LexicalComposer';
import {PlainTextPlugin} from '@lexical/react/LexicalPlainTextPlugin';
import {ContentEditable} from '@lexical/react/LexicalContentEditable';
import {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin';
import {OnChangePlugin} from '@lexical/react/LexicalOnChangePlugin';
import {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';

const theme = {
  // Theme styling goes here
  ...
}

// When the editor changes, you can get notified via the
// LexicalOnChangePlugin!
function onChange(editorState) {
  editorState.read(() => {
    // Read the contents of the EditorState here.
    const root = $getRoot();
    const selection = $getSelection();

    console.log(root, selection);
  });
}

// Lexical React plugins are React components, which makes them
// highly composable. Furthermore, you can lazy load plugins if
// desired, so you don't pay the cost for plugins until you
// actually use them.
function MyCustomAutoFocusPlugin() {
  const [editor] = useLexicalComposerContext();

  

useEffect(() => {
    // Focus the editor when the effect fires!
    editor.focus();
  }, [editor]);

  return null;
}

// Catch any errors that occur during Lexical updates and log them
// or throw them as needed. If you don't throw them, Lexical will
// try to recover gracefully without losing user data.
function onError(error) {
  throw error;
}

function Editor() {
  const initialConfig = {
    namespace: 'MyEditor',
    theme,
    onError,
  };

return (
    <LexicalComposer initialConfig={initialConfig}>
      <PlainTextPlugin
        contentEditable={
          <ContentEditable
            aria-placeholder={'Enter some text...'}
            placeholder={<div>Enter some text...</div>}
          />
        }
      />
      <OnChangePlugin onChange={onChange} />
      <HistoryPlugin />
      <MyCustomAutoFocusPlugin />
    </LexicalComposer>
  );
}