mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-02-13 11:44:55 +01:00
* split rendering out of schema * remove default components * first stab at new schema * make default normalizations smarter * revert to forcing defaults to be verbose? * refactor reason constants * split nodes into blocks/inlines * get tests passing * restructure schema tests * add parent test * cleanup * remove defaults from schema * refactor schema rule.nodes validation, update example * embed schema in state objects * fixes * update examples, and fixes * update walkthroughs * update docs * remove old schemas doc page * add more tests * update benchmarks
81 lines
1.5 KiB
JavaScript
81 lines
1.5 KiB
JavaScript
/** @jsx h */
|
|
|
|
import React from 'react'
|
|
import h from '../../helpers/h'
|
|
|
|
function Link(props) {
|
|
return (
|
|
React.createElement('a', { href: props.node.data.get('href'), ...props.attributes }, props.children)
|
|
)
|
|
}
|
|
|
|
function renderNode(props) {
|
|
switch (props.node.type) {
|
|
case 'link': return Link(props)
|
|
}
|
|
}
|
|
|
|
export const props = {
|
|
renderNode,
|
|
}
|
|
|
|
export const state = (
|
|
<state>
|
|
<document>
|
|
<paragraph>
|
|
<link href="https://google.com">
|
|
word
|
|
</link>
|
|
<link href="https://google.com">
|
|
word
|
|
</link>
|
|
<link href="https://google.com">
|
|
word
|
|
</link>
|
|
</paragraph>
|
|
</document>
|
|
</state>
|
|
)
|
|
|
|
export const output = `
|
|
<div data-slate-editor="true" contenteditable="true" role="textbox">
|
|
<div style="position:relative">
|
|
<span>
|
|
<span>
|
|
<span data-slate-zero-width="true"> </span>
|
|
</span>
|
|
</span>
|
|
<a href="https://google.com">
|
|
<span>
|
|
<span>word</span>
|
|
</span>
|
|
</a>
|
|
<span>
|
|
<span>
|
|
<span data-slate-zero-width="true"> </span>
|
|
</span>
|
|
</span>
|
|
<a href="https://google.com">
|
|
<span>
|
|
<span>word</span>
|
|
</span>
|
|
</a>
|
|
<span>
|
|
<span>
|
|
<span data-slate-zero-width="true"> </span>
|
|
</span>
|
|
</span>
|
|
<a href="https://google.com">
|
|
<span>
|
|
<span>word</span>
|
|
</span>
|
|
</a>
|
|
<span>
|
|
<span>
|
|
<span data-slate-zero-width="true"> </span>
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
`.trim()
|