export extended editor for vue
This commit is contained in:
@@ -3,9 +3,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { Editor } from '@tiptap/core'
|
import { Editor, EditorContent, defaultExtensions } from '@tiptap/vue-starter-kit'
|
||||||
import { EditorContent, Renderer } from '@tiptap/vue-starter-kit'
|
|
||||||
import extensions from '@tiptap/starter-kit'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -21,8 +19,7 @@ export default {
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.editor = new Editor({
|
this.editor = new Editor({
|
||||||
content: '<p>foo</p>',
|
content: '<p>foo</p>',
|
||||||
extensions: extensions(),
|
extensions: defaultExtensions(),
|
||||||
renderer: Renderer,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
window.editor = this.editor
|
window.editor = this.editor
|
||||||
|
|||||||
@@ -5,8 +5,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { Editor } from '@tiptap/core'
|
import { Editor, EditorContent } from '@tiptap/vue'
|
||||||
import { EditorContent, Renderer } from '@tiptap/vue'
|
|
||||||
import Document from '@tiptap/extension-document'
|
import Document from '@tiptap/extension-document'
|
||||||
import Paragraph from '@tiptap/extension-paragraph'
|
import Paragraph from '@tiptap/extension-paragraph'
|
||||||
import Text from '@tiptap/extension-text'
|
import Text from '@tiptap/extension-text'
|
||||||
@@ -32,7 +31,6 @@ export default {
|
|||||||
new Text(),
|
new Text(),
|
||||||
new Bold(),
|
new Bold(),
|
||||||
],
|
],
|
||||||
renderer: Renderer,
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
export default abstract class ComponentRenderer {
|
export default abstract class ComponentRenderer {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,7 @@ import Extension from './Extension'
|
|||||||
import Node from './Node'
|
import Node from './Node'
|
||||||
import Mark from './Mark'
|
import Mark from './Mark'
|
||||||
import EventEmitter from './EventEmitter'
|
import EventEmitter from './EventEmitter'
|
||||||
|
import ComponentRenderer from './ComponentRenderer'
|
||||||
|
|
||||||
export type Command = (next: Function, editor: Editor) => (...args: any) => any
|
export type Command = (next: Function, editor: Editor) => (...args: any) => any
|
||||||
|
|
||||||
@@ -34,13 +35,13 @@ interface EditorOptions {
|
|||||||
content: EditorContent
|
content: EditorContent
|
||||||
extensions: (Extension | Node | Mark)[]
|
extensions: (Extension | Node | Mark)[]
|
||||||
injectCSS: Boolean,
|
injectCSS: Boolean,
|
||||||
renderer: any,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@magicMethods
|
@magicMethods
|
||||||
export class Editor extends EventEmitter {
|
export class Editor extends EventEmitter {
|
||||||
|
|
||||||
private proxy!: any
|
public renderer!: any
|
||||||
|
private proxy!: Editor
|
||||||
private extensionManager!: ExtensionManager
|
private extensionManager!: ExtensionManager
|
||||||
private commands: { [key: string]: any } = {}
|
private commands: { [key: string]: any } = {}
|
||||||
private css!: HTMLStyleElement
|
private css!: HTMLStyleElement
|
||||||
@@ -53,7 +54,6 @@ export class Editor extends EventEmitter {
|
|||||||
content: '',
|
content: '',
|
||||||
injectCSS: true,
|
injectCSS: true,
|
||||||
extensions: [],
|
extensions: [],
|
||||||
renderer: null,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(options: Partial<EditorOptions> = {}) {
|
constructor(options: Partial<EditorOptions> = {}) {
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ export default class ExtensionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get nodeViews() {
|
get nodeViews() {
|
||||||
const { renderer: Renderer } = this.editor.options
|
const { renderer: Renderer } = this.editor
|
||||||
|
|
||||||
if (!Renderer || !Renderer.type) {
|
if (!Renderer || !Renderer.type) {
|
||||||
return {}
|
return {}
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
import { Editor as CoreEditor } from '@tiptap/core'
|
||||||
|
import Renderer from './src/Renderer'
|
||||||
|
|
||||||
export * from '@tiptap/core'
|
export * from '@tiptap/core'
|
||||||
export { default as EditorContent } from './src/components/EditorContent'
|
export { default as EditorContent } from './src/components/EditorContent'
|
||||||
export { default as Renderer } from './src/Renderer'
|
|
||||||
|
export class Editor extends CoreEditor {
|
||||||
|
renderer = Renderer
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user