1class DiagramsView extends AbstractNodeView { 2 constructor(node, view, getPos) { 3 super(node, view, getPos); 4 this.dForm = new DiagramsForm('diagrams-form-view'); 5 } 6 7 renderNode(attrs) { 8 const dgrSchemaSpecs = this.node.type.spec.toDOM(this.node); 9 const elem = document.createElement(dgrSchemaSpecs[0]); 10 11 Object.entries(dgrSchemaSpecs[1]).forEach(([key, value]) => { 12 elem.setAttribute(key, value); 13 }); 14 15 this.dom = elem; 16 } 17 18 selectNode() { 19 this.dom.classList.add('ProseMirror-selectednode'); 20 21 this.dForm.updateFormFromView(this); 22 this.dForm.show(); 23 } 24 25 deselectNode() { 26 this.dom.classList.remove('ProseMirror-selectednode'); 27 this.dForm.hide(); 28 this.dForm.off('submit'); 29 this.dForm.resetForm(); 30 } 31 32 /** 33 * Dispatches a node update to the editor 34 * 35 * @param {object} newAttrs 36 */ 37 dispatchNodeUpdate(newAttrs) { 38 this.renderNode(newAttrs); // FIXME is this necessary? 39 const nodeStartPos = this.getPos(); 40 41 this.outerView.dispatch(this.outerView.state.tr.setNodeMarkup( 42 nodeStartPos, 43 null, 44 newAttrs, 45 this.node.marks, 46 )); 47 } 48} 49