import * as mfm from "mfm-js";
import { unique } from "../prelude/array.js";
const wrappedEmojiRegex = /([:;])([^:;\s]{1,100})\1/g;
const glyphEmojiRegex = /;([^:;\s]{1,100});/g;
export function extractCustomEmojisFromMfm(nodes) {
    const emojiNodes = mfm.extract(nodes, (node)=>{
        return node.type === "emojiCode" && node.props.name.length <= 100;
    });
    const glyphNames = mfm.extract(nodes, (node)=>node.type === "text").flatMap((node)=>Array.from(node.props.text.matchAll(glyphEmojiRegex), (match)=>match[1]));
    return unique([
        ...emojiNodes.map((x)=>x.props.name),
        ...glyphNames
    ]);
}
export function extractCustomEmojiNamesFromText(texts) {
    const emojis = [];
    for (const text of texts){
        if (!text) continue;
        for (const match of text.matchAll(wrappedEmojiRegex)){
            emojis.push(match[2]);
        }
    }
    return unique(emojis);
}
