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 { PluginConstructor, SystemSpec, Realm, RealmNode, TypedRealm, ValueForKey, SystemKeys, ValuesForKeys, SystemDict } from '../../gurx';
///
import type { LexicalEditor, Klass, LexicalNode, TextFormatType, ElementNode, DecoratorNode, RangeSelection } from 'lexical';
type RectData = Pick;
type InactiveLinkDialog = {
type: 'inactive';
rectangle?: undefined;
linkNodeKey?: undefined;
};
type PreviewLinkDialog = {
type: 'preview';
url: string;
linkNodeKey: string;
rectangle: RectData;
};
type EditLinkDialog = {
type: 'edit';
initialUrl: string;
initialTitle?: string;
url: string;
title: string;
linkNodeKey: string;
rectangle: RectData;
};
type LinkDialogPluginParamsType = {
LinkDialog?: () => JSX.Element;
linkAutocompleteSuggestions?: string[];
};
export declare const
/** @internal */
linkDialogPlugin: 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, [{ activeEditor, currentSelection, createActiveEditorSubscription }]: [{
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;
}>;
}]) => {
dialogState: RealmNode;
onWindowChange: RealmNode;
linkDialogState: RealmNode;
updateLink: RealmNode<{
url: string;
title: string;
}>;
switchFromPreviewToLinkEdit: RealmNode;
cancelLinkEdit: RealmNode;
removeLink: RealmNode;
openLinkEditDialog: RealmNode;
applyLinkChanges: RealmNode;
linkAutocompleteSuggestions: RealmNode;
}>, LinkDialogPluginParamsType>,
/** @internal */
linkDialogPluginHooks: {
useRealmContext: () => TypedRealm<{
dialogState: RealmNode;
onWindowChange: RealmNode;
linkDialogState: RealmNode;
updateLink: RealmNode<{
url: string;
title: string;
}>;
switchFromPreviewToLinkEdit: RealmNode;
cancelLinkEdit: RealmNode;
removeLink: RealmNode;
openLinkEditDialog: RealmNode;
applyLinkChanges: RealmNode;
linkAutocompleteSuggestions: 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<{
dialogState: RealmNode;
onWindowChange: RealmNode;
linkDialogState: RealmNode;
updateLink: RealmNode<{
url: string;
title: string;
}>;
switchFromPreviewToLinkEdit: RealmNode;
cancelLinkEdit: RealmNode;
removeLink: RealmNode;
openLinkEditDialog: RealmNode;
applyLinkChanges: RealmNode;
linkAutocompleteSuggestions: 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: ;
onWindowChange: RealmNode;
linkDialogState: RealmNode;
updateLink: RealmNode<{
url: string;
title: string;
}>;
switchFromPreviewToLinkEdit: RealmNode;
cancelLinkEdit: RealmNode;
removeLink: RealmNode;
openLinkEditDialog: RealmNode;
applyLinkChanges: RealmNode;
linkAutocompleteSuggestions: 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