Files
nuxt__ui/playgrounds/nuxt/app/components/editor/ImageUpload.ts
Benjamin Canac 38765c367d feat(Editor): new component (#5407)
Co-authored-by: Baptiste Leproux <leproux.baptiste@gmail.com>
2025-12-03 18:19:16 +01:00

41 lines
973 B
TypeScript

import { Node, mergeAttributes } from '@tiptap/core'
import type { NodeViewRenderer } from '@tiptap/core'
import { VueNodeViewRenderer } from '@tiptap/vue-3'
import ImageUploadNodeComponent from './ImageUploadNode.vue'
declare module '@tiptap/core' {
interface Commands<ReturnType> {
imageUpload: {
insertImageUpload: () => ReturnType
}
}
}
export default Node.create({
name: 'imageUpload',
group: 'block',
atom: true,
draggable: true,
addAttributes() {
return {}
},
parseHTML() {
return [{
tag: 'div[data-type="image-upload"]'
}]
},
renderHTML({ HTMLAttributes }) {
return ['div', mergeAttributes(HTMLAttributes, { 'data-type': 'image-upload' })]
},
addNodeView(): NodeViewRenderer {
return VueNodeViewRenderer(ImageUploadNodeComponent)
},
addCommands() {
return {
insertImageUpload: () => ({ commands }) => {
return commands.insertContent({ type: this.name })
}
}
}
})