InsidersByte/react-markdown-renderer

View on GitHub
src/index.js

Summary

Maintainability
A
0 mins
Test Coverage
/* @flow */

import React from 'react';
import Remarkable from 'remarkable';

type PropsType = {
  markdown: string,
  options?: {
    preset?: 'default' | 'commonmark' | 'full',
    html?: boolean,
    xhtmlOut?: boolean,
    breaks?: boolean,
    langPrefix?: string,
    linkify?: boolean,
    typographer?: boolean,
    quotes?: string,
    highlight?: (str: string, lang: string) => string,
  },
};

const MarkdownRenderer = ({
  markdown,
  options: { preset, ...options } = {},
  ...props
}: PropsType) => {
  const remarkable = new Remarkable(preset || 'default', options);
  const html = remarkable.render(markdown);

  return <div {...props} dangerouslySetInnerHTML={{ __html: html }} />;
};

export default MarkdownRenderer;