import { TWEMOJI_GROUP_ACTIVITY } from './twemoji-activity.js?v=202607151545'; import { TWEMOJI_GROUP_ANIMALS_NATURE } from './twemoji-animals_nature.js?v=202607151545'; import { TWEMOJI_GROUP_FLAGS } from './twemoji-flags.js?v=202607151545'; import { TWEMOJI_GROUP_FOOD_DRINK } from './twemoji-food_drink.js?v=202607151545'; import { TWEMOJI_GROUP_OBJECTS } from './twemoji-objects.js?v=202607151545'; import { TWEMOJI_GROUP_PEOPLE } from './twemoji-people.js?v=202607151545'; import { TWEMOJI_GROUP_SMILEYS } from './twemoji-smileys.js?v=202607151545'; import { TWEMOJI_GROUP_SYMBOLS } from './twemoji-symbols.js?v=202607151545'; import { TWEMOJI_GROUP_TRAVEL_PLACES } from './twemoji-travel_places.js?v=202607151545'; const TWEMOJI_SVG_BASE_URL = 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/svg/'; function getTwemojiCodepoint(emoji) { return Array.from(String(emoji || '')) .map((char) => char.codePointAt(0)) .filter((codepoint) => codepoint && codepoint !== 0xfe0f) .map((codepoint) => codepoint.toString(16)) .join('-'); } function withPreviewUrls(group) { return { ...group, items: group.items.map((item) => ({ ...item, name: item.name || String(item.emoji || ''), previewUrl: getTwemojiPreviewUrl(item.emoji), animatedUrl: getTwemojiAssetUrl(item.emoji), })), }; } export const TWEMOJI_GROUPS = [ TWEMOJI_GROUP_SMILEYS, TWEMOJI_GROUP_PEOPLE, TWEMOJI_GROUP_ANIMALS_NATURE, TWEMOJI_GROUP_FOOD_DRINK, TWEMOJI_GROUP_TRAVEL_PLACES, TWEMOJI_GROUP_ACTIVITY, TWEMOJI_GROUP_OBJECTS, TWEMOJI_GROUP_SYMBOLS, TWEMOJI_GROUP_FLAGS, ].map(withPreviewUrls); export function getTwemojiAssetUrl(emoji) { return getTwemojiPreviewUrl(emoji); } export function getTwemojiPreviewUrl(emoji) { const codepoint = getTwemojiCodepoint(emoji); return codepoint ? `${TWEMOJI_SVG_BASE_URL}${codepoint}.svg` : ''; }