import { Node, ParentConfig } from '@tiptap/core'; import { EditorView, NodeView } from '@tiptap/pm/view'; import { Node as ProseMirrorNode } from '@tiptap/pm/model'; export 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; /** * 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: ProseMirrorNode, 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: { insertTable: (options?: { rows?: number; cols?: number; withHeaderRow?: boolean; }) => ReturnType; addColumnBefore: () => ReturnType; addColumnAfter: () => ReturnType; deleteColumn: () => ReturnType; addRowBefore: () => ReturnType; addRowAfter: () => ReturnType; deleteRow: () => ReturnType; deleteTable: () => ReturnType; mergeCells: () => ReturnType; splitCell: () => ReturnType; toggleHeaderColumn: () => ReturnType; toggleHeaderRow: () => ReturnType; toggleHeaderCell: () => ReturnType; mergeOrSplit: () => ReturnType; setCellAttribute: (name: string, value: never) => ReturnType; goToNextCell: () => ReturnType; goToPreviousCell: () => ReturnType; fixTables: () => ReturnType; setCellSelection: (position: { anchorCell: number; headCell?: number; }) => ReturnType; }; } interface NodeConfig { /** * Table Role */ tableRole?: string | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['tableRole']; }) => string); } } export declare const Table: Node;