import React, { Children, cloneElement } from 'react'; import { Link } from 'react-router'; import * as utils from '../utils'; import { getTagName, getChildren } from 'jsonml.js/lib/utils'; import { Timeline } from 'antd'; export default class Article extends React.Component { componentDidMount() { this.componentDidUpdate(); } componentDidUpdate() { const { chinese, english } = this.props.content.meta; utils.setTitle(`${chinese || english} - Ant Design`); } getTimelineFromArticle(article) { const { content } = this.props; const { meta } = content; if (!meta.timeline) { return article; } const timelineItems = []; let temp = []; Children.forEach(article.props.children, (child, i) => { if (child.type === 'h2' && temp.length > 0) { timelineItems.push({temp}); temp = []; } temp.push(child); }); return cloneElement(article, { children: {timelineItems}, }); } render() { const { content, location } = this.props; const jumper = content.description.filter((node) => { return getTagName(node) === 'h2'; }).map((node) => { return (
  • {utils.jsonmlToComponent(location.pathname, getChildren(node)[0])}
  • ); }); const { meta, intro, description } = content; return (

    {meta.english} {meta.chinese} { !meta.subtitle ? null : {meta.subtitle} }

    { !intro ? null : utils.jsonmlToComponent( location.pathname, ['section', { className: 'markdown' }].concat(intro) ) } { (jumper.length > 0 && meta.toc !== false) ?
    : null } { this.getTimelineFromArticle(utils.jsonmlToComponent( location.pathname, ['section', { className: 'markdown' }].concat(description) )) }
    ); } }