mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-09 16:56:36 +02:00
Add value inspector to composition example (#2703)
* Add value inspector to composition example * Add Android API Version to composition example
This commit is contained in:
@@ -9,6 +9,7 @@ import insert from './insert.js'
|
|||||||
import special from './special.js'
|
import special from './special.js'
|
||||||
import { isKeyHotkey } from 'is-hotkey'
|
import { isKeyHotkey } from 'is-hotkey'
|
||||||
import { Button, Icon, Toolbar } from '../components'
|
import { Button, Icon, Toolbar } from '../components'
|
||||||
|
import { ANDROID_API_VERSION } from 'slate-dev-environment'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define the default node type.
|
* Define the default node type.
|
||||||
@@ -47,6 +48,41 @@ const Tab = styled(TabLink)`
|
|||||||
margin-right: 0.25em;
|
margin-right: 0.25em;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const Version = styled('div')`
|
||||||
|
float: right;
|
||||||
|
padding: 0.5em;
|
||||||
|
font-size: 75%;
|
||||||
|
color: #808080;
|
||||||
|
`
|
||||||
|
|
||||||
|
const EditorText = styled('div')`
|
||||||
|
color: #808080;
|
||||||
|
background: #f0f0f0;
|
||||||
|
font: 12px monospace;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
margin: 1em -1em;
|
||||||
|
padding: 0.5em;
|
||||||
|
div {
|
||||||
|
margin: 0 0 0.5em;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const EditorTextCaption = styled('div')`
|
||||||
|
color: white;
|
||||||
|
background: #808080;
|
||||||
|
padding: 0.5em;
|
||||||
|
`
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract lines of text from `Value`
|
||||||
|
*
|
||||||
|
* @return {String[]}
|
||||||
|
*/
|
||||||
|
|
||||||
|
function getTextLines(value) {
|
||||||
|
return value.document.nodes.map(node => node.text).toArray()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subpages which are each a smoke test.
|
* Subpages which are each a smoke test.
|
||||||
*
|
*
|
||||||
@@ -145,6 +181,7 @@ class RichTextExample extends React.Component {
|
|||||||
render() {
|
render() {
|
||||||
const { text } = this.state
|
const { text } = this.state
|
||||||
if (text == null) return <Redirect to="/composition/split-join" />
|
if (text == null) return <Redirect to="/composition/split-join" />
|
||||||
|
const textLines = getTextLines(this.state.value)
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Instruction>
|
<Instruction>
|
||||||
@@ -161,6 +198,11 @@ class RichTextExample extends React.Component {
|
|||||||
</Tab>
|
</Tab>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
|
<Version>
|
||||||
|
{ANDROID_API_VERSION
|
||||||
|
? `Android API ${ANDROID_API_VERSION}`
|
||||||
|
: null}
|
||||||
|
</Version>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
<div>{this.state.text}</div>
|
<div>{this.state.text}</div>
|
||||||
</Instruction>
|
</Instruction>
|
||||||
@@ -186,6 +228,12 @@ class RichTextExample extends React.Component {
|
|||||||
renderNode={this.renderNode}
|
renderNode={this.renderNode}
|
||||||
renderMark={this.renderMark}
|
renderMark={this.renderMark}
|
||||||
/>
|
/>
|
||||||
|
<EditorText>
|
||||||
|
<EditorTextCaption>Text in Slate's `Value`</EditorTextCaption>
|
||||||
|
{textLines.map((line, index) => (
|
||||||
|
<div key={index}>{line.length > 0 ? line : ' '}</div>
|
||||||
|
))}
|
||||||
|
</EditorText>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@@ -83,6 +83,7 @@
|
|||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"slate": "*",
|
"slate": "*",
|
||||||
"slate-dev-benchmark": "*",
|
"slate-dev-benchmark": "*",
|
||||||
|
"slate-dev-environment": "*",
|
||||||
"slate-dev-test-utils": "*",
|
"slate-dev-test-utils": "*",
|
||||||
"slate-html-serializer": "*",
|
"slate-html-serializer": "*",
|
||||||
"slate-plain-serializer": "*",
|
"slate-plain-serializer": "*",
|
||||||
|
Reference in New Issue
Block a user