// @flow import * as React from "react"; const URL_REGEX = new RegExp( "^https://gist.github.com/([a-zA-Z\\d](?:[a-zA-Z\\d]|-(?=[a-zA-Z\\d])){0,38})/(.*)$" ); type Props = {| isSelected: boolean, attrs: {| href: string, matches: string[], |}, |}; class Gist extends React.Component { static ENABLED = [URL_REGEX]; ref = React.createRef(); get id() { const gistUrl = new URL(this.props.attrs.href); return gistUrl.pathname.split("/")[2]; } componentDidMount() { this.updateIframeContent(); } componentDidUpdate() { this.updateIframeContent(); } updateIframeContent = () => { const iframe = this.ref.current; if (!iframe) return; const id = this.id; // $FlowFixMe let doc = iframe.document; if (iframe.contentDocument) { doc = iframe.contentDocument; } else if (iframe.contentWindow) { doc = iframe.contentWindow.document; } const gistLink = `https://gist.github.com/${id}.js`; const gistScript = ``; const styles = ""; const iframeHtml = `${styles}${gistScript}`; if (!doc) return; doc.open(); doc.writeln(iframeHtml); doc.close(); }; render() { const id = this.id; return (