import type { IconKey } from '../core/Icon'; import type { RefObject, ReactNode, ComponentType } from 'react'; import type { Options } from 'mdast-util-to-markdown'; import type { Config } from 'mdast-util-from-markdown/lib'; import type { Extension } from 'micromark-util-types'; import type { Content } from 'mdast'; import type { MdastImportVisitor, LexicalVisitor } from '../..'; import type { EditorSubscription, EditorInFocus, BlockType } from '../core'; import type { InitialEditorStateType } from '@lexical/react/LexicalComposer'; import type { JsxComponentDescriptor } from '../jsx'; import type { HistoryState } from '@lexical/history'; import type { LexicalEditor, RangeSelection, Klass, LexicalNode, TextFormatType, ElementNode, DecoratorNode } from 'lexical'; import type { SystemSpec, Realm, RealmNode, PluginConstructor, TypedRealm, ValueForKey, SystemKeys, ValuesForKeys, SystemDict } from '../../gurx'; /// declare const ALL_HEADING_LEVELS: readonly [1, 2, 3, 4, 5, 6]; export type HEADING_LEVEL = (typeof ALL_HEADING_LEVELS)[number]; /** * @internal */ export declare const headingsSystem: SystemSpec<[SystemSpec<[], (r: Realm) => { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }>], (r: Realm, [{ createRootEditorSubscription, convertSelectionToNode }]: [{ activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }]) => { allowedHeadingLevels: RealmNode; }>; /** * The parameters of the `headingsPlugin`. */ interface HeadingsPluginParams { /** * Allows you to limit the headings used in the editor. Affects the block type dropdown and the keyboard shortcuts. * @default [1, 2, 3, 4, 5, 6] */ allowedHeadingLevels?: ReadonlyArray; } /** * @internal */ export declare const headingsPlugin: PluginConstructor { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }>], (r: Realm, [{ createRootEditorSubscription, convertSelectionToNode }]: [{ activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }]) => { allowedHeadingLevels: RealmNode; }>, HeadingsPluginParams>, headingsPluginHooks: { useRealmContext: () => TypedRealm<{ allowedHeadingLevels: RealmNode; } & { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }>; useEmitter: (key: K, callback: (value: ValueForKey<{ allowedHeadingLevels: RealmNode; } & { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }, K>) => void) => void; useEmitterValues: ; } & { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }>>(...keys: K_1) => ValuesForKeys<{ allowedHeadingLevels: RealmNode; } & { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }, K_1>; usePubKeys: () => (values: SystemDict<{ allowedHeadingLevels: RealmNode; } & { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }>) => void; usePublisher: (key: K_2) => (value: ValueForKey<{ allowedHeadingLevels: RealmNode; } & { activeEditor: RealmNode; inFocus: RealmNode; historyState: RealmNode; currentSelection: RealmNode; jsxIsAvailable: RealmNode; jsxComponentDescriptors: RealmNode; initialRootEditorState: RealmNode; rootEditor: RealmNode; createRootEditorSubscription: RealmNode; createActiveEditorSubscription: RealmNode; importVisitors: RealmNode[]>; syntaxExtensions: RealmNode; mdastExtensions: RealmNode<(Partial | Partial[])[] | null | undefined>; usedLexicalNodes: RealmNode[]>; addImportVisitor: RealmNode>; addLexicalNode: RealmNode>; addSyntaxExtension: RealmNode; addMdastExtension: RealmNode | Partial[]>; toMarkdownExtensions: RealmNode; toMarkdownOptions: RealmNode; addToMarkdownExtension: RealmNode; addExportVisitor: RealmNode; exportVisitors: RealmNode; initialMarkdown: RealmNode; setMarkdown: RealmNode; markdown: RealmNode; markdownSignal: RealmNode; editorRootElementRef: RealmNode | null>; contentEditableClassName: RealmNode; placeholder: RealmNode; autoFocus: RealmNode; readOnly: RealmNode; composerChildren: RealmNode[]>; addComposerChild: RealmNode>; topAreaChildren: RealmNode[]>; addTopAreaChild: RealmNode>; nestedEditorChildren: RealmNode[]>; addNestedEditorChild: RealmNode>; editorWrappers: RealmNode[]>; addEditorWrapper: RealmNode>; currentFormat: RealmNode; editorInFocus: RealmNode; applyFormat: RealmNode; currentBlockType: RealmNode; applyBlockType: RealmNode; convertSelectionToNode: RealmNode<() => ElementNode>; insertDecoratorNode: RealmNode<() => DecoratorNode>; onBlur: RealmNode; iconComponentFor: RealmNode<(name: IconKey) => ReactNode>; markdownProcessingError: RealmNode<{ error: string; source: string; } | null>; markdownErrorSignal: RealmNode<{ error: string; source: string; }>; }, K_2>) => void; }; export {};