Convert SyntaxHighlight to TS
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
parent
8bf5d97b9e
commit
6f2ef34dd7
1 changed files with 16 additions and 16 deletions
|
@ -15,40 +15,40 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { highlightBlock } from 'highlight.js';
|
import { highlightBlock } from 'highlight.js';
|
||||||
import { replaceableComponent } from "../../../utils/replaceableComponent";
|
import { replaceableComponent } from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
interface IProps {
|
||||||
|
className?: string;
|
||||||
|
children?: React.ReactNode;
|
||||||
|
}
|
||||||
|
|
||||||
@replaceableComponent("views.elements.SyntaxHighlight")
|
@replaceableComponent("views.elements.SyntaxHighlight")
|
||||||
export default class SyntaxHighlight extends React.Component {
|
export default class SyntaxHighlight extends React.Component<IProps> {
|
||||||
static propTypes = {
|
private el: HTMLPreElement = null;
|
||||||
className: PropTypes.string,
|
|
||||||
children: PropTypes.node,
|
|
||||||
};
|
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props: IProps) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this._ref = this._ref.bind(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// componentDidUpdate used here for reusability
|
// componentDidUpdate used here for reusability
|
||||||
componentDidUpdate() {
|
public componentDidUpdate(): void {
|
||||||
if (this._el) highlightBlock(this._el);
|
if (this.el) highlightBlock(this.el);
|
||||||
}
|
}
|
||||||
|
|
||||||
// call componentDidUpdate because _ref is fired on initial render
|
// call componentDidUpdate because _ref is fired on initial render
|
||||||
// which does not fire componentDidUpdate
|
// which does not fire componentDidUpdate
|
||||||
_ref(el) {
|
private ref = (el: HTMLPreElement): void => {
|
||||||
this._el = el;
|
this.el = el;
|
||||||
this.componentDidUpdate();
|
this.componentDidUpdate();
|
||||||
}
|
};
|
||||||
|
|
||||||
render() {
|
public render(): JSX.Element {
|
||||||
const { className, children } = this.props;
|
const { className, children } = this.props;
|
||||||
|
|
||||||
return <pre className={`${className} mx_SyntaxHighlight`} ref={this._ref}>
|
return <pre className={`${className} mx_SyntaxHighlight`} ref={this.ref}>
|
||||||
<code>{ children }</code>
|
<code>{ children }</code>
|
||||||
</pre>;
|
</pre>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue