summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-core
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2017-02-26 22:35:51 +0100
committerSamy Pessé <samypesse@gmail.com>2017-02-26 22:35:51 +0100
commitd640636784bc86bcbe56f77c0455b19b22fe0e6f (patch)
tree6c3871d4680d4f0dca462378fb5b5d975249a890 /packages/gitbook-core
parent36b00d6cf2d521bdcfe2d954a02d6716c9de923e (diff)
downloadgitbook-d640636784bc86bcbe56f77c0455b19b22fe0e6f.zip
gitbook-d640636784bc86bcbe56f77c0455b19b22fe0e6f.tar.gz
gitbook-d640636784bc86bcbe56f77c0455b19b22fe0e6f.tar.bz2
Start removing nunjucks
Diffstat (limited to 'packages/gitbook-core')
-rw-r--r--packages/gitbook-core/src/components/PageContent.js94
-rw-r--r--packages/gitbook-core/src/index.js4
2 files changed, 96 insertions, 2 deletions
diff --git a/packages/gitbook-core/src/components/PageContent.js b/packages/gitbook-core/src/components/PageContent.js
new file mode 100644
index 0000000..b0998ef
--- /dev/null
+++ b/packages/gitbook-core/src/components/PageContent.js
@@ -0,0 +1,94 @@
+const React = require('react');
+const ImmutablePropTypes = require('react-immutable-proptypes');
+
+const NODES = {
+ // Blocks
+ heading_one: props => <h1>{props.children}</h1>,
+ heading_two: props => <h2>{props.children}</h2>,
+ heading_three: props => <h3>{props.children}</h3>,
+ heading_four: props => <h4>{props.children}</h4>,
+ heading_five: props => <h5>{props.children}</h5>,
+ heading_six: props => <h6>{props.children}</h6>,
+ paragraph: props => <p>{props.children}</p>
+};
+
+const MARKS = {
+ BOLD: props => <b>{props.children}</b>,
+ ITALIC: props => <em>{props.children}</em>,
+ STRIKETHROUGH: props => <del>{props.children}</del>,
+ CODE: props => <code>{props.children}</code>
+};
+
+
+/**
+ * Render a text node.
+ * @type {ReactClass}
+ */
+const Text = React.createClass({
+ propTypes: {
+ node: React.PropTypes.object.isRequired
+ },
+
+ render() {
+ const { node } = this.props;
+ const ranges = node.get('ranges');
+
+ return (
+ <div>
+
+ </div>
+ );
+ }
+});
+
+/**
+ * Inner content of a page.
+ * @type {ReactClass}
+ */
+const Node = React.createClass({
+ propTypes: {
+ node: React.PropTypes.object.isRequired
+ },
+
+ render() {
+ const { node } = this.props;
+
+ const children = node
+ .get('children')
+ .map((child) => {
+ if (child.kind == 'text') {
+ return <Text node={child} />;
+ } else {
+ return <Node node={child} />;
+ }
+ })
+ .toArray();
+
+ return React.createElement(
+ NODES[node.type],
+ {
+ node
+ },
+ children
+ );
+ }
+});
+
+/**
+ * Inner content of a page.
+ * @type {ReactClass}
+ */
+const PageContent = React.createClass({
+ propTypes: {
+ document: React.PropTypes.object.isRequired
+ },
+
+ render() {
+ const { document } = this.props;
+ return (
+ <Node node={document} />
+ );
+ }
+});
+
+module.exports = PageContent;
diff --git a/packages/gitbook-core/src/index.js b/packages/gitbook-core/src/index.js
index 5b92bc3..e8c1a5b 100644
--- a/packages/gitbook-core/src/index.js
+++ b/packages/gitbook-core/src/index.js
@@ -10,7 +10,7 @@ const { Flex, Box } = require('reflexbox');
const { InjectedComponent, InjectedComponentSet } = require('./components/InjectedComponent');
const { ImportLink, ImportScript, ImportCSS } = require('./components/Import');
-const HTMLContent = require('./components/HTMLContent');
+const PageContent = require('./components/PageContent');
const Link = require('./components/Link');
const Image = require('./components/Image');
const Icon = require('./components/Icon');
@@ -47,7 +47,7 @@ module.exports = {
I18nProvider,
InjectedComponent,
InjectedComponentSet,
- HTMLContent,
+ PageContent,
Head,
Panel,
Provider,