From b0109f2c0d08782cd8e25c842b6ee97df76e60fb Mon Sep 17 00:00:00 2001 From: Punyapal Shah <53343069+MrPunyapal@users.noreply.github.com> Date: Tue, 3 Nov 2026 04:02:58 +0530 Subject: [PATCH] perf: reuse shortcode index when searching emoji --- resources/js/lib/emoji.ts | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/resources/js/lib/emoji.ts b/resources/js/lib/emoji.ts index 1cc6b1bb4..4b158a42c 100644 --- a/resources/js/lib/emoji.ts +++ b/resources/js/lib/emoji.ts @@ -80,21 +80,23 @@ export function searchEmoji( .replace(/^:+|:+$/g, ''); const best = new Map(); - Object.keys(shortcodeEmoji) - .filter((name) => name.includes(partial)) - .forEach((name) => { - const emoji = shortcodeEmoji[name]; - const rank = matchRank(name, partial); - const current = best.get(emoji); - - if ( - current === undefined || - rank < current.rank || - (rank === current.rank && name.length < current.name.length) - ) { - best.set(emoji, { name, rank }); - } - }); + for (const name of shortcodeNames) { + if (!name.includes(partial)) { + continue; + } + + const emoji = shortcodeEmoji[name]; + const rank = matchRank(name, partial); + const current = best.get(emoji); + + if ( + current === undefined || + rank < current.rank || + (rank === current.rank && name.length < current.name.length) + ) { + best.set(emoji, { name, rank }); + } + } return [...best.entries()] .sort(