import Leaf from './leaf'
import OffsetKey from '../utils/offset-key'
import React from 'react'
import groupByMarks from '../utils/group-by-marks'
import { List } from 'immutable'
/**
* Text.
*/
class Text extends React.Component {
static propTypes = {
node: React.PropTypes.object.isRequired,
renderMark: React.PropTypes.func.isRequired,
state: React.PropTypes.object.isRequired
};
render() {
const { node } = this.props
return (
{this.renderLeaves()}
)
}
renderLeaves() {
const { node } = this.props
const { characters } = node
const ranges = groupByMarks(characters)
return ranges.map((range, i, ranges) => {
const previous = ranges.slice(0, i)
const offset = previous.size
? previous.map(range => range.text).join('').length
: 0
return this.renderLeaf(range, offset)
})
}
renderLeaf(range, offset) {
const { node, renderMark, state } = this.props
const text = range.text
const marks = range.marks
const start = offset
const end = offset + text.length
const offsetKey = OffsetKey.stringify({
key: node.key,
start,
end
})
return (
)
}
}
/**
* Export.
*/
export default Text