import Document from '@tiptap/extension-document' import Paragraph from '@tiptap/extension-paragraph' import Text from '@tiptap/extension-text' import Bold from '@tiptap/extension-bold'; import Code from '@tiptap/extension-code'; import Italic from '@tiptap/extension-italic'; import Strike from '@tiptap/extension-strike'; //import Underline from '@tiptap/ex'; import History from '@tiptap/extension-history'; //import Placeholder from '@tiptap/extension-placeholder'; import HorizontalRule from '@tiptap/extension-horizontal-rule'; import ListItem from '@tiptap/extension-list-item'; import BulletList from '@tiptap/extension-bullet-list'; import OrderedList from '@tiptap/extension-ordered-list'; import Heading from '@tiptap/extension-heading'; import HardBreak from '@tiptap/extension-hard-break'; import Image from '@tiptap/extension-image'; import { ZeroLink, pickLink } from './extensions/link/link'; export default function () { return { removeExtension(name) { var ext = this.extensions.find(x => x.name === name); ext && this.extensions.splice(this.extensions.indexOf(ext), 1); }, removeCommand(alias) { var cmd = this.commands.find(x => x.alias === alias); cmd && this.commands.splice(this.commands.indexOf(cmd), 1); }, extensions: [ Document, Paragraph, Text, History, HardBreak, ZeroLink, Bold, Code, Italic, Strike, //Underline, ListItem, BulletList, OrderedList, HorizontalRule, Heading.configure({ // TODO levels: [2, 3, 4], }) ], commands: [ //{ // alias: 'undo', // title: '@rte.undo', // symbol: 'fth-chevron-left', // disabled: cmd => cmd.undoDepth() > 1, // onClick: (ev, cmd) => cmd.undo(ev), //}, //{ // alias: 'redo', // title: '@rte.redo', // symbol: 'fth-chevron-right', // disabled: cmd => cmd.redoDepth() > 1, // onClick: (ev, cmd) => cmd.redo(ev) //}, { alias: 'bold', title: '@rte.bold', symbol: 'fth-bold', symbolSize: 14, isActive: editor => editor.isActive('bold'), onClick: editor => editor.chain().focus().toggleBold().run(), bubble: true }, { alias: 'italic', title: '@rte.italic', symbol: 'fth-italic', symbolSize: 14, isActive: editor => editor.isActive('italic'), onClick: editor => editor.chain().focus().toggleItalic().run(), bubble: true }, { alias: 'underline', title: '@rte.underline', symbol: 'fth-underline', symbolSize: 14, isActive: editor => editor.isActive('underline'), onClick: editor => editor.chain().focus().toggleUnderline().run(), bubble: true }, { alias: 'strikethrough', title: '@rte.strike', symbol: 'fth-strikethrough', symbolSize: 14, isActive: editor => editor.isActive('strike'), onClick: editor => editor.chain().focus().toggleStrike().run(), bubble: true }, { alias: 'code', title: '@rte.code', symbol: 'fth-code', symbolSize: 14, isActive: editor => editor.isActive('code'), onClick: editor => editor.chain().focus().toggleCode().run(), bubble: true }, { alias: 'link', title: '@rte.link', symbol: 'fth-link-2', symbolSize: 14, isActive: editor => editor.isActive('link'), onClick: editor => pickLink(editor) }, { alias: 'line', title: '@rte.line', symbol: 'fth-minus', symbolSize: 15, onClick: editor => editor.chain().focus().setHorizontalRule().run() }, { alias: 'list', title: '@rte.list', symbol: 'fth-list', symbolSize: 14, children: [ { alias: 'ulist', title: '@rte.ulist', isActive: editor => editor.isActive('bullet_list'), onClick: editor => editor.chain().focus().toggleBulletList().run() }, { alias: 'olist', title: '@rte.olist', isActive: editor => editor.isActive('ordered_list'), onClick: editor => editor.chain().focus().toggleOrderedList().run() } ] }, { alias: 'heading', title: '@rte.heading', symbol: 'fth-type', symbolSize: 14, children: [ { alias: 'h2', title: '@rte.heading2', isActive: editor => editor.isActive('heading', { level: 2}), onClick: editor => editor.chain().focus().toggleHeading({ level: 2 }).run() }, { alias: 'h3', title: '@rte.heading3', isActive: editor => editor.isActive('heading', { level: 3 }), onClick: editor => editor.chain().focus().toggleHeading({ level: 3 }).run() }, { alias: 'h4', title: '@rte.heading4', isActive: editor => editor.isActive('heading', { level: 4 }), onClick: editor => editor.chain().focus().toggleHeading({ level: 4 }).run() } ] } ] }; };