import { Node, mergeAttributes } from "@tiptap/core"; import { ReactNodeViewRenderer } from "@tiptap/react"; import { ImageUploadView } from "../ImageUploadView"; declare module "@tiptap/core" { interface Commands { imageUpload: { insertImageUpload: () => ReturnType; }; } } export const ImageUpload = Node.create({ name: "imageUpload", group: "block", atom: true, draggable: true, parseHTML() { return [{ tag: 'div[data-type="image-upload"]' }]; }, renderHTML({ HTMLAttributes }) { return [ "div", mergeAttributes(HTMLAttributes, { "data-type": "image-upload" }), ]; }, addCommands() { return { insertImageUpload: () => ({ commands }) => { return commands.insertContent({ type: this.name }); }, }; }, addNodeView() { return ReactNodeViewRenderer(ImageUploadView); }, });