61 lines
1.1 KiB
JavaScript
61 lines
1.1 KiB
JavaScript
/*
|
|
Blocks:
|
|
* Paragraph
|
|
* Header
|
|
* SimpleImage
|
|
* Quote
|
|
* CodeTool
|
|
* List
|
|
* Delimiter
|
|
* RawTool
|
|
|
|
Other:
|
|
* InlineCode
|
|
*/
|
|
|
|
const EditorBlock = {
|
|
oninit: function(vnode) {
|
|
this.id = null
|
|
this.output = null
|
|
this.onbeforeupdate(vnode)
|
|
},
|
|
|
|
onbeforeupdate: function(vnode) {
|
|
if (!vnode.attrs.block && !this.id) {
|
|
return false
|
|
}
|
|
if (vnode.attrs.block && vnode.attrs.block.id
|
|
&& vnode.attrs.block.id === this.id) {
|
|
return false
|
|
}
|
|
|
|
if (vnode.attrs.block && vnode.attrs.block.id
|
|
&& vnode.attrs.block.id !== this.id) {
|
|
this.renderblock(vnode)
|
|
} else {
|
|
this.output = null
|
|
}
|
|
},
|
|
|
|
renderblock: function(vnode) {
|
|
let block = vnode.attrs.block
|
|
this.id = block.id
|
|
switch (block.type) {
|
|
case 'paragraph':
|
|
this.output = m('p', m.trust(block.data.text))
|
|
break
|
|
case 'htmlraw':
|
|
this.output = m.trust(block.data.html)
|
|
break
|
|
default:
|
|
this.output = m('p', m.trust(block))
|
|
break
|
|
}
|
|
},
|
|
|
|
view: function(vnode) {
|
|
return this.output
|
|
}
|
|
}
|
|
|
|
module.exports = EditorBlock
|