Files
SHiNE-server/shine-UI/js/components/twemoji-catalog.js

53 lines
1.9 KiB
JavaScript

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` : '';
}