diff --git a/web-app/package.json b/web-app/package.json index a3c30347..dd253940 100644 --- a/web-app/package.json +++ b/web-app/package.json @@ -32,7 +32,6 @@ "@sentry/browser": "^5.15.4", "markdown-it": "^10.0.0", "markdown-it-emoji": "^1.4.0", - "markdown-it-prism": "^2.0.5", "moment": "^2.24.0", "prismjs": "^1.19.0", "react": "^16.13.1", diff --git a/web-app/src/components/Markdown/index.tsx b/web-app/src/components/Markdown/index.tsx index 591f7782..fc4ed155 100644 --- a/web-app/src/components/Markdown/index.tsx +++ b/web-app/src/components/Markdown/index.tsx @@ -1,8 +1,10 @@ import MarkdownIt from 'markdown-it' // @ts-ignore no types for package -import markdownEmoji from 'markdown-it-emoji' + +import Prism from 'prismjs' + // @ts-ignore no types for package -import prism from 'markdown-it-prism' +import markdownEmoji from 'markdown-it-emoji' import * as React from 'react' import onError from '../../services/sentry/onError' // load prism styles & language support @@ -13,13 +15,21 @@ const md: MarkdownIt = new MarkdownIt({ breaks: true, html: true, linkify: true, + highlight(str, lang) { + let hl + + try { + hl = Prism.highlight(str, Prism.languages[lang], lang) + } catch (error) { + console.error(error) + hl = md.utils.escapeHtml(str) + } + + return `
${hl}
` + }, }) // add emoji: https://github.com/markdown-it/markdown-it-emoji .use(markdownEmoji) - // add syntax highlighting through prism - .use(prism, { - defaultLanguage: 'js', - }) // const mdFeatures = [ // 'table',