import { Mark, Node, TagParseRule } from "prosemirror-model"; import { Decoration, DecorationSource, EditorView, NodeView } from "prosemirror-view"; import { ReactEditorView } from "./ReactEditorView.js"; import { DOMNode } from "./dom.js"; declare global { interface Node { pmViewDesc?: ViewDesc; } } export type ViewMutationRecord = MutationRecord | { type: "selection"; target: DOMNode; }; export declare function sortViewDescs(a: ViewDesc, b: ViewDesc): number; export declare class ViewDesc { parent: ViewDesc | undefined; children: ViewDesc[]; getPos: () => number; dom: DOMNode; contentDOM: HTMLElement | null; dirty: number; node: Node | null; constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, dom: DOMNode, contentDOM: HTMLElement | null); matchesWidget(_widget: Decoration): boolean; matchesMark(_mark: Mark): boolean; matchesNode(_node: Node, _outerDeco: readonly Decoration[], _innerDeco: DecorationSource): boolean; matchesHack(nodeName: string): boolean; parseRule(): Omit | null; stopEvent(event: Event): boolean; get size(): number; get border(): number; destroy(): void; posBeforeChild(child: ViewDesc): number; get posBefore(): number; get posAtStart(): number; get posAfter(): number; get posAtEnd(): number; localPosFromDOM(dom: DOMNode, offset: number, bias: number): number; nearestDesc(dom: DOMNode): ViewDesc | undefined; nearestDesc(dom: DOMNode, onlyNodes: true): NodeViewDesc | undefined; getDesc(dom: DOMNode): ViewDesc | undefined; posFromDOM(dom: DOMNode, offset: number, bias: number): number; descAt(pos: number): ViewDesc | undefined; domFromPos(pos: number, side: number): { node: DOMNode; offset: number; atom?: number; }; parseRange(from: number, to: number, base?: number): { node: DOMNode; from: number; to: number; fromOffset: number; toOffset: number; }; emptyChildAt(side: number): boolean; domAfterPos(pos: number): DOMNode; setSelection(anchor: number, head: number, view: ReactEditorView, force?: boolean): void; ignoreMutation(mutation: ViewMutationRecord): boolean; get contentLost(): boolean | null; markDirty(from: number, to: number): void; markParentsDirty(): void; get domAtom(): boolean; get ignoreForCoords(): boolean; get ignoreForSelection(): boolean; } export declare class WidgetViewDesc extends ViewDesc { widget: Decoration; constructor(parent: ViewDesc | undefined, getPos: () => number, widget: Decoration, dom: DOMNode); matchesWidget(widget: Decoration): any; parseRule(): { ignore: boolean; }; stopEvent(event: Event): any; ignoreMutation(mutation: ViewMutationRecord): any; get domAtom(): boolean; get ignoreForSelection(): boolean; get side(): number; } export declare class CompositionViewDesc extends ViewDesc { textDOM: Text; text: string; constructor(parent: ViewDesc | undefined, getPos: () => number, dom: DOMNode, textDOM: Text, text: string); get size(): number; localPosFromDOM(dom: DOMNode, offset: number): number; domFromPos(pos: number): { node: Text; offset: number; }; ignoreMutation(mut: ViewMutationRecord): boolean; } export interface MarkView { dom: DOMNode; contentDOM?: HTMLElement | null; ignoreMutation?: (mutation: ViewMutationRecord) => boolean; destroy?: () => void; } export declare class MarkViewDesc extends ViewDesc { mark: Mark; spec: MarkView; constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, mark: Mark, dom: DOMNode, contentDOM: HTMLElement, spec: MarkView); parseRule(): { mark: string; attrs: import("prosemirror-model").Attrs; contentElement: HTMLElement; } | null; matchesMark(mark: Mark): boolean; markDirty(from: number, to: number): void; ignoreMutation(mutation: ViewMutationRecord): boolean; destroy(): void; } export declare class NodeViewDesc extends ViewDesc { node: Node; outerDeco: readonly Decoration[]; innerDeco: DecorationSource; nodeDOM: DOMNode; constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource, dom: DOMNode, contentDOM: HTMLElement | null, nodeDOM: DOMNode); parseRule(): Omit | null; matchesNode(node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource): boolean; get size(): number; get border(): 0 | 1; updateChildren(_view: EditorView, _pos: number): void; update(node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource, view: EditorView): boolean; updateInner(node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource, view: EditorView): void; updateOuterDeco(outerDeco: readonly Decoration[]): void; selectNode(): void; deselectNode(): void; get domAtom(): boolean; } export declare class TextViewDesc extends NodeViewDesc { constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource, dom: DOMNode, nodeDOM: DOMNode); parseRule(): { skip: any; }; update(_node: Node, _outerDeco: readonly Decoration[], _innerDeco: DecorationSource, _view: ReactEditorView): boolean; inParent(): boolean; domFromPos(pos: number): { node: globalThis.Node; offset: number; }; localPosFromDOM(dom: DOMNode, offset: number, bias: number): number; markDirty(from: number, to: number): void; get domAtom(): boolean; } export declare class TrailingHackViewDesc extends ViewDesc { parseRule(): { ignore: boolean; }; matchesHack(nodeName: string): boolean; get domAtom(): boolean; get ignoreForCoords(): boolean; } declare class CustomNodeViewDesc extends NodeViewDesc { readonly spec: NodeView; constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource, dom: DOMNode, contentDOM: HTMLElement | null, nodeDOM: DOMNode, spec: NodeView); update(node: Node, outerDeco: readonly Decoration[], innerDeco: DecorationSource, view: EditorView): boolean; selectNode(): void; deselectNode(): void; setSelection(anchor: number, head: number, view: ReactEditorView, force: boolean): void; destroy(): void; stopEvent(event: Event): boolean; ignoreMutation(mutation: ViewMutationRecord): boolean; } export declare class ReactMarkViewDesc extends MarkViewDesc { destroy(): void; } export declare class ReactNodeViewDesc extends CustomNodeViewDesc { updateChildren(_view: EditorView, _pos: number): void; updateOuterDeco(outerDeco: readonly Decoration[]): void; destroy(): void; } export declare function sameOuterDeco(a: readonly Decoration[], b: readonly Decoration[]): boolean; export {};