You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					322 lines
				
				8.3 KiB
			
		
		
			
		
	
	
					322 lines
				
				8.3 KiB
			| 
											3 years ago
										 | // Type definitions for prosemirror-tables 0.8
 | ||
|  | // Project: https://github.com/ProseMirror/prosemirror-tables
 | ||
|  | // Definitions by: Oscar Wallhult <https://github.com/superchu>
 | ||
|  | //                 Eduard Shvedai <https://github.com/eshvedai>
 | ||
|  | //                 Patrick Simmelbauer <https://github.com/patsimm>
 | ||
|  | // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
 | ||
|  | // TypeScript Version: 2.3
 | ||
|  | import { | ||
|  |   EditorState, | ||
|  |   Plugin, | ||
|  |   SelectionRange, | ||
|  |   Transaction, | ||
|  |   PluginKey, | ||
|  |   Selection, | ||
|  | } from 'prosemirror-state'; | ||
|  | import { | ||
|  |   Node as ProsemirrorNode, | ||
|  |   NodeSpec, | ||
|  |   Slice, | ||
|  |   ResolvedPos, | ||
|  |   Schema, | ||
|  |   NodeType, | ||
|  | } from 'prosemirror-model'; | ||
|  | import { Mappable } from 'prosemirror-transform'; | ||
|  | import { NodeView } from 'prosemirror-view'; | ||
|  | 
 | ||
|  | export interface TableEditingOptions { | ||
|  |   allowTableNodeSelection?: boolean; | ||
|  | } | ||
|  | 
 | ||
|  | export interface TableNodesOptions { | ||
|  |   tableGroup?: string; | ||
|  |   cellContent: string; | ||
|  |   cellAttributes: { [key: string]: CellAttributes }; | ||
|  | } | ||
|  | 
 | ||
|  | export type getFromDOM = (dom: Element) => any; | ||
|  | export type setDOMAttr = (value: any, attrs: any) => any; | ||
|  | 
 | ||
|  | export interface CellAttributes { | ||
|  |   default: any; | ||
|  |   getFromDOM?: getFromDOM; | ||
|  |   setDOMAttr?: setDOMAttr; | ||
|  | } | ||
|  | 
 | ||
|  | export interface TableNodes { | ||
|  |   table: NodeSpec; | ||
|  |   table_row: NodeSpec; | ||
|  |   table_cell: NodeSpec; | ||
|  |   table_header: NodeSpec; | ||
|  | } | ||
|  | 
 | ||
|  | export function tableNodes(options: TableNodesOptions): TableNodes; | ||
|  | 
 | ||
|  | export interface CellSelectionJSON { | ||
|  |   type: string; | ||
|  |   anchor: number; | ||
|  |   head: number; | ||
|  | } | ||
|  | 
 | ||
|  | export class CellSelection<S extends Schema = any> { | ||
|  |   constructor($anchorCell: ResolvedPos<S>, $headCell?: ResolvedPos<S>); | ||
|  | 
 | ||
|  |   from: number; | ||
|  |   to: number; | ||
|  |   $from: ResolvedPos<S>; | ||
|  |   $to: ResolvedPos<S>; | ||
|  |   anchor: number; | ||
|  |   head: number; | ||
|  |   $anchor: ResolvedPos<S>; | ||
|  |   $head: ResolvedPos<S>; | ||
|  |   $anchorCell: ResolvedPos<S>; | ||
|  |   $headCell: ResolvedPos<S>; | ||
|  |   empty: boolean; | ||
|  |   ranges: Array<SelectionRange<S>>; | ||
|  | 
 | ||
|  |   map(doc: ProsemirrorNode<S>, mapping: Mappable): any; | ||
|  |   content(): Slice<S>; | ||
|  |   replace(tr: Transaction<S>, content: Slice<S>): void; | ||
|  |   replaceWith(tr: Transaction<S>, node: ProsemirrorNode<S>): void; | ||
|  |   forEachCell(f: (node: ProsemirrorNode<S>, pos: number) => void): void; | ||
|  |   isRowSelection(): boolean; | ||
|  |   isColSelection(): boolean; | ||
|  |   eq(other: Selection<S>): boolean; | ||
|  |   toJSON(): CellSelectionJSON; | ||
|  |   getBookmark(): { anchor: number; head: number }; | ||
|  | 
 | ||
|  |   static colSelection<S extends Schema = any>( | ||
|  |     anchorCell: ResolvedPos<S>, | ||
|  |     headCell?: ResolvedPos<S>, | ||
|  |   ): CellSelection<S>; | ||
|  |   static rowSelection<S extends Schema = any>( | ||
|  |     anchorCell: ResolvedPos<S>, | ||
|  |     headCell?: ResolvedPos<S>, | ||
|  |   ): CellSelection<S>; | ||
|  |   static create<S extends Schema = any>( | ||
|  |     doc: ProsemirrorNode<S>, | ||
|  |     anchorCell: number, | ||
|  |     headCell?: number, | ||
|  |   ): CellSelection<S>; | ||
|  |   static fromJSON<S extends Schema = any>( | ||
|  |     doc: ProsemirrorNode<S>, | ||
|  |     json: CellSelectionJSON, | ||
|  |   ): CellSelection<S>; | ||
|  | } | ||
|  | 
 | ||
|  | export interface Rect { | ||
|  |   left: number; | ||
|  |   top: number; | ||
|  |   right: number; | ||
|  |   bottom: number; | ||
|  | } | ||
|  | 
 | ||
|  | export interface TableRect extends Rect { | ||
|  |   tableStart: number; | ||
|  |   map: TableMap; | ||
|  |   table: ProsemirrorNode; | ||
|  | } | ||
|  | 
 | ||
|  | export class TableMap { | ||
|  |   width: number; | ||
|  |   height: number; | ||
|  |   map: number[]; | ||
|  |   problems?: object[]; | ||
|  | 
 | ||
|  |   findCell(pos: number): Rect; | ||
|  |   colCount(pos: number): number; | ||
|  |   nextCell(pos: number, axis: string, dir: number): number; | ||
|  |   rectBetween(a: number, b: number): Rect; | ||
|  |   cellsInRect(rect: Rect): number[]; | ||
|  |   positionAt(row: number, col: number, table: ProsemirrorNode): number; | ||
|  | 
 | ||
|  |   static get(table: ProsemirrorNode): TableMap; | ||
|  | } | ||
|  | 
 | ||
|  | export function tableEditing(options?: TableEditingOptions): Plugin; | ||
|  | 
 | ||
|  | export function deleteTable<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function goToNextCell<S extends Schema = any>( | ||
|  |   direction: number, | ||
|  | ): (state: EditorState<S>, dispatch?: (tr: Transaction<S>) => void) => boolean; | ||
|  | 
 | ||
|  | export function toggleHeaderCell<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function toggleHeaderColumn<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function toggleHeaderRow<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Toggles between row/column header and normal cells (Only applies to first row/column). | ||
|  |  * For deprecated behavior pass useDeprecatedLogic in options with true. | ||
|  |  */ | ||
|  | export function toggleHeader<S extends Schema = any>( | ||
|  |   type: 'column' | 'row', | ||
|  |   options?: { useDeprecatedLogic?: boolean }, | ||
|  | ): (state: EditorState<S>, dispatch?: (tr: Transaction<S>) => void) => boolean; | ||
|  | 
 | ||
|  | export function setCellAttr<S extends Schema = any>( | ||
|  |   name: string, | ||
|  |   value: any, | ||
|  | ): (state: EditorState<S>, dispatch?: (tr: Transaction<S>) => void) => boolean; | ||
|  | 
 | ||
|  | export function splitCell<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export interface GetCellTypeOptions { | ||
|  |   node: ProsemirrorNode; | ||
|  |   row: number; | ||
|  |   col: number; | ||
|  | } | ||
|  | 
 | ||
|  | export function splitCellWithType<S extends Schema = any>( | ||
|  |   getCellType: (options: GetCellTypeOptions) => NodeType<S>, | ||
|  | ): (state: EditorState<S>, dispatch?: (tr: Transaction<S>) => void) => boolean; | ||
|  | 
 | ||
|  | export function mergeCells<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function deleteRow<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function selectedRect<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  | ): TableRect; | ||
|  | 
 | ||
|  | export function rowIsHeader<S extends Schema = any>( | ||
|  |   map: TableMap, | ||
|  |   table: ProsemirrorNode<S>, | ||
|  |   row: number, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function addRowAfter<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function addRowBefore<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function addRow<S extends Schema = any>( | ||
|  |   transaction: Transaction<S>, | ||
|  |   rect: TableRect, | ||
|  |   row: number, | ||
|  | ): Transaction<S>; | ||
|  | 
 | ||
|  | export function deleteColumn<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function addColumnAfter<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function addColumnBefore<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   dispatch?: (tr: Transaction<S>) => void, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function addColumn<S extends Schema = any>( | ||
|  |   transaction: Transaction<S>, | ||
|  |   rect: TableRect, | ||
|  |   row: number, | ||
|  | ): Transaction<S>; | ||
|  | 
 | ||
|  | export function columnResizing<S extends Schema = any>(props: { | ||
|  |   handleWidth?: number; | ||
|  |   cellMinWidth?: number; | ||
|  |   View?: NodeView<S>; | ||
|  | }): Plugin<S>; | ||
|  | 
 | ||
|  | export const columnResizingPluginKey: PluginKey; | ||
|  | 
 | ||
|  | export const tableEditingKey: PluginKey; | ||
|  | export const fixTablesKey: PluginKey; | ||
|  | 
 | ||
|  | export function updateColumnsOnResize( | ||
|  |   node: ProsemirrorNode, | ||
|  |   colgroup: Element, | ||
|  |   table: Element, | ||
|  |   cellMinWidth: number, | ||
|  |   overrideCol?: number, | ||
|  |   overrideValue?: number, | ||
|  | ): void; | ||
|  | 
 | ||
|  | export function cellAround<S extends Schema = any>( | ||
|  |   pos: ResolvedPos<S>, | ||
|  | ): ResolvedPos<S> | null; | ||
|  | 
 | ||
|  | export function isInTable(state: EditorState): boolean; | ||
|  | 
 | ||
|  | export function removeColSpan<T extends {}>( | ||
|  |   attrs: T, | ||
|  |   pos: number, | ||
|  |   n?: number, | ||
|  | ): T; | ||
|  | export function addColSpan<T extends {}>(attrs: T, pos: number, n?: number): T; | ||
|  | 
 | ||
|  | type TableRoles = 'table' | 'row' | 'cell' | 'header_cell'; | ||
|  | 
 | ||
|  | export function columnIsHeader( | ||
|  |   map: TableMap, | ||
|  |   table: ProsemirrorNode, | ||
|  |   col: number, | ||
|  | ): boolean; | ||
|  | export function tableNodeTypes(schema: Schema): Record<TableRoles, NodeType>; | ||
|  | 
 | ||
|  | export function selectionCell<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  | ): ResolvedPos<S> | null | undefined; | ||
|  | 
 | ||
|  | export function moveCellForward<S extends Schema = any>( | ||
|  |   pos: ResolvedPos<S>, | ||
|  | ): ResolvedPos<S>; | ||
|  | 
 | ||
|  | export function inSameTable<S extends Schema = any>( | ||
|  |   $a: ResolvedPos<S>, | ||
|  |   $b: ResolvedPos<S>, | ||
|  | ): boolean; | ||
|  | 
 | ||
|  | export function findCell(pos: ResolvedPos): { | ||
|  |   top: number; | ||
|  |   left: number; | ||
|  |   right: number; | ||
|  |   bottom: number; | ||
|  | }; | ||
|  | 
 | ||
|  | export function colCount(pos: ResolvedPos): number; | ||
|  | 
 | ||
|  | export function nextCell<S extends Schema = any>( | ||
|  |   pos: ResolvedPos<S>, | ||
|  |   axis: string, | ||
|  |   dir: number, | ||
|  | ): null | ResolvedPos<S>; | ||
|  | 
 | ||
|  | export function fixTables<S extends Schema = any>( | ||
|  |   state: EditorState<S>, | ||
|  |   oldState?: EditorState<S>, | ||
|  | ): null | Transaction<S>; |