|
|
@ -1,18 +1,9 @@ |
|
|
|
import React from 'react'; |
|
|
|
import { Link } from 'react-router'; |
|
|
|
import ImagePreview from './ImagePreview'; |
|
|
|
import VideoPlayer from './VideoPlayer'; |
|
|
|
import * as utils from '../utils'; |
|
|
|
import { getTagName, getAttributes, getChildren, isElement } from 'jsonml.js/lib/utils'; |
|
|
|
import { getTagName, getChildren } from 'jsonml.js/lib/utils'; |
|
|
|
|
|
|
|
export default class Article extends React.Component { |
|
|
|
constructor(props) { |
|
|
|
super(props); |
|
|
|
|
|
|
|
this.imgToPreview = this.imgToPreview.bind(this); |
|
|
|
this.enhanceVideo = this.enhanceVideo.bind(this); |
|
|
|
} |
|
|
|
|
|
|
|
componentDidMount() { |
|
|
|
this.componentDidUpdate(); |
|
|
|
} |
|
|
@ -21,25 +12,6 @@ export default class Article extends React.Component { |
|
|
|
utils.setTitle(`${chinese || english} - Ant Design`); |
|
|
|
} |
|
|
|
|
|
|
|
imgToPreview(node) { |
|
|
|
if (getTagName(node) === 'p' && |
|
|
|
getTagName(getChildren(node)[0]) === 'img' && |
|
|
|
/preview-img/gi.test(getAttributes(getChildren(node)[0]).class)) { |
|
|
|
const imgs = getChildren(node) |
|
|
|
.filter((img) => isElement(img) && Object.keys(getAttributes(img)).length > 0) |
|
|
|
.map((img) => getAttributes(img)); |
|
|
|
return <ImagePreview imgs={imgs} />; |
|
|
|
} |
|
|
|
return node; |
|
|
|
} |
|
|
|
|
|
|
|
enhanceVideo(node) { |
|
|
|
if (getTagName(node) === 'video') { |
|
|
|
return <VideoPlayer video={getAttributes(node)} />; |
|
|
|
} |
|
|
|
return node; |
|
|
|
} |
|
|
|
|
|
|
|
render() { |
|
|
|
const { content, location } = this.props; |
|
|
|
const jumper = content.description.filter((node) => { |
|
|
@ -54,10 +26,7 @@ export default class Article extends React.Component { |
|
|
|
); |
|
|
|
}); |
|
|
|
|
|
|
|
const { meta, intro } = content; |
|
|
|
const description = content.description |
|
|
|
.map(this.imgToPreview) |
|
|
|
.map(this.enhanceVideo); |
|
|
|
const { meta, intro, description } = content; |
|
|
|
|
|
|
|
return ( |
|
|
|
<article className="markdown"> |
|
|
|