1jQuery(document).on('PROSEMIRROR_API_INITIALIZED', () => { 2 // define diagrams schema 3 window.Prosemirror.pluginSchemas.push((nodes, marks) => { 4 nodes = nodes.addToEnd('diagrams', { 5 inline: true, 6 selectable: true, 7 attrs: { 8 url: {}, 9 id: {}, 10 type: {default: 'mediafile'}, 11 title: {default: null}, 12 width: {default: null}, 13 height: {default: null}, 14 align: {default: ''} 15 }, 16 group: "inline", 17 draggable: false, 18 toDOM: function toDOM(node) { 19 let alignclass = node.attrs.align; 20 if (alignclass.length !== 0) { 21 alignclass = ` media${alignclass}`; 22 } 23 24 return [ 25 'img', 26 { 27 class: 'media diagrams-svg' + alignclass, 28 title: node.attrs.title, 29 src: node.attrs.url, 30 'data-id': node.attrs.id, 31 'data-type': node.attrs.type, 32 width: node.attrs.width, 33 height: node.attrs.height, 34 } 35 ] 36 } 37 }); 38 return {nodes, marks}; 39 }); 40 41 // extend plugin menu 42 const AbstractMenuItemDispatcher = window.Prosemirror.classes.AbstractMenuItemDispatcher; 43 const MenuItem = window.Prosemirror.classes.MenuItem; 44 const KeyValueForm = window.Prosemirror.classes.KeyValueForm; 45 const AbstractNodeView = window.AbstractNodeView; // FIXME this should be moved to the prosemirror.classes namespace 46 47 /* DOKUWIKI:include script/DiagramsForm.js */ 48 /* DOKUWIKI:include script/DiagramsView.js */ 49 /* DOKUWIKI:include script/DiagramsMenuItemDispatcher.js */ 50 51 52 window.Prosemirror.pluginNodeViews.diagrams = function diagrams(node, outerview, getPos) { 53 return new DiagramsView(node, outerview, getPos); 54 }; 55 56 window.Prosemirror.pluginMenuItemDispatchers.push(DiagramsMenuItemDispatcher); 57}); 58