1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-20 21:59:43 +02:00
planka/client/src/lib/custom-ui/components/Markdown/Markdown.jsx

44 lines
1.2 KiB
React
Raw Normal View History

import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import ReactMarkdown from 'react-markdown';
const Markdown = React.memo(({ linkStopPropagation, ...props }) => {
const handleLinkClick = useCallback((event) => {
event.stopPropagation();
}, []);
const linkRenderer = useCallback(
/* eslint-disable jsx-a11y/anchor-has-content,
jsx-a11y/click-events-have-key-events,
jsx-a11y/no-static-element-interactions,
react/jsx-props-no-spreading */
(linkProps) => <a {...linkProps} onClick={handleLinkClick} />,
/* eslint-enable jsx-a11y/anchor-has-content,
jsx-a11y/click-events-have-key-events,
jsx-a11y/no-static-element-interactions,
react/jsx-props-no-spreading */
[handleLinkClick],
);
let renderers;
if (linkStopPropagation) {
renderers = {
link: linkRenderer,
};
}
// eslint-disable-next-line react/jsx-props-no-spreading
return <ReactMarkdown {...props} renderers={renderers} />;
});
Markdown.propTypes = {
linkStopPropagation: PropTypes.bool,
};
Markdown.defaultProps = {
linkStopPropagation: false,
};
export default Markdown;