Skip to content

Commit

Permalink
support react v16
Browse files Browse the repository at this point in the history
  • Loading branch information
briancappello committed Oct 7, 2017
1 parent 798da1d commit 388c8ec
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 39 deletions.
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@
"homepage": "https://github.com/akiran/react-highlight",
"dependencies": {
"highlight.js": "^9.11.0",
"react": "^15.5.4",
"react-dom": "^15.5.4"
"react": "^15.5.4"
},
"devDependencies": {
"autoprefixer": "^6.7.7",
Expand Down
35 changes: 16 additions & 19 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import hljs from 'highlight.js';
import React from 'react';
import ReactDOM from 'react-dom';

class Highlight extends React.Component {
componentDidMount() {
Expand All @@ -12,32 +11,30 @@ class Highlight extends React.Component {
}

highlightCode() {
const domNode = ReactDOM.findDOMNode(this);
const nodes = domNode.querySelectorAll('pre code');

let i;
for (i = 0; i < nodes.length; i++) {
hljs.highlightBlock(nodes[i]);
}
const nodes = this.el.querySelectorAll('pre code');
nodes.forEach((node) => hljs.highlightBlock(node));
}

setEl = (el) => {
this.el = el;
};

render() {
const {children, className, element, innerHTML} = this.props;
let Element = element ? React.DOM[element] : null;
const {children, className, element: Element, innerHTML} = this.props;
const props = { ref: this.setEl, className };

if (innerHTML) {
if (!Element) {
Element = React.DOM.div
}

return Element({dangerouslySetInnerHTML: {__html: children}, className: className || null}, null);
} else {
props.dangerouslySetInnerHTML = { __html: children };
if (Element) {
return Element({className}, children);
} else {
return <pre><code className={className}>{children}</code></pre>;
return <Element {...props} />;
}
return <div {...props} />;
}

if (Element) {
return <Element {...props}>{children}</Element>;
}
return <pre ref={this.setEl}><code className={className}>{children}</code></pre>;
}
}

Expand Down
34 changes: 16 additions & 18 deletions src/optimized.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import hljs from'highlight.js/lib/highlight';
import React from'react';
import ReactDOM from'react-dom';

class Highlight extends React.Component {
componentDidMount() {
Expand All @@ -13,8 +12,7 @@ class Highlight extends React.Component {

highlightCode() {
const {className, languages} = this.props;
const domNode = ReactDOM.findDOMNode(this);
const nodes = domNode.querySelectorAll('pre code');
const nodes = this.el.querySelectorAll('pre code');

if ((languages.length === 0) && className) {
languages.push(className);
Expand All @@ -24,29 +22,29 @@ class Highlight extends React.Component {
hljs.registerLanguage(lang, require('highlight.js/lib/languages/' + lang));
});

let i;
for (i = 0; i < nodes.length; i++) {
hljs.highlightBlock(nodes[i]);
}
nodes.forEach((node) => hljs.highlightBlock(node));
}

setEl = (el) => {
this.el = el;
};

render() {
const {children, className, element, innerHTML} = this.props;
let Element = element ? React.DOM[element] : null;
const {children, className, element: Element, innerHTML} = this.props;
const props = { ref: this.setEl, className };

if (innerHTML) {
if (!Element) {
Element = React.DOM.div
}

return Element({dangerouslySetInnerHTML: {__html: children}, className: className || null}, null);
} else {
props.dangerouslySetInnerHTML = { __html: children };
if (Element) {
return Element({className}, children);
} else {
return <pre><code className={className}>{children}</code></pre>;
return <Element {...props} />;
}
return <div {...props} />;
}

if (Element) {
return <Element {...props}>{children}</Element>;
}
return <pre ref={this.setEl}><code className={className}>{children}</code></pre>;
}
}

Expand Down

0 comments on commit 388c8ec

Please sign in to comment.