2021-10-27 15:23:28 +05:30
|
|
|
import { Extension } from '@tiptap/core';
|
2023-05-27 22:25:52 +05:30
|
|
|
import { Plugin, PluginKey } from '@tiptap/pm/state';
|
2021-10-27 15:23:28 +05:30
|
|
|
import { handleFileEvent } from '../services/upload_helpers';
|
|
|
|
|
|
|
|
export default Extension.create({
|
|
|
|
name: 'attachment',
|
|
|
|
|
2022-01-26 12:08:38 +05:30
|
|
|
addOptions() {
|
|
|
|
return {
|
|
|
|
uploadsPath: null,
|
|
|
|
renderMarkdown: null,
|
2022-05-07 20:08:51 +05:30
|
|
|
eventHub: null,
|
2022-01-26 12:08:38 +05:30
|
|
|
};
|
2021-10-27 15:23:28 +05:30
|
|
|
},
|
|
|
|
|
|
|
|
addCommands() {
|
|
|
|
return {
|
|
|
|
uploadAttachment: ({ file }) => () => {
|
2022-05-07 20:08:51 +05:30
|
|
|
const { uploadsPath, renderMarkdown, eventHub } = this.options;
|
2021-10-27 15:23:28 +05:30
|
|
|
|
2022-05-07 20:08:51 +05:30
|
|
|
return handleFileEvent({
|
|
|
|
file,
|
|
|
|
uploadsPath,
|
|
|
|
renderMarkdown,
|
|
|
|
editor: this.editor,
|
|
|
|
eventHub,
|
|
|
|
});
|
2021-10-27 15:23:28 +05:30
|
|
|
},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
addProseMirrorPlugins() {
|
|
|
|
const { editor } = this;
|
|
|
|
|
|
|
|
return [
|
|
|
|
new Plugin({
|
|
|
|
key: new PluginKey('attachment'),
|
|
|
|
props: {
|
|
|
|
handlePaste: (_, event) => {
|
2022-05-07 20:08:51 +05:30
|
|
|
const { uploadsPath, renderMarkdown, eventHub } = this.options;
|
2021-10-27 15:23:28 +05:30
|
|
|
|
|
|
|
return handleFileEvent({
|
|
|
|
editor,
|
|
|
|
file: event.clipboardData.files[0],
|
|
|
|
uploadsPath,
|
|
|
|
renderMarkdown,
|
2022-05-07 20:08:51 +05:30
|
|
|
eventHub,
|
2021-10-27 15:23:28 +05:30
|
|
|
});
|
|
|
|
},
|
|
|
|
handleDrop: (_, event) => {
|
2022-05-07 20:08:51 +05:30
|
|
|
const { uploadsPath, renderMarkdown, eventHub } = this.options;
|
2021-10-27 15:23:28 +05:30
|
|
|
|
|
|
|
return handleFileEvent({
|
|
|
|
editor,
|
|
|
|
file: event.dataTransfer.files[0],
|
|
|
|
uploadsPath,
|
|
|
|
renderMarkdown,
|
2022-05-07 20:08:51 +05:30
|
|
|
eventHub,
|
2021-10-27 15:23:28 +05:30
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
];
|
|
|
|
},
|
|
|
|
});
|