You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
611 B
TypeScript
31 lines
611 B
TypeScript
import React from 'react';
|
|
import DOMPurify from 'dompurify';
|
|
|
|
interface ReceivedProps {
|
|
html: string;
|
|
tag?: string;
|
|
key?: any;
|
|
className?: string;
|
|
}
|
|
|
|
// Needed because of https://github.com/microsoft/tslint-microsoft-contrib/issues/339
|
|
type Props = ReceivedProps;
|
|
|
|
export const SessionHtmlRenderer: React.SFC<Props> = ({
|
|
tag = 'div',
|
|
key,
|
|
html,
|
|
className,
|
|
}) => {
|
|
const clean = DOMPurify.sanitize(html, {
|
|
USE_PROFILES: { html: true },
|
|
FORBID_ATTR: ['script'],
|
|
});
|
|
|
|
return React.createElement(tag, {
|
|
key,
|
|
className,
|
|
dangerouslySetInnerHTML: { __html: clean },
|
|
});
|
|
};
|