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.
		
		
		
		
		
			
		
			
				
					55 lines
				
				937 B
			
		
		
			
		
	
	
					55 lines
				
				937 B
			| 
											3 years ago
										 | import { mergeAttributes, Node } from '@tiptap/core' | ||
|  | 
 | ||
|  | export interface TableCellOptions { | ||
|  |   HTMLAttributes: Record<string, any>, | ||
|  | } | ||
|  | 
 | ||
|  | export const TableCell = Node.create<TableCellOptions>({ | ||
|  |   name: 'tableCell', | ||
|  | 
 | ||
|  |   addOptions() { | ||
|  |     return { | ||
|  |       HTMLAttributes: {}, | ||
|  |     } | ||
|  |   }, | ||
|  | 
 | ||
|  |   content: 'block+', | ||
|  | 
 | ||
|  |   addAttributes() { | ||
|  |     return { | ||
|  |       colspan: { | ||
|  |         default: 1, | ||
|  |       }, | ||
|  |       rowspan: { | ||
|  |         default: 1, | ||
|  |       }, | ||
|  |       colwidth: { | ||
|  |         default: null, | ||
|  |         parseHTML: element => { | ||
|  |           const colwidth = element.getAttribute('colwidth') | ||
|  |           const value = colwidth | ||
|  |             ? [parseInt(colwidth, 10)] | ||
|  |             : null | ||
|  | 
 | ||
|  |           return value | ||
|  |         }, | ||
|  |       }, | ||
|  |     } | ||
|  |   }, | ||
|  | 
 | ||
|  |   tableRole: 'cell', | ||
|  | 
 | ||
|  |   isolating: true, | ||
|  | 
 | ||
|  |   parseHTML() { | ||
|  |     return [ | ||
|  |       { tag: 'td' }, | ||
|  |     ] | ||
|  |   }, | ||
|  | 
 | ||
|  |   renderHTML({ HTMLAttributes }) { | ||
|  |     return ['td', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0] | ||
|  |   }, | ||
|  | 
 | ||
|  | }) |