From c2cf614142580511dfb8cc18882a8e1e04cd16c8 Mon Sep 17 00:00:00 2001 From: ohmwraith Date: Sun, 26 Apr 2026 19:44:06 +0300 Subject: [PATCH] Add comments for emoji wrapping --- src/webpage/markdown.ts | 2 +- src/webpage/utils/utils.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/webpage/markdown.ts b/src/webpage/markdown.ts index fa51692..3972c0d 100644 --- a/src/webpage/markdown.ts +++ b/src/webpage/markdown.ts @@ -630,7 +630,7 @@ class MarkDown { mention.classList.add("mentionMD"); mention.contentEditable = "false"; mention.textContent = everyone ? "@everyone" : "@here"; - setTextWithWrappedEmoji(mention, mention.textContent || ""); + appendcurrent(); span.appendChild(mention); mention.setAttribute("real", everyone ? `@everyone` : "@here"); diff --git a/src/webpage/utils/utils.ts b/src/webpage/utils/utils.ts index 15ed929..4f10a0a 100644 --- a/src/webpage/utils/utils.ts +++ b/src/webpage/utils/utils.ts @@ -31,16 +31,17 @@ let instances: }[] | null = null; await setTheme(); +// Matches keycaps, flags, standard, skin-toned, and ZWJ emoji sequences. const emojiGraphemeRegex = /^(?:[0-9#*]\uFE0F?\u20E3|\p{Regional_Indicator}{2}|\p{Extended_Pictographic}(?:\uFE0F|\uFE0E)?[\u{1F3FB}-\u{1F3FF}]?(?:\u200D\p{Extended_Pictographic}(?:\uFE0F|\uFE0E)?[\u{1F3FB}-\u{1F3FF}]?)*?)$/u; export function setTextWithWrappedEmoji(target: HTMLElement, name: string) { target.textContent = ""; - + // Fallback for browsers without grapheme segmentation support. if (!("Segmenter" in Intl)) { target.textContent = name; return; } - const segmenter = new Intl.Segmenter("und", {granularity: "grapheme"}); + // Buffer plain text between emoji to keep fewer DOM nodes. let textBuffer = ""; const flushTextBuffer = () => { if (!textBuffer) return;