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.
		
		
		
		
		
			
		
			
				
					61 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					61 lines
				
				2.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, '__esModule', { value: true });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var core = require('@tiptap/core');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const TextAlign = core.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'),
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.TextAlign = TextAlign;
							 | 
						||
| 
								 | 
							
								exports["default"] = TextAlign;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=tiptap-extension-text-align.cjs.map
							 |