Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// match: anyScopeRegex(rule.match.regex)
// })
// }
// function ignoreScopeAssign (rule, order, object = {}) {
// return ignoreScope(assign(rule, order, object))
// }
const previewRules = {
Array: defaultRules.Array,
// strong: ignoreScopeAssign(defaultRules.strong, 1), // bold
// em: ignoreScopeAssign(defaultRules.em, 1), // italics
// ubold: assign(ignoreScope(defaultRules.u), 2, { react: defaultRules.strong.react }),
// del: ignoreScopeAssign(defaultRules.del, 3),
// inlineCode: ignoreScopeAssign(defaultRules.inlineCode, 12),
text: assign(defaultRules.text, 100)
}
const rules = Object.assign({
// new mailto (open chat in dc?)
// blockQuote ? (requires css; could be used for replies)
// mentions? (this component requires somekind of access to the chat memberlist)
// codeBlock: assign(defaultRules.codeBlock, 11, {
// react: function (node, output, state) {
// var className = node.lang
// ? 'markdown-code markdown-code-' + node.lang
// : undefined
// // code with syntax highlighting (?)
// return <code>
// {node.content}
// </code>
// }
// }),
},
autolink: {
...defaultRules.autolink,
match: anyScopeRegex(/^<(https?:\/\/[^ >]+)>/),
},
url: defaultRules.url,
strong: defaultRules.strong,
em: defaultRules.em,
underline: defaultRules.u,
inlineCode: {
...defaultRules.inlineCode,
react: (node, _, state) => <code>{node.content}</code>,
},
shrug: {
// Edge case for shrug emoji getting parsed as markup.
order: defaultRules.text.order,
match: inlineRegex(/^¯\\_\(ツ\)_\/¯/),
parse: capture => ({
type: "text",
content: capture[0],
}),
react: null,
},
emoji: {
order: defaultRules.text.order,
match: inlineRegex(/^:([^\s:]+?(?:::skin-tone-\d)?):/),
parse: capture =>
nameToEmoji.has(capture[1])
? {
name: capture[1],
surrogate: nameToEmoji.get(capture[1]),
src: getEmojiUrl(nameToEmoji.get(capture[1]) ?? ""),
}),
react: (node, _, state) => (
{node.content}
),
},
roleMention: {
order: defaultRules.text.order,
match: inlineRegex(/^<@&\d+>/),
parse: () => ({
type: "mention",
content: "@unknown-role",
}),
react: null,
},
channelMention: {
order: defaultRules.text.order,
match: inlineRegex(/^<#\d+>/),
parse: () => ({
type: "mention",
content: "#unknown-channel",
}),
react: null,
},
}
const parseInline = parserFor(inlineRules, { inline: true })
const parseBlock = parserFor(blockRules, { inline: true })
const reactOutput = outputFor({ ...inlineRules, ...blockRules }, "react")
const ellipsize = (text: string, length: number) => {
const shortenedText = text.replace(/\s+/g, " ")
return shortenedText.length <= length