diff --git a/src/Common.js b/src/Common.js
index 5a35397..f00b742 100644
--- a/src/Common.js
+++ b/src/Common.js
@@ -5,11 +5,9 @@ import {THUHOLE_API_ROOT} from './flows_api';
import HtmlToReact from 'html-to-react'
import './Common.css';
-import { URL_PID_RE, URL_RE, split_text } from './text_splitter';
-import ProcessNodeDefinitions from 'html-to-react/lib/process-node-definitions';
+import { URL_PID_RE, URL_RE, PID_RE, NICKNAME_RE, split_text } from './text_splitter';
-import ReactMarkdown from 'react-markdown'
-import htmlParser from 'react-markdown/plugins/html-parser'
+import renderMd from './Markdown'
export {format_time,Time,TitleLine};
@@ -61,38 +59,20 @@ export class HighlightedText extends PureComponent {
}
// props: text, show_pid, color_picker
-export class HighlightedMarkdown extends PureComponent {
+export class HighlightedMarkdown extends Component {
render() {
+ const props = this.props
const processDefs = new HtmlToReact.ProcessNodeDefinitions(React)
- const astInst = [
+ const processInstructions = [
{
shouldProcessNode (node) {
- return node.name === 'link' // urls
- },
- processNode (node) {
- const originalHref = node.attribs.href
- if (URL_PID_RE.test(originalHref)) { // url_pid
- return (
- /##
- )
- } else if (URL_RE.test(originalHref)) { // url
- return (
-
- {originalHref}
-
- )
- } else {// other cases are invalid, e.g. javascript:alert, etc
- return ()
- }
- }
- },
- {
- shouldProcessNode (node) {
- return node.name === 'text' // pid, nickname, search
+ return node.type === 'text' // pid, nickname, search
},
processNode (node) {
const originalText = node.data
const splitted = split_text(originalText, [
+ ['url_pid', URL_PID_RE],
+ ['url',URL_RE],
['pid',PID_RE],
['nickname',NICKNAME_RE],
])
@@ -100,12 +80,15 @@ export class HighlightedMarkdown extends PureComponent {
return (
<>
{splitted.map(([rule, p], idx) => {
-
- {rule==='pid' ? {e.preventDefault(); this.props.show_pid(p.substring(1));}}>{p} :
- rule==='nickname' ?