File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3737 <div v-if =" tiptap"
3838 id =" editor"
3939 :class =" { draggedOver }"
40+ @image-paste =" onPaste"
4041 @dragover.prevent.stop =" draggedOver = true"
4142 @dragleave.prevent.stop =" draggedOver = false"
4243 @drop.prevent.stop =" onEditorDrop" >
@@ -566,6 +567,9 @@ export default {
566567 hideHelp () {
567568 this .displayHelp = false
568569 },
570+ onPaste (e ) {
571+ this .uploadImageFiles (e .detail .files )
572+ },
569573 onEditorDrop (e ) {
570574 this .uploadImageFiles (e .dataTransfer .files )
571575 this .draggedOver = false
Original file line number Diff line number Diff line change 2121 */
2222
2323import TiptapImage from '@tiptap/extension-image'
24+ import { Plugin } from 'prosemirror-state'
2425import ImageView from './ImageView'
2526import { VueNodeViewRenderer } from '@tiptap/vue-2'
2627
@@ -39,6 +40,29 @@ const Image = TiptapImage.extend({
3940 return VueNodeViewRenderer ( ImageView )
4041 } ,
4142
43+ addProseMirrorPlugins ( ) {
44+ return [
45+ new Plugin ( {
46+ props : {
47+ handlePaste : ( view , event , slice ) => {
48+ // only prevent the paste if it contains files
49+ if ( event . clipboardData . files && event . clipboardData . files . length > 0 ) {
50+ // let the editor wrapper catch this custom event
51+ const customEvent = new CustomEvent ( 'image-paste' , {
52+ bubbles : true ,
53+ detail : {
54+ files : event . clipboardData . files ,
55+ } ,
56+ } )
57+ event . target . dispatchEvent ( customEvent )
58+ return true
59+ }
60+ } ,
61+ } ,
62+ } ) ,
63+ ]
64+ } ,
65+
4266} )
4367
4468export default Image
You can’t perform that action at this time.
0 commit comments