tiptap editor #2222

Merged
konrad merged 66 commits from dpschen/frontend:feature/feat-tiptap-editor into main 2023-10-22 13:49:01 +00:00
Showing only changes of commit 2f3196ef86 - Show all commits

View File

@ -126,24 +126,24 @@ import Underline from '@tiptap/extension-underline'
import TaskItem from '@tiptap/extension-task-item' import TaskItem from '@tiptap/extension-task-item'
import TaskList from '@tiptap/extension-task-list' import TaskList from '@tiptap/extension-task-list'
import { Blockquote } from '@tiptap/extension-blockquote' import {Blockquote} from '@tiptap/extension-blockquote'
import { Bold } from '@tiptap/extension-bold' import {Bold} from '@tiptap/extension-bold'
import { BulletList } from '@tiptap/extension-bullet-list' import {BulletList} from '@tiptap/extension-bullet-list'
import { Code } from '@tiptap/extension-code' import {Code} from '@tiptap/extension-code'
import { CodeBlock } from '@tiptap/extension-code-block' import {CodeBlock} from '@tiptap/extension-code-block'
import { Document } from '@tiptap/extension-document' import {Document} from '@tiptap/extension-document'
import { Dropcursor } from '@tiptap/extension-dropcursor' import {Dropcursor} from '@tiptap/extension-dropcursor'
import { Gapcursor } from '@tiptap/extension-gapcursor' import {Gapcursor} from '@tiptap/extension-gapcursor'
import { HardBreak } from '@tiptap/extension-hard-break' import {HardBreak} from '@tiptap/extension-hard-break'
import { Heading } from '@tiptap/extension-heading' import {Heading} from '@tiptap/extension-heading'
import { History } from '@tiptap/extension-history' import {History} from '@tiptap/extension-history'
import { HorizontalRule } from '@tiptap/extension-horizontal-rule' import {HorizontalRule} from '@tiptap/extension-horizontal-rule'
import { Italic } from '@tiptap/extension-italic' import {Italic} from '@tiptap/extension-italic'
import { ListItem } from '@tiptap/extension-list-item' import {ListItem} from '@tiptap/extension-list-item'
import { OrderedList } from '@tiptap/extension-ordered-list' import {OrderedList} from '@tiptap/extension-ordered-list'
import { Paragraph } from '@tiptap/extension-paragraph' import {Paragraph} from '@tiptap/extension-paragraph'
import { Strike } from '@tiptap/extension-strike' import {Strike} from '@tiptap/extension-strike'
import { Text } from '@tiptap/extension-text' import {Text} from '@tiptap/extension-text'
import {BubbleMenu, EditorContent, useEditor} from '@tiptap/vue-3' import {BubbleMenu, EditorContent, useEditor} from '@tiptap/vue-3'
import Commands from './commands' import Commands from './commands'
@ -293,7 +293,9 @@ const editor = useEditor({
Bold, Bold,
BulletList, BulletList,
Code, Code,
CodeBlock, CodeBlockLowlight.configure({
lowlight,
}),
Document, Document,
Dropcursor, Dropcursor,
Gapcursor, Gapcursor,
@ -350,13 +352,9 @@ const editor = useEditor({
nested: true, nested: true,
}), }),
CodeBlockLowlight.configure({ Commands
lowlight, .configure({suggestion: suggestionSetup(t)})
}), .extend({name: 'slashMenuCommands'}),
Commands.configure({
suggestion: suggestionSetup(t),
}),
BubbleMenu, BubbleMenu,
], ],
onUpdate: () => { onUpdate: () => {
@ -460,14 +458,14 @@ function setLink() {
onMounted(() => { onMounted(() => {
document.addEventListener('paste', handleImagePaste) document.addEventListener('paste', handleImagePaste)
if(editShortcut !== '') { if (editShortcut !== '') {
document.addEventListener('keydown', setFocusToEditor) document.addEventListener('keydown', setFocusToEditor)
} }
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
document.removeEventListener('paste', handleImagePaste) document.removeEventListener('paste', handleImagePaste)
if(editShortcut !== '') { if (editShortcut !== '') {
document.removeEventListener('keydown', setFocusToEditor) document.removeEventListener('keydown', setFocusToEditor)
} }
}) })
@ -480,6 +478,7 @@ function handleImagePaste(event) {
} }
}) })
} }
// See https://github.com/github/hotkey/discussions/85#discussioncomment-5214660 // See https://github.com/github/hotkey/discussions/85#discussioncomment-5214660
function setFocusToEditor(event) { function setFocusToEditor(event) {
const hotkeyString = eventToHotkeyString(event) const hotkeyString = eventToHotkeyString(event)