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.
		
		
		
		
		
			
		
			
				
					
					
						
							56 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							56 lines
						
					
					
						
							2.0 KiB
						
					
					
				| import { Extension } from '@tiptap/core';
 | |
| 
 | |
| const TextAlign = Extension.create({
 | |
|     name: 'textAlign',
 | |
|     addOptions() {
 | |
|         return {
 | |
|             types: [],
 | |
|             alignments: ['left', 'center', 'right', 'justify'],
 | |
|             defaultAlignment: 'left',
 | |
|         };
 | |
|     },
 | |
|     addGlobalAttributes() {
 | |
|         return [
 | |
|             {
 | |
|                 types: this.options.types,
 | |
|                 attributes: {
 | |
|                     textAlign: {
 | |
|                         default: this.options.defaultAlignment,
 | |
|                         parseHTML: element => element.style.textAlign || this.options.defaultAlignment,
 | |
|                         renderHTML: attributes => {
 | |
|                             if (attributes.textAlign === this.options.defaultAlignment) {
 | |
|                                 return {};
 | |
|                             }
 | |
|                             return { style: `text-align: ${attributes.textAlign}` };
 | |
|                         },
 | |
|                     },
 | |
|                 },
 | |
|             },
 | |
|         ];
 | |
|     },
 | |
|     addCommands() {
 | |
|         return {
 | |
|             setTextAlign: (alignment) => ({ commands }) => {
 | |
|                 if (!this.options.alignments.includes(alignment)) {
 | |
|                     return false;
 | |
|                 }
 | |
|                 return this.options.types.every(type => commands.updateAttributes(type, { textAlign: alignment }));
 | |
|             },
 | |
|             unsetTextAlign: () => ({ commands }) => {
 | |
|                 return this.options.types.every(type => commands.resetAttributes(type, 'textAlign'));
 | |
|             },
 | |
|         };
 | |
|     },
 | |
|     addKeyboardShortcuts() {
 | |
|         return {
 | |
|             'Mod-Shift-l': () => this.editor.commands.setTextAlign('left'),
 | |
|             'Mod-Shift-e': () => this.editor.commands.setTextAlign('center'),
 | |
|             'Mod-Shift-r': () => this.editor.commands.setTextAlign('right'),
 | |
|             'Mod-Shift-j': () => this.editor.commands.setTextAlign('justify'),
 | |
|         };
 | |
|     },
 | |
| });
 | |
| 
 | |
| export { TextAlign, TextAlign as default };
 | |
| //# sourceMappingURL=tiptap-extension-text-align.esm.js.map
 |