import { ParentConfig, Node as Node$1, JSONContent, MarkdownRendererHelpers } from '@tiptap/core'; import { Node, DOMOutputSpec, Schema, Fragment } from '@tiptap/pm/model'; import { EditorView, NodeView } from '@tiptap/pm/view'; declare module '@tiptap/core' { interface NodeConfig { /** * A string or function to determine the role of the table. * @default 'table' * @example () => 'table' */ tableRole?: string | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['tableRole']; }) => string); } } interface TableOptions { /** * HTML attributes for the table element. * @default {} * @example { class: 'foo' } */ HTMLAttributes: Record; /** * Enables the resizing of tables. * @default false * @example true */ resizable: boolean; /** * Controls whether the table should be wrapped in a div with class "tableWrapper" when rendered. * In editable mode with resizable tables, this wrapper is always present via TableView. * @default false * @example true */ renderWrapper: boolean; /** * The width of the resize handle. * @default 5 * @example 10 */ handleWidth: number; /** * The minimum width of a cell. * @default 25 * @example 50 */ cellMinWidth: number; /** * The node view to render the table. * @default TableView */ View: (new (node: Node, cellMinWidth: number, view: EditorView) => NodeView) | null; /** * Enables the resizing of the last column. * @default true * @example false */ lastColumnResizable: boolean; /** * Allow table node selection. * @default false * @example true */ allowTableNodeSelection: boolean; } declare module '@tiptap/core' { interface Commands { table: { /** * Insert a table * @param options The table attributes * @returns True if the command was successful, otherwise false * @example editor.commands.insertTable({ rows: 3, cols: 3, withHeaderRow: true }) */ insertTable: (options?: { rows?: number; cols?: number; withHeaderRow?: boolean; }) => ReturnType; /** * Add a column before the current column * @returns True if the command was successful, otherwise false * @example editor.commands.addColumnBefore() */ addColumnBefore: () => ReturnType; /** * Add a column after the current column * @returns True if the command was successful, otherwise false * @example editor.commands.addColumnAfter() */ addColumnAfter: () => ReturnType; /** * Delete the current column * @returns True if the command was successful, otherwise false * @example editor.commands.deleteColumn() */ deleteColumn: () => ReturnType; /** * Add a row before the current row * @returns True if the command was successful, otherwise false * @example editor.commands.addRowBefore() */ addRowBefore: () => ReturnType; /** * Add a row after the current row * @returns True if the command was successful, otherwise false * @example editor.commands.addRowAfter() */ addRowAfter: () => ReturnType; /** * Delete the current row * @returns True if the command was successful, otherwise false * @example editor.commands.deleteRow() */ deleteRow: () => ReturnType; /** * Delete the current table * @returns True if the command was successful, otherwise false * @example editor.commands.deleteTable() */ deleteTable: () => ReturnType; /** * Merge the currently selected cells * @returns True if the command was successful, otherwise false * @example editor.commands.mergeCells() */ mergeCells: () => ReturnType; /** * Split the currently selected cell * @returns True if the command was successful, otherwise false * @example editor.commands.splitCell() */ splitCell: () => ReturnType; /** * Toggle the header column * @returns True if the command was successful, otherwise false * @example editor.commands.toggleHeaderColumn() */ toggleHeaderColumn: () => ReturnType; /** * Toggle the header row * @returns True if the command was successful, otherwise false * @example editor.commands.toggleHeaderRow() */ toggleHeaderRow: () => ReturnType; /** * Toggle the header cell * @returns True if the command was successful, otherwise false * @example editor.commands.toggleHeaderCell() */ toggleHeaderCell: () => ReturnType; /** * Merge or split the currently selected cells * @returns True if the command was successful, otherwise false * @example editor.commands.mergeOrSplit() */ mergeOrSplit: () => ReturnType; /** * Set a cell attribute * @param name The attribute name * @param value The attribute value * @returns True if the command was successful, otherwise false * @example editor.commands.setCellAttribute('align', 'right') */ setCellAttribute: (name: string, value: any) => ReturnType; /** * Moves the selection to the next cell * @returns True if the command was successful, otherwise false * @example editor.commands.goToNextCell() */ goToNextCell: () => ReturnType; /** * Moves the selection to the previous cell * @returns True if the command was successful, otherwise false * @example editor.commands.goToPreviousCell() */ goToPreviousCell: () => ReturnType; /** * Try to fix the table structure if necessary * @returns True if the command was successful, otherwise false * @example editor.commands.fixTables() */ fixTables: () => ReturnType; /** * Set a cell selection inside the current table * @param position The cell position * @returns True if the command was successful, otherwise false * @example editor.commands.setCellSelection({ anchorCell: 1, headCell: 2 }) */ setCellSelection: (position: { anchorCell: number; headCell?: number; }) => ReturnType; }; } } /** * This extension allows you to create tables. * @see https://www.tiptap.dev/api/nodes/table */ declare const Table: Node$1; type ColGroup = { colgroup: DOMOutputSpec; tableWidth: string; tableMinWidth: string; } | Record; /** * Creates a colgroup element for a table node in ProseMirror. * * @param node - The ProseMirror node representing the table. * @param cellMinWidth - The minimum width of a cell in the table. * @param overrideCol - (Optional) The index of the column to override the width of. * @param overrideValue - (Optional) The width value to use for the overridden column. * @returns An object containing the colgroup element, the total width of the table, and the minimum width of the table. */ declare function createColGroup(node: Node, cellMinWidth: number): ColGroup; declare function createColGroup(node: Node, cellMinWidth: number, overrideCol: number, overrideValue: number): ColGroup; declare function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | Node | Array): Node; declare const DEFAULT_CELL_LINE_SEPARATOR = "\u001F"; declare function renderTableToMarkdown(node: JSONContent, h: MarkdownRendererHelpers, options?: { cellLineSeparator?: string; }): string; export { type ColGroup, DEFAULT_CELL_LINE_SEPARATOR, Table, type TableOptions, createColGroup, createTable, renderTableToMarkdown };