/** * File Extension - Handle file display as inline image preview */ import Image from '@tiptap/extension-image'; import { MessageContentType } from '../../../../types/messageInput'; export function createFileExtension() { return Image.extend({ name: MessageContentType.FILE, inline: true, group: 'inline', draggable: true, addOptions() { return { ...this.parent?.(), HTMLAttributes: { 'class': 'message-file', 'data-type': MessageContentType.FILE, }, }; }, addAttributes() { return { ...this.parent?.(), 'data-type': { default: MessageContentType.FILE, parseHTML: element => element.getAttribute('data-type'), renderHTML: attributes => (attributes['data-type'] ? { 'data-type': attributes['data-type'] } : {}), }, 'file-data': { default: null, parseHTML: element => element.getAttribute('file-data'), renderHTML: attributes => (attributes.fileData ? { 'file-data': attributes.fileData } : {}), }, }; }, }); }