import { Mark, MarkSpec, Node, NodeSpec, Schema } from 'prosemirror-model'; export interface CreateCustomMarkOptions { /** * The attribute key used to identify this mark in the DOM. * @example 'data-gs-mrk-color' */ key: string; /** * The CSS property this mark controls. * @example 'color', 'background-color', 'font-size' */ cssProperty: string; /** * The HTML tag name to use for this mark. * @default 'span' */ tagName?: string; } /** * Creates a reusable mark specification for custom styling marks. * This utility allows consumers to easily create marks that apply CSS properties to text. * * @example * ```ts * const colorMark = createCustomMark({ * key: 'data-gs-mrk-color', * cssProperty: 'color', * }); * * const bgColorMark = createCustomMark({ * key: 'data-gs-mrk-bgcolor', * cssProperty: 'background-color', * }); * ``` */ export declare const createCustomMark: (options: CreateCustomMarkOptions) => MarkSpec; export declare const keyAttrColor = "data-gs-mrk-color"; export declare const keyAttrBgColor = "data-gs-mrk-bgcolor"; export declare const keyAttrWrap = "data-gs-mrk-wrap"; export declare const keyAttrInlineFragment = "data-gs-ifrg"; export declare const AllAttrKey = "attrs"; export declare const allAttrsToDom: (node: Mark | Node) => any; export declare const nodes: { nonTextNode: { group: string; content: string; attrs: { tagName: { default: string; }; attrs: { default: {}; }; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { tagName: string; attrs: Readonly>; }; priority: number; }[]; toDOM(node: Node): [any, any, number]; }; table: NodeSpec; table_row: NodeSpec; table_cell: NodeSpec; table_header: NodeSpec; doc: { content: string; }; text: { group: string; inline: true; }; inlineFragment: { group: string; content: string; isTextBlock: boolean; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: () => [string, { "data-gs-ifrg": string; }, number]; }; div: { group: string; content: string; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any, number]; }; paragraph: { group: string; content: string; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any, number]; }; orderedList: { group: string; content: string; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any, number]; }; bulletList: { group: string; content: string; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any, number]; }; listItem: { content: string; group: string; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any, number]; defining: true; }; codeBlock: { group: string; content: string; marks: string; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any, (string | number)[]]; }; image: { inline: true; group: string; selectable: true; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any]; }; inlineBreak: { inline: true; group: string; selectable: false; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any]; }; hardBreak: { inline: true; group: string; selectable: false; attrs: { [name: string]: import('prosemirror-model').AttributeSpec; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { attrs: Readonly>; }; }[]; toDOM: (node: Node) => [string, any]; }; heading: { group: string; content: string; attrs: { level: { default: number; }; attrs: { default: {}; }; }; defining: true; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { level: number; attrs: Readonly>; }; }[]; toDOM({ attrs }: Node): [string, any, number]; }; }; export declare const marks: { strong: MarkSpec; link: MarkSpec; em: MarkSpec; underline: MarkSpec; strikethrough: MarkSpec; wrapStyle: MarkSpec; font_size: { attrs: { size: { default: null; }; }; parseDOM: { tag: string; getAttrs: (dom: HTMLElement) => { size: string; attrs: string; }; }[]; toDOM(mark: Mark): [string, any, number]; }; color: MarkSpec; bgColor: MarkSpec; }; export declare const schema: Schema<"div" | "table" | "image" | "text" | "heading" | "doc" | "inlineFragment" | "paragraph" | "orderedList" | "bulletList" | "listItem" | "codeBlock" | "inlineBreak" | "hardBreak" | "table_row" | "table_cell" | "table_header" | "nonTextNode", "em" | "link" | "strong" | "color" | "underline" | "strikethrough" | "wrapStyle" | "font_size" | "bgColor">; export type DefaultSchema = typeof schema; export default schema;