2018-07-04 01:07:38 +02:00
|
|
|
/** @jsx h */
|
|
|
|
|
|
|
|
import React from 'react'
|
|
|
|
import h from '../../helpers/h'
|
|
|
|
|
|
|
|
function Image(props) {
|
|
|
|
return React.createElement('img', {
|
|
|
|
className: props.isFocused ? 'focused' : '',
|
|
|
|
src: props.node.data.get('src'),
|
|
|
|
...props.attributes,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2018-10-09 18:43:47 -07:00
|
|
|
function renderNode(props, next) {
|
2018-07-04 01:07:38 +02:00
|
|
|
switch (props.node.type) {
|
|
|
|
case 'image':
|
|
|
|
return Image(props)
|
2018-10-09 18:43:47 -07:00
|
|
|
default:
|
|
|
|
return next()
|
2018-07-04 01:07:38 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const props = {
|
|
|
|
renderNode,
|
2018-08-22 18:22:40 -07:00
|
|
|
schema: {
|
|
|
|
blocks: {
|
|
|
|
image: {
|
|
|
|
isVoid: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2018-07-04 01:07:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export const value = (
|
|
|
|
<value>
|
|
|
|
<document>
|
|
|
|
<paragraph>
|
2018-10-09 14:03:27 -07:00
|
|
|
<text key="a">
|
|
|
|
<anchor />
|
|
|
|
</text>
|
2018-07-04 01:07:38 +02:00
|
|
|
</paragraph>
|
2018-10-09 14:03:27 -07:00
|
|
|
<image src="https://example.com/image.png">
|
|
|
|
<text />
|
|
|
|
</image>
|
2018-07-04 01:07:38 +02:00
|
|
|
<paragraph>
|
2018-10-09 14:03:27 -07:00
|
|
|
<text key="b">
|
|
|
|
<focus />
|
|
|
|
</text>
|
2018-07-04 01:07:38 +02:00
|
|
|
</paragraph>
|
2018-10-09 14:03:27 -07:00
|
|
|
<image src="https://example.com/image2.png">
|
|
|
|
<text />
|
|
|
|
</image>
|
2018-07-04 01:07:38 +02:00
|
|
|
</document>
|
2018-10-09 14:03:27 -07:00
|
|
|
<selection isFocused={false}>
|
|
|
|
<anchor key="a" offset={0} />
|
|
|
|
<focus key="b" offset={0} />
|
|
|
|
</selection>
|
2018-07-04 01:07:38 +02:00
|
|
|
</value>
|
|
|
|
)
|
|
|
|
|
|
|
|
export const output = `
|
|
|
|
<div data-slate-editor="true" contenteditable="true" role="textbox">
|
|
|
|
<div style="position:relative">
|
|
|
|
<span>
|
|
|
|
<span>
|
2018-10-25 11:41:43 -05:00
|
|
|
<span data-slate-zero-width="n"><br /></span>
|
2018-07-04 01:07:38 +02:00
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div data-slate-void="true">
|
|
|
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
|
|
|
<span>
|
|
|
|
<span>
|
2018-10-09 13:30:01 -06:00
|
|
|
<span data-slate-zero-width="z"></span>
|
2018-07-04 01:07:38 +02:00
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div contenteditable="false">
|
|
|
|
<img class="" src="https://example.com/image.png">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="position:relative">
|
|
|
|
<span>
|
|
|
|
<span>
|
2018-10-25 11:41:43 -05:00
|
|
|
<span data-slate-zero-width="n"><br /></span>
|
2018-07-04 01:07:38 +02:00
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div data-slate-void="true">
|
|
|
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
|
|
|
<span>
|
|
|
|
<span>
|
2018-10-09 13:30:01 -06:00
|
|
|
<span data-slate-zero-width="z"></span>
|
2018-07-04 01:07:38 +02:00
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div contenteditable="false">
|
|
|
|
<img class="" src="https://example.com/image2.png">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
`.trim()
|