UNPKG

@churchapps/apphelper-markdown

Version:

ChurchApps markdown/lexical editor components

29 lines (28 loc) 1.13 kB
import { EmojiNode, $isEmojiNode, $createEmojiNode } from "./EmojiNode"; import materialIcons from "../../IconNamesList"; import { $isTextNode } from "lexical"; const EMOJI_NODE_MARKDOWN_REGEX_QUERY = /:[A-Za-z_]+:$/; export const EMOJI_NODE_MARKDOWN_REGEX = new RegExp(EMOJI_NODE_MARKDOWN_REGEX_QUERY); const replaceEmojiMarkdownWithNode = (textNode) => { const emojiNode = $createEmojiNode(textNode.__text.replaceAll(":", "")); textNode.replace(emojiNode); return emojiNode; }; export const EMOJI_NODE_MARKDOWN_TRANSFORM = { dependencies: [EmojiNode], export: (node, exportChildren, exportFormat) => { if (!($isEmojiNode(node) || $isTextNode(node))) { return null; } if (!materialIcons || !materialIcons.includes(node.getTextContent().replaceAll(":", ""))) { return null; } const linkContent = ":" + node.__text.replaceAll(":", "") + ":"; return linkContent; }, importRegExp: EMOJI_NODE_MARKDOWN_REGEX, regExp: EMOJI_NODE_MARKDOWN_REGEX, replace: replaceEmojiMarkdownWithNode, trigger: ":", type: "text-match" };