import { EmbeddedEmojiParser, EmbeddedHashtagParser, EmbeddedMentionParser, EmbeddedUrlParser, EmbeddedWebsocketUrlParser, parseContent } from '@/lib/content-parser' import { TEmoji } from '@/types' import { useMemo } from 'react' import { EmbeddedHashtag, EmbeddedMention, EmbeddedWebsocketUrl } from '../Embedded' import Emoji from '../Emoji' import ExternalLink from '../ExternalLink' export default function ProfileAbout({ about, emojis, className }: { about?: string emojis?: TEmoji[] className?: string }) { const aboutNodes = useMemo(() => { if (!about) return null const nodes = parseContent(about, [ EmbeddedMentionParser, EmbeddedWebsocketUrlParser, EmbeddedUrlParser, EmbeddedHashtagParser, EmbeddedEmojiParser ]) // Create emoji map for quick lookup const emojiMap = new Map() emojis?.forEach((emoji) => { emojiMap.set(emoji.shortcode, emoji) }) return nodes.map((node, index) => { if (node.type === 'url') { return } if (node.type === 'websocket-url') { return } if (node.type === 'hashtag') { return } if (node.type === 'mention') { return } if (node.type === 'emoji') { const shortcode = node.data.split(':')[1] const emoji = emojiMap.get(shortcode) if (!emoji) return node.data return } return node.data }) }, [about, emojis]) return
{aboutNodes}
}