// @flow import * as React from 'react'; import remark from 'remark'; import remarkAttr from 'remark-attr'; import remarkStrip from 'strip-markdown'; import remarkEmoji from 'remark-emoji'; import reactRenderer from 'remark-react'; import ExternalLink from 'component/externalLink'; import defaultSchema from 'hast-util-sanitize/lib/github.json'; import { formatedLinks, inlineLinks } from 'util/remark-lbry'; import { Link } from 'react-router-dom'; import { formatLbryUrlForWeb } from 'util/url'; import EmbedPlayButton from 'component/embedPlayButton'; type SimpleTextProps = { children?: React.Node, }; type SimpleLinkProps = { href?: string, title?: string, children?: React.Node, }; type MarkdownProps = { strip?: boolean, content: ?string, promptLinks?: boolean, }; const SimpleText = (props: SimpleTextProps) => { return {props.children}; }; const SimpleLink = (props: SimpleLinkProps) => { const { title, children } = props; const { href } = props; if (!href) { return children || null; } if (!href.startsWith('lbry://')) { return ( {children} ); } const [uri, search] = href.split('?'); const urlParams = new URLSearchParams(search); const embed = urlParams.get('embed'); if (embed) { return ; } const webLink = formatLbryUrlForWeb(uri); // using Link after formatLbryUrl to handle "/" vs "#/" // for web and desktop scenarios respectively return ( { e.stopPropagation(); }} > {children} ); }; // Use github sanitation schema const schema = { ...defaultSchema }; // Extend sanitation schema to support lbry protocol schema.protocols.href.push('lbry'); schema.attributes.a.push('embed'); const REPLACE_REGEX = /(