UNPKG

@lexical/react

Version:

This package provides Lexical components and hooks for React applications.

85 lines (75 loc) 2.38 kB
/** * 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. * * @flow strict */ /** * LexicalReactPluginHostExtension */ import type { LexicalExtension, AnyLexicalExtension, LexicalEditor, LexicalExtensionOutput, LexicalCommand, ExtensionConfigBase, } from 'lexical'; import type {Signal} from '@lexical/extension'; import type {DecoratorComponentProps} from '@lexical/react/ReactExtension'; export type {DecoratorComponentProps}; type Container = DocumentFragment | Element; // TODO: Not sure how to import RootType from react-dom/client type Root = mixed; export interface HostMountCommandArg { root: Root; } export interface MountPluginCommandArg { key: string; element: React.Node | null; domNode?: Container | null; } declare export function mountReactExtensionComponent< Extension: AnyLexicalExtension, >( editor: LexicalEditor, opts: { extension: Extension; props: [LexicalExtensionOutput<Extension>] extends [ { // $FlowFixMe[unclear-type]: defined by user Component: infer OutputComponentType extends React.ComponentType<any>; }, ] ? React.PropsOf<OutputComponentType> | null : empty; } & Omit<MountPluginCommandArg, 'element'>, ): void; declare export function mountReactPluginComponent< P: {...} = {...}, >( editor: LexicalEditor, opts: { Component: React.ComponentType<P>; props: (P & {key?: null | void | React.Key}) | null; } & Omit<MountPluginCommandArg, 'element'>, ): void; declare export function mountReactPluginElement( editor: LexicalEditor, opts: MountPluginCommandArg, ): void; declare export function mountReactPluginHost( editor: LexicalEditor, container: Container, ): void; declare export var REACT_PLUGIN_HOST_MOUNT_ROOT_COMMAND: LexicalCommand<HostMountCommandArg>; declare export var REACT_PLUGIN_HOST_MOUNT_PLUGIN_COMMAND: LexicalCommand<MountPluginCommandArg>; declare export var ReactPluginHostExtension: LexicalExtension<ExtensionConfigBase, "@lexical/react/ReactPluginHost", { mountReactPlugin: (arg: MountPluginCommandArg) => void; mountReactPluginHost: (container: Container) => boolean; mountedPluginsStore: Signal<{ plugins: Map<string, MountPluginCommandArg>; }>; }, void>;