/* eslint-disable react/no-danger */ import React from 'react'; import jsxToString from './jsxToString.js'; import Prism from 'prismjs'; import PrismJsx from 'prismjs/components/prism-jsx.js'; // eslint-disable-line no-unused-vars const sources = { React: 'React', HTML: 'HTML' }; export default class SourceToggle extends React.Component { constructor(props) { super(props); this.state = { source: sources.React }; } renderFromSource() { let {jsx, html, renderFromJsx} = this.props; let {source} = this.state; let classname = 'source-toggle-example'; switch (source) { case sources.HTML: return renderFromJsx ?
{jsx}
:
; case sources.React: default: return
{jsx}
; } } renderMarkdown() { let {jsx, html, exclude} = this.props; let {source} = this.state; switch (source) { case sources.HTML: return {__html: Prism.highlight(html, Prism.languages.html)}; case sources.React: default: return {__html: Prism.highlight(jsxToString({jsx, exclude}), Prism.languages.jsx)}; } } render() { let {title} = this.props; return (
{title &&
{title}
}
{this.renderFromSource()}
{Object.keys(sources).map((source, i) => (
this.setState({source})}> {source}
))}
							
						
); } }