From 6f2ef34dd7c8c83eb7fcc9d07f243dfa2fb052ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Wed, 15 Sep 2021 21:09:23 +0200 Subject: [PATCH] Convert SyntaxHighlight to TS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- ...SyntaxHighlight.js => SyntaxHighlight.tsx} | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) rename src/components/views/elements/{SyntaxHighlight.js => SyntaxHighlight.tsx} (73%) diff --git a/src/components/views/elements/SyntaxHighlight.js b/src/components/views/elements/SyntaxHighlight.tsx similarity index 73% rename from src/components/views/elements/SyntaxHighlight.js rename to src/components/views/elements/SyntaxHighlight.tsx index 2c29f7c989..cd65cddfba 100644 --- a/src/components/views/elements/SyntaxHighlight.js +++ b/src/components/views/elements/SyntaxHighlight.tsx @@ -15,40 +15,40 @@ limitations under the License. */ import React from 'react'; -import PropTypes from 'prop-types'; import { highlightBlock } from 'highlight.js'; import { replaceableComponent } from "../../../utils/replaceableComponent"; +interface IProps { + className?: string; + children?: React.ReactNode; +} + @replaceableComponent("views.elements.SyntaxHighlight") -export default class SyntaxHighlight extends React.Component { - static propTypes = { - className: PropTypes.string, - children: PropTypes.node, - }; +export default class SyntaxHighlight extends React.Component { + private el: HTMLPreElement = null; - constructor(props) { + constructor(props: IProps) { super(props); - - this._ref = this._ref.bind(this); } // componentDidUpdate used here for reusability - componentDidUpdate() { - if (this._el) highlightBlock(this._el); + public componentDidUpdate(): void { + if (this.el) highlightBlock(this.el); } // call componentDidUpdate because _ref is fired on initial render // which does not fire componentDidUpdate - _ref(el) { - this._el = el; + private ref = (el: HTMLPreElement): void => { + this.el = el; this.componentDidUpdate(); - } + }; - render() { + public render(): JSX.Element { const { className, children } = this.props; - return
+        return 
             { children }
         
; } } +