1
0
silverbullet/plugs/emoji/emoji.ts

28 lines
680 B
TypeScript

import emojiBlob from "./emoji.json" assert { type: "json" };
import type { CompleteEvent } from "$sb/app_event.ts";
const emojis = emojiBlob.split("|").map((line) => line.split(" "));
export function emojiCompleter({ linePrefix, pos }: CompleteEvent) {
const match = /:([\w]+)$/.exec(linePrefix);
if (!match) {
return null;
}
const [fullMatch, emojiName] = match;
const filteredEmoji = emojis.filter(([shortcode]) =>
shortcode.includes(emojiName)
);
return {
from: pos - fullMatch.length,
filter: false,
options: filteredEmoji.map(([shortcode, emoji]) => ({
detail: shortcode,
label: emoji,
type: "emoji",
})),
};
}