blob: f7421885ea04b8f29dd70d53c4a8ff6ebbdd5f3a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import ReactMarkdown from 'react-markdown';
import rehypeRaw from 'rehype-raw';
import Zoom from 'react-medium-image-zoom';
import 'react-medium-image-zoom/dist/styles.css';
interface Props {
className?: string;
children: string;
}
export const Markdown = ({ className, children }: Props) => {
return (
<ReactMarkdown
className={className}
rehypePlugins={[rehypeRaw]}
components={{
img: ({ alt, ...props }) => (
<Zoom>
<img alt={alt} {...props} />
</Zoom>
),
a: ({ href, children, ...props }) => (
<a href={href} {...props} target="_blank" rel="noreferrer">
{children}
</a>
),
}}
>
{children}
</ReactMarkdown>
);
};