WIP: эмодзи-пикер (Telegram-набор) — чекпоинт незавершённой работы

- Эмодзи-пикер: js/components/emoji-picker.js + каталог telegram-emoji-*.js
  (smileys/people/animals_nature/food_drink/travel_places/activity/objects/
  symbols/flags) + 631 ассет в assets/emoji (7.2 МБ).
- Интеграция пикера: chat-view.js, app.js, index.html, styles/components.css.
- Дев-скрипты генерации превью + THIRD_PARTY_NOTICES.
- Работа НЕ завершена (WIP), сохранено как чекпоинт. С origin (+56) пока НЕ
  мержится — большой мерж будет после завершения, отдельным шагом.
- VERSION: client 1.2.263.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pixel
2026-07-15 21:28:45 +03:00
co-authored by Claude Opus 4.8
parent 8c4997ee2e
commit 266a74ef79
650 changed files with 3333 additions and 13 deletions
+263
View File
@@ -0,0 +1,263 @@
import {
TELEGRAM_EMOJI_GROUPS,
getTelegramEmojiAssetUrl,
getTelegramEmojiPreviewUrl,
} from './telegram-emoji-catalog.js?v=202607151545';
const RECENT_STORAGE_KEY = 'shine-ui-recent-emojis-v1';
const MAX_RECENT = 28;
const ALL_EMOJI_ITEMS = TELEGRAM_EMOJI_GROUPS.flatMap((group) => group.items);
const EMOJI_ASSET_BY_CHAR = new Map(ALL_EMOJI_ITEMS.map((item) => [item.emoji, item]));
const TELEGRAM_EMOJI_MATCHER = new RegExp(
[...EMOJI_ASSET_BY_CHAR.keys()]
.sort((left, right) => right.length - left.length)
.map((emoji) => emoji.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&'))
.join('|'),
'gu',
);
const DEFAULT_RECENT = ALL_EMOJI_ITEMS.slice(0, 7).map((item) => item.emoji);
let activeAnimation = null;
function loadRecent() {
try {
const parsed = JSON.parse(localStorage.getItem(RECENT_STORAGE_KEY) || '[]');
return Array.isArray(parsed)
? parsed.filter((item) => typeof item === 'string' && item).slice(0, MAX_RECENT)
: [];
} catch {
return [];
}
}
function saveRecent(items) {
try {
localStorage.setItem(RECENT_STORAGE_KEY, JSON.stringify(items.slice(0, MAX_RECENT)));
} catch {
// Selection remains usable when browser storage is unavailable.
}
}
function appendAnimatedAsset(root, item) {
const previewUrl = item.previewUrl || getTelegramEmojiPreviewUrl(item.file);
const animatedUrl = item.animatedUrl || getTelegramEmojiAssetUrl(item.file);
const image = document.createElement('img');
image.className = 'telegram-emoji-image';
image.alt = '';
image.decoding = 'async';
image.setAttribute('aria-hidden', 'true');
let isActive = false;
let sourceVersion = 0;
const setSource = (source) => {
const requestedVersion = sourceVersion + 1;
sourceVersion = requestedVersion;
root.classList.remove('is-error');
image.onload = () => {
if (requestedVersion !== sourceVersion) return;
if (isActive) root.classList.remove('is-loading');
};
image.onerror = () => {
if (requestedVersion !== sourceVersion) return;
if (isActive) {
isActive = false;
root.classList.remove('is-active', 'is-loading');
if (activeAnimation?.root === root) activeAnimation = null;
setSource(previewUrl);
return;
}
root.classList.add('is-error');
image.removeAttribute('src');
};
image.src = source;
};
const deactivate = () => {
isActive = false;
root.classList.remove('is-active', 'is-loading', 'is-error');
if (activeAnimation?.root === root) activeAnimation = null;
setSource(previewUrl);
};
const activate = () => {
if (activeAnimation?.root && activeAnimation.root !== root) {
activeAnimation.deactivate();
}
activeAnimation = { root, deactivate };
isActive = true;
root.classList.add('is-active', 'is-loading');
setSource(animatedUrl);
};
const onPointerOver = (event) => {
if (event.relatedTarget && root.contains(event.relatedTarget)) return;
if (event.pointerType === 'mouse') activate();
};
const onPointerOut = (event) => {
if (event.relatedTarget && root.contains(event.relatedTarget)) return;
if (event.pointerType === 'mouse') deactivate();
};
const onPointerDown = (event) => {
if (event.pointerType === 'mouse') return;
root.setPointerCapture?.(event.pointerId);
activate();
};
const onPointerEnd = (event) => {
if (event.pointerType === 'mouse') return;
if (root.hasPointerCapture?.(event.pointerId)) root.releasePointerCapture?.(event.pointerId);
deactivate();
};
root.addEventListener('pointerover', onPointerOver);
root.addEventListener('pointerout', onPointerOut);
root.addEventListener('pointerdown', onPointerDown);
root.addEventListener('pointerup', onPointerEnd);
root.addEventListener('pointercancel', onPointerEnd);
root.addEventListener('lostpointercapture', deactivate);
setSource(previewUrl);
root.append(image);
}
export function stopAllTelegramEmojiAnimations() {
activeAnimation?.deactivate();
activeAnimation = null;
}
function createEmojiButton(item, onSelect) {
const button = document.createElement('button');
button.type = 'button';
button.className = 'emoji-picker-item';
button.setAttribute('aria-label', `Add ${item.emoji}`);
button.title = item.emoji;
button.addEventListener('pointerdown', (event) => event.preventDefault());
button.addEventListener('click', () => onSelect(item.emoji));
const preview = document.createElement('span');
preview.className = 'emoji-picker-preview';
appendAnimatedAsset(preview, item);
button.append(preview);
return button;
}
export function isTelegramAnimatedEmoji(emoji) {
return EMOJI_ASSET_BY_CHAR.has(emoji);
}
export function createTelegramAnimatedEmoji(emoji, { className = '' } = {}) {
const item = EMOJI_ASSET_BY_CHAR.get(emoji);
const root = document.createElement('span');
root.className = `telegram-emoji ${className}`.trim();
root.setAttribute('aria-label', emoji);
root.setAttribute('role', 'img');
if (!item) {
root.textContent = emoji;
return root;
}
appendAnimatedAsset(root, item);
return root;
}
export function appendTelegramAnimatedText(root, text, { className = '' } = {}) {
const source = String(text || '');
let cursor = 0;
let found = false;
TELEGRAM_EMOJI_MATCHER.lastIndex = 0;
for (const match of source.matchAll(TELEGRAM_EMOJI_MATCHER)) {
const index = Number(match.index || 0);
if (index > cursor) root.append(document.createTextNode(source.slice(cursor, index)));
root.append(createTelegramAnimatedEmoji(match[0], { className }));
cursor = index + match[0].length;
found = true;
}
if (!found) {
root.textContent = source;
return false;
}
if (cursor < source.length) root.append(document.createTextNode(source.slice(cursor)));
return true;
}
export function createEmojiPicker({ onSelect }) {
const root = document.createElement('section');
root.className = 'emoji-picker';
root.setAttribute('aria-label', 'Emoji picker');
const recentSection = document.createElement('section');
recentSection.className = 'emoji-picker-section emoji-picker-recent';
const recentTitle = document.createElement('strong');
recentTitle.className = 'emoji-picker-section-title';
recentTitle.textContent = 'Recent';
const recentGrid = document.createElement('div');
recentGrid.className = 'emoji-picker-grid';
recentSection.append(recentTitle, recentGrid);
const categoryTabs = document.createElement('div');
categoryTabs.className = 'emoji-picker-tabs';
categoryTabs.setAttribute('role', 'tablist');
const categorySection = document.createElement('section');
categorySection.className = 'emoji-picker-section';
const categoryTitle = document.createElement('strong');
categoryTitle.className = 'emoji-picker-section-title';
const categoryGrid = document.createElement('div');
categoryGrid.className = 'emoji-picker-grid';
categorySection.append(categoryTitle, categoryGrid);
let activeGroup = TELEGRAM_EMOJI_GROUPS[0];
const tabs = new Map();
const rememberAndSelect = (emoji) => {
const recent = [emoji, ...loadRecent().filter((item) => item !== emoji)];
saveRecent(recent);
renderRecent();
onSelect?.(emoji);
};
const renderRecent = () => {
const recentItems = (loadRecent().length ? loadRecent() : DEFAULT_RECENT)
.map((emoji) => EMOJI_ASSET_BY_CHAR.get(emoji))
.filter(Boolean);
stopAllTelegramEmojiAnimations();
recentGrid.replaceChildren(...recentItems.map((item) => createEmojiButton(item, rememberAndSelect)));
};
const renderGroup = () => {
categoryTitle.textContent = activeGroup.label;
stopAllTelegramEmojiAnimations();
categoryGrid.replaceChildren(...activeGroup.items.map((item) => createEmojiButton(item, rememberAndSelect)));
tabs.forEach((tab, groupId) => {
const active = groupId === activeGroup.id;
tab.classList.toggle('is-active', active);
tab.setAttribute('aria-selected', String(active));
});
};
TELEGRAM_EMOJI_GROUPS.forEach((group) => {
const tab = document.createElement('button');
tab.type = 'button';
tab.className = 'emoji-picker-tab';
tab.textContent = group.icon;
tab.title = group.label;
tab.setAttribute('aria-label', group.label);
tab.setAttribute('role', 'tab');
tab.addEventListener('click', () => {
activeGroup = group;
renderGroup();
});
tabs.set(group.id, tab);
categoryTabs.append(tab);
});
root.append(recentSection, categoryTabs, categorySection);
renderRecent();
renderGroup();
return root;
}
@@ -0,0 +1,108 @@
export const TELEGRAM_EMOJI_GROUP_ACTIVITY = {
"id": "activity",
"label": "Активности",
"icon": "🎉",
"items": [
{
"file": "Activity/1st Place Medal.webp",
"emoji": "🥇"
},
{
"file": "Activity/2nd Place Medal.webp",
"emoji": "🥈"
},
{
"file": "Activity/3rd Place Medal.webp",
"emoji": "🥉"
},
{
"file": "Activity/Admission Tickets.webp",
"emoji": "🎟️"
},
{
"file": "Activity/Artist Palette.webp",
"emoji": "🎨"
},
{
"file": "Activity/Balloon.webp",
"emoji": "🎈"
},
{
"file": "Activity/Basketball.webp",
"emoji": "🏀"
},
{
"file": "Activity/Christmas Tree.webp",
"emoji": "🎄"
},
{
"file": "Activity/Confetti Ball.webp",
"emoji": "🎊"
},
{
"file": "Activity/Crystal Ball.webp",
"emoji": "🔮"
},
{
"file": "Activity/Firecracker.webp",
"emoji": "🧨"
},
{
"file": "Activity/Fireworks.webp",
"emoji": "🎆"
},
{
"file": "Activity/Jack O Lantern.webp",
"emoji": "🎃"
},
{
"file": "Activity/Magic Wand.webp",
"emoji": "🪄"
},
{
"file": "Activity/Military Medal.webp",
"emoji": "🎖️"
},
{
"file": "Activity/Mirror Ball.webp",
"emoji": "🪩"
},
{
"file": "Activity/Party Popper.webp",
"emoji": "🎉"
},
{
"file": "Activity/Performing Arts.webp",
"emoji": "🎭"
},
{
"file": "Activity/Soccer Ball.webp",
"emoji": "⚽"
},
{
"file": "Activity/Sparkler.webp",
"emoji": "🎇"
},
{
"file": "Activity/Sparkles.webp",
"emoji": "✨"
},
{
"file": "Activity/Sports Medal.webp",
"emoji": "🏅"
},
{
"file": "Activity/Ticket.webp",
"emoji": "🎫"
},
{
"file": "Activity/Trophy.webp",
"emoji": "🏆"
},
{
"file": "Activity/Video Game.webp",
"emoji": "🎮"
}
]
};
@@ -0,0 +1,488 @@
export const TELEGRAM_EMOJI_GROUP_ANIMALS_NATURE = {
"id": "animals-and-nature",
"label": "Природа и животные",
"icon": "🌿",
"items": [
{
"file": "Animals and Nature/Ant.webp",
"emoji": "🐜"
},
{
"file": "Animals and Nature/Baby Chick.webp",
"emoji": "🐤"
},
{
"file": "Animals and Nature/Bat.webp",
"emoji": "🦇"
},
{
"file": "Animals and Nature/Bear.webp",
"emoji": "🐻"
},
{
"file": "Animals and Nature/Beetle.webp",
"emoji": "🪲"
},
{
"file": "Animals and Nature/Bird.webp",
"emoji": "🐦"
},
{
"file": "Animals and Nature/Bison.webp",
"emoji": "🦬"
},
{
"file": "Animals and Nature/Black Cat.webp",
"emoji": "🐈‍⬛"
},
{
"file": "Animals and Nature/Blossom.webp",
"emoji": "🌼"
},
{
"file": "Animals and Nature/Bouquet.webp",
"emoji": "💐"
},
{
"file": "Animals and Nature/Bug.webp",
"emoji": "🐛"
},
{
"file": "Animals and Nature/Butterfly.webp",
"emoji": "🦋"
},
{
"file": "Animals and Nature/Cactus.webp",
"emoji": "🌵"
},
{
"file": "Animals and Nature/Cat Face.webp",
"emoji": "🐱"
},
{
"file": "Animals and Nature/Cat.webp",
"emoji": "🐈"
},
{
"file": "Animals and Nature/Cherry Blossom.webp",
"emoji": "🌸"
},
{
"file": "Animals and Nature/Chicken.webp",
"emoji": "🐔"
},
{
"file": "Animals and Nature/Cloud With Lightning And Rain.webp",
"emoji": "⛈️"
},
{
"file": "Animals and Nature/Cloud With Lightning.webp",
"emoji": "🌩️"
},
{
"file": "Animals and Nature/Cloud With Rain.webp",
"emoji": "🌧️"
},
{
"file": "Animals and Nature/Cloud With Snow.webp",
"emoji": "🌨️"
},
{
"file": "Animals and Nature/Cloud.webp",
"emoji": "☁️"
},
{
"file": "Animals and Nature/Cockroach.webp",
"emoji": "🪳"
},
{
"file": "Animals and Nature/Cow.webp",
"emoji": "🐄"
},
{
"file": "Animals and Nature/Cricket.webp",
"emoji": "🦗"
},
{
"file": "Animals and Nature/Deciduous Tree.webp",
"emoji": "🌳"
},
{
"file": "Animals and Nature/Deer.webp",
"emoji": "🦌"
},
{
"file": "Animals and Nature/Dog Face.webp",
"emoji": "🐶"
},
{
"file": "Animals and Nature/Dove.webp",
"emoji": "🕊️"
},
{
"file": "Animals and Nature/Duck.webp",
"emoji": "🦆"
},
{
"file": "Animals and Nature/Evergreen Tree.webp",
"emoji": "🌲"
},
{
"file": "Animals and Nature/Fire.webp",
"emoji": "🔥"
},
{
"file": "Animals and Nature/First Quarter Moon Face.webp",
"emoji": "🌛"
},
{
"file": "Animals and Nature/First Quarter Moon.webp",
"emoji": "🌓"
},
{
"file": "Animals and Nature/Fish.webp",
"emoji": "🐟"
},
{
"file": "Animals and Nature/Flamingo.webp",
"emoji": "🦩"
},
{
"file": "Animals and Nature/Four Leaf Clover.webp",
"emoji": "🍀"
},
{
"file": "Animals and Nature/Fox.webp",
"emoji": "🦊"
},
{
"file": "Animals and Nature/Frog.webp",
"emoji": "🐸"
},
{
"file": "Animals and Nature/Front Facing Baby Chick.webp",
"emoji": "🐥"
},
{
"file": "Animals and Nature/Full Moon Face.webp",
"emoji": "🌝"
},
{
"file": "Animals and Nature/Full Moon.webp",
"emoji": "🌕"
},
{
"file": "Animals and Nature/Giraffe.webp",
"emoji": "🦒"
},
{
"file": "Animals and Nature/Glowing Star.webp",
"emoji": "🌟"
},
{
"file": "Animals and Nature/Gorilla.webp",
"emoji": "🦍"
},
{
"file": "Animals and Nature/Hamster.webp",
"emoji": "🐹"
},
{
"file": "Animals and Nature/Hatching Chick.webp",
"emoji": "🐣"
},
{
"file": "Animals and Nature/Hedgehog.webp",
"emoji": "🦔"
},
{
"file": "Animals and Nature/Herb.webp",
"emoji": "🌿"
},
{
"file": "Animals and Nature/Hibiscus.webp",
"emoji": "🌺"
},
{
"file": "Animals and Nature/High Voltage.webp",
"emoji": "⚡"
},
{
"file": "Animals and Nature/Honeybee.webp",
"emoji": "🐝"
},
{
"file": "Animals and Nature/Horse Face.webp",
"emoji": "🐴"
},
{
"file": "Animals and Nature/Horse.webp",
"emoji": "🐎"
},
{
"file": "Animals and Nature/Kangaroo.webp",
"emoji": "🦘"
},
{
"file": "Animals and Nature/Koala.webp",
"emoji": "🐨"
},
{
"file": "Animals and Nature/Lady Beetle.webp",
"emoji": "🐞"
},
{
"file": "Animals and Nature/Last Quarter Moon Face.webp",
"emoji": "🌜"
},
{
"file": "Animals and Nature/Last Quarter Moon.webp",
"emoji": "🌗"
},
{
"file": "Animals and Nature/Leopard.webp",
"emoji": "🐆"
},
{
"file": "Animals and Nature/Lion.webp",
"emoji": "🦁"
},
{
"file": "Animals and Nature/Llama.webp",
"emoji": "🦙"
},
{
"file": "Animals and Nature/Lobster.webp",
"emoji": "🦞"
},
{
"file": "Animals and Nature/Microbe.webp",
"emoji": "🦠"
},
{
"file": "Animals and Nature/Monkey Face.webp",
"emoji": "🐵"
},
{
"file": "Animals and Nature/Mosquito.webp",
"emoji": "🦟"
},
{
"file": "Animals and Nature/Mouse Face.webp",
"emoji": "🐭"
},
{
"file": "Animals and Nature/New Moon Face.webp",
"emoji": "🌚"
},
{
"file": "Animals and Nature/New Moon.webp",
"emoji": "🌑"
},
{
"file": "Animals and Nature/Octopus.webp",
"emoji": "🐙"
},
{
"file": "Animals and Nature/Owl.webp",
"emoji": "🦉"
},
{
"file": "Animals and Nature/Ox.webp",
"emoji": "🐂"
},
{
"file": "Animals and Nature/Palm Tree.webp",
"emoji": "🌴"
},
{
"file": "Animals and Nature/Panda.webp",
"emoji": "🐼"
},
{
"file": "Animals and Nature/Parrot.webp",
"emoji": "🦜"
},
{
"file": "Animals and Nature/Paw Prints.webp",
"emoji": "🐾"
},
{
"file": "Animals and Nature/Penguin.webp",
"emoji": "🐧"
},
{
"file": "Animals and Nature/Pig Face.webp",
"emoji": "🐷"
},
{
"file": "Animals and Nature/Pig Nose.webp",
"emoji": "🐽"
},
{
"file": "Animals and Nature/Polar Bear.webp",
"emoji": "🐻‍❄️"
},
{
"file": "Animals and Nature/Rabbit Face.webp",
"emoji": "🐰"
},
{
"file": "Animals and Nature/Rabbit.webp",
"emoji": "🐇"
},
{
"file": "Animals and Nature/Raccoon.webp",
"emoji": "🦝"
},
{
"file": "Animals and Nature/Rainbow.webp",
"emoji": "🌈"
},
{
"file": "Animals and Nature/Rose.webp",
"emoji": "🌹"
},
{
"file": "Animals and Nature/Rosette.webp",
"emoji": "🏵️"
},
{
"file": "Animals and Nature/Sauropod.webp",
"emoji": "🦕"
},
{
"file": "Animals and Nature/Seal.webp",
"emoji": "🦭"
},
{
"file": "Animals and Nature/Seedling.webp",
"emoji": "🌱"
},
{
"file": "Animals and Nature/Shamrock.webp",
"emoji": "☘️"
},
{
"file": "Animals and Nature/Shrimp.webp",
"emoji": "🦐"
},
{
"file": "Animals and Nature/Snail.webp",
"emoji": "🐌"
},
{
"file": "Animals and Nature/Snake.webp",
"emoji": "🐍"
},
{
"file": "Animals and Nature/Snowflake.webp",
"emoji": "❄️"
},
{
"file": "Animals and Nature/Snowman Without Snow.webp",
"emoji": "⛄"
},
{
"file": "Animals and Nature/Snowman.webp",
"emoji": "☃️"
},
{
"file": "Animals and Nature/Spider Web.webp",
"emoji": "🕸️"
},
{
"file": "Animals and Nature/Spider.webp",
"emoji": "🕷️"
},
{
"file": "Animals and Nature/Spouting Whale.webp",
"emoji": "🐳"
},
{
"file": "Animals and Nature/Squid.webp",
"emoji": "🦑"
},
{
"file": "Animals and Nature/Star.webp",
"emoji": "⭐"
},
{
"file": "Animals and Nature/Sun Behind Cloud.webp",
"emoji": "⛅"
},
{
"file": "Animals and Nature/Sun Behind Large Cloud.webp",
"emoji": "🌥️"
},
{
"file": "Animals and Nature/Sun Behind Rain Cloud.webp",
"emoji": "🌦️"
},
{
"file": "Animals and Nature/Sun Behind Small Cloud.webp",
"emoji": "🌤️"
},
{
"file": "Animals and Nature/Sun With Face.webp",
"emoji": "🌞"
},
{
"file": "Animals and Nature/Sun.webp",
"emoji": "☀️"
},
{
"file": "Animals and Nature/Swan.webp",
"emoji": "🦢"
},
{
"file": "Animals and Nature/T Rex.webp",
"emoji": "🦖"
},
{
"file": "Animals and Nature/Tiger Face.webp",
"emoji": "🐯"
},
{
"file": "Animals and Nature/Tiger.webp",
"emoji": "🐅"
},
{
"file": "Animals and Nature/Tropical Fish.webp",
"emoji": "🐠"
},
{
"file": "Animals and Nature/Tulip.webp",
"emoji": "🌷"
},
{
"file": "Animals and Nature/Turkey.webp",
"emoji": "🦃"
},
{
"file": "Animals and Nature/Turtle.webp",
"emoji": "🐢"
},
{
"file": "Animals and Nature/Unicorn.webp",
"emoji": "🦄"
},
{
"file": "Animals and Nature/Waning Crescent Moon.webp",
"emoji": "🌘"
},
{
"file": "Animals and Nature/Waxing Crescent Moon.webp",
"emoji": "🌒"
},
{
"file": "Animals and Nature/Waxing Gibbous Moon.webp",
"emoji": "🌔"
},
{
"file": "Animals and Nature/Zebra.webp",
"emoji": "🦓"
}
]
};
@@ -0,0 +1,50 @@
import { TELEGRAM_EMOJI_GROUP_ACTIVITY } from './telegram-emoji-activity.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_ANIMALS_NATURE } from './telegram-emoji-animals_nature.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_FLAGS } from './telegram-emoji-flags.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_FOOD_DRINK } from './telegram-emoji-food_drink.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_OBJECTS } from './telegram-emoji-objects.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_PEOPLE } from './telegram-emoji-people.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_SMILEYS } from './telegram-emoji-smileys.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_SYMBOLS } from './telegram-emoji-symbols.js?v=202607151545';
import { TELEGRAM_EMOJI_GROUP_TRAVEL_PLACES } from './telegram-emoji-travel_places.js?v=202607151545';
const TELEGRAM_EMOJI_ASSET_BASE_URL = 'https://raw.githubusercontent.com/Tarikul-Islam-Anik/Telegram-Animated-Emojis/main/';
const TELEGRAM_EMOJI_PREVIEW_BASE_URL = '/assets/emoji/telegram-previews/';
function getTelegramEmojiName(file) {
return String(file || '').split('/').pop()?.replace(/\.webp$/i, '') || '';
}
function withPreviewUrls(group) {
return {
...group,
items: group.items.map((item) => ({
...item,
name: item.name || getTelegramEmojiName(item.file),
previewUrl: getTelegramEmojiPreviewUrl(item.file),
animatedUrl: getTelegramEmojiAssetUrl(item.file),
})),
};
}
export const TELEGRAM_EMOJI_GROUPS = [
TELEGRAM_EMOJI_GROUP_SMILEYS,
TELEGRAM_EMOJI_GROUP_PEOPLE,
TELEGRAM_EMOJI_GROUP_ANIMALS_NATURE,
TELEGRAM_EMOJI_GROUP_FOOD_DRINK,
TELEGRAM_EMOJI_GROUP_TRAVEL_PLACES,
TELEGRAM_EMOJI_GROUP_ACTIVITY,
TELEGRAM_EMOJI_GROUP_OBJECTS,
TELEGRAM_EMOJI_GROUP_SYMBOLS,
TELEGRAM_EMOJI_GROUP_FLAGS,
].map(withPreviewUrls);
export function getTelegramEmojiAssetUrl(file) {
return `${TELEGRAM_EMOJI_ASSET_BASE_URL}${file.split('/').map((part) => encodeURIComponent(part)).join('/')}`;
}
export function getTelegramEmojiPreviewUrl(file) {
return `${TELEGRAM_EMOJI_PREVIEW_BASE_URL}${String(file || '').replace(/\.webp$/i, '.png').split('/').map((part) => encodeURIComponent(part)).join('/')}`;
}
export { TELEGRAM_EMOJI_ASSET_BASE_URL };
@@ -0,0 +1,295 @@
export const TELEGRAM_EMOJI_GROUP_FLAGS = {
"id": "flags",
"label": "Флаги",
"icon": "🏳️",
"items": [
{
"file": "Flags/Black Flag.webp",
"emoji": "🏴"
},
{
"file": "Flags/Chequered Flag.webp",
"emoji": "🏁"
},
{
"file": "Flags/Flag Argentina.webp",
"emoji": "🇦🇷"
},
{
"file": "Flags/Flag Armenia.webp",
"emoji": "🇦🇲"
},
{
"file": "Flags/Flag Austria.webp",
"emoji": "🇦🇹"
},
{
"file": "Flags/Flag Bahamas.webp",
"emoji": "🇧🇸"
},
{
"file": "Flags/Flag Belarus.webp",
"emoji": "🇧🇾"
},
{
"file": "Flags/Flag Belgium.webp",
"emoji": "🇧🇪"
},
{
"file": "Flags/Flag Benin.webp",
"emoji": "🇧🇯"
},
{
"file": "Flags/Flag Brazil.webp",
"emoji": "🇧🇷"
},
{
"file": "Flags/Flag Bulgaria.webp",
"emoji": "🇧🇬"
},
{
"file": "Flags/Flag Burkina Faso.webp",
"emoji": "🇧🇫"
},
{
"file": "Flags/Flag Cameroon.webp",
"emoji": "🇨🇲"
},
{
"file": "Flags/Flag Chad.webp",
"emoji": "🇹🇩"
},
{
"file": "Flags/Flag China.webp",
"emoji": "🇨🇳"
},
{
"file": "Flags/Flag Cote Divoire.webp",
"emoji": "🇨🇮"
},
{
"file": "Flags/Flag Croatia.webp",
"emoji": "🇭🇷"
},
{
"file": "Flags/Flag Czechia.webp",
"emoji": "🇨🇿"
},
{
"file": "Flags/Flag Djibouti.webp",
"emoji": "🇩🇯"
},
{
"file": "Flags/Flag Equatorial Guinea.webp",
"emoji": "🇬🇶"
},
{
"file": "Flags/Flag Estonia.webp",
"emoji": "🇪🇪"
},
{
"file": "Flags/Flag France.webp",
"emoji": "🇫🇷"
},
{
"file": "Flags/Flag Gabon.webp",
"emoji": "🇬🇦"
},
{
"file": "Flags/Flag Germany.webp",
"emoji": "🇩🇪"
},
{
"file": "Flags/Flag Ghana.webp",
"emoji": "🇬🇭"
},
{
"file": "Flags/Flag Guinea Bissau.webp",
"emoji": "🇬🇼"
},
{
"file": "Flags/Flag Guinea.webp",
"emoji": "🇬🇳"
},
{
"file": "Flags/Flag Hungary.webp",
"emoji": "🇭🇺"
},
{
"file": "Flags/Flag India.webp",
"emoji": "🇮🇳"
},
{
"file": "Flags/Flag Indonesia.webp",
"emoji": "🇮🇩"
},
{
"file": "Flags/Flag Ireland.webp",
"emoji": "🇮🇪"
},
{
"file": "Flags/Flag Italy.webp",
"emoji": "🇮🇹"
},
{
"file": "Flags/Flag Japan.webp",
"emoji": "🇯🇵"
},
{
"file": "Flags/Flag Jordan.webp",
"emoji": "🇯🇴"
},
{
"file": "Flags/Flag Lithuania.webp",
"emoji": "🇱🇹"
},
{
"file": "Flags/Flag Luxembourg.webp",
"emoji": "🇱🇺"
},
{
"file": "Flags/Flag Madagascar.webp",
"emoji": "🇲🇬"
},
{
"file": "Flags/Flag Mali.webp",
"emoji": "🇲🇱"
},
{
"file": "Flags/Flag Monaco.webp",
"emoji": "🇲🇨"
},
{
"file": "Flags/Flag Morocco.webp",
"emoji": "🇲🇦"
},
{
"file": "Flags/Flag Mozambique.webp",
"emoji": "🇲🇿"
},
{
"file": "Flags/Flag Myanmar Burma.webp",
"emoji": "🇲🇲"
},
{
"file": "Flags/Flag Netherlands.webp",
"emoji": "🇳🇱"
},
{
"file": "Flags/Flag Nigeria.webp",
"emoji": "🇳🇬"
},
{
"file": "Flags/Flag Palestinian Territories.webp",
"emoji": "🇵🇸"
},
{
"file": "Flags/Flag Peru.webp",
"emoji": "🇵🇪"
},
{
"file": "Flags/Flag Philippines.webp",
"emoji": "🇵🇭"
},
{
"file": "Flags/Flag Poland.webp",
"emoji": "🇵🇱"
},
{
"file": "Flags/Flag Romania.webp",
"emoji": "🇷🇴"
},
{
"file": "Flags/Flag Russia.webp",
"emoji": "🇷🇺"
},
{
"file": "Flags/Flag Sao Tome Principe.webp",
"emoji": "🇸🇹"
},
{
"file": "Flags/Flag Saudi Arabia.webp",
"emoji": "🇸🇦"
},
{
"file": "Flags/Flag Senegal.webp",
"emoji": "🇸🇳"
},
{
"file": "Flags/Flag Sierra Leone.webp",
"emoji": "🇸🇱"
},
{
"file": "Flags/Flag Singapore.webp",
"emoji": "🇸🇬"
},
{
"file": "Flags/Flag Sint Maarten.webp",
"emoji": "🇸🇽"
},
{
"file": "Flags/Flag Somalia.webp",
"emoji": "🇸🇴"
},
{
"file": "Flags/Flag South Korea.webp",
"emoji": "🇰🇷"
},
{
"file": "Flags/Flag South Sudan.webp",
"emoji": "🇸🇸"
},
{
"file": "Flags/Flag Spain.webp",
"emoji": "🇪🇸"
},
{
"file": "Flags/Flag Sudan.webp",
"emoji": "🇸🇩"
},
{
"file": "Flags/Flag Ukraine.webp",
"emoji": "🇺🇦"
},
{
"file": "Flags/Flag United Arab Emirates.webp",
"emoji": "🇦🇪"
},
{
"file": "Flags/Flag United Kingdom.webp",
"emoji": "🇬🇧"
},
{
"file": "Flags/Flag United States.webp",
"emoji": "🇺🇸"
},
{
"file": "Flags/Flag Uzbekistan.webp",
"emoji": "🇺🇿"
},
{
"file": "Flags/Flag Vietnam.webp",
"emoji": "🇻🇳"
},
{
"file": "Flags/Flag Western Sahara.webp",
"emoji": "🇪🇭"
},
{
"file": "Flags/Flag Yemen.webp",
"emoji": "🇾🇪"
},
{
"file": "Flags/Pirate Flag.webp",
"emoji": "🏴‍☠️"
},
{
"file": "Flags/Triangular Flag.webp",
"emoji": "🚩"
},
{
"file": "Flags/White Flag.webp",
"emoji": "🏳️"
}
]
};
@@ -0,0 +1,200 @@
export const TELEGRAM_EMOJI_GROUP_FOOD_DRINK = {
"id": "food-and-drink",
"label": "Еда и напитки",
"icon": "🍓",
"items": [
{
"file": "Food and Drink/Baby Bottle.webp",
"emoji": "🍼"
},
{
"file": "Food and Drink/Banana.webp",
"emoji": "🍌"
},
{
"file": "Food and Drink/Bento Box.webp",
"emoji": "🍱"
},
{
"file": "Food and Drink/Beverage Box.webp",
"emoji": "🧃"
},
{
"file": "Food and Drink/Birthday Cake.webp",
"emoji": "🎂"
},
{
"file": "Food and Drink/Bottle With Popping Cork.webp",
"emoji": "🍾"
},
{
"file": "Food and Drink/Bubble Tea.webp",
"emoji": "🧋"
},
{
"file": "Food and Drink/Canned Food.webp",
"emoji": "🥫"
},
{
"file": "Food and Drink/Chocolate Bar.webp",
"emoji": "🍫"
},
{
"file": "Food and Drink/Clinking Glasses.webp",
"emoji": "🥂"
},
{
"file": "Food and Drink/Cocktail Glass.webp",
"emoji": "🍸"
},
{
"file": "Food and Drink/Cookie.webp",
"emoji": "🍪"
},
{
"file": "Food and Drink/Cooking.webp",
"emoji": "🍳"
},
{
"file": "Food and Drink/Cup With Straw.webp",
"emoji": "🥤"
},
{
"file": "Food and Drink/Cupcake.webp",
"emoji": "🧁"
},
{
"file": "Food and Drink/Custard.webp",
"emoji": "🍮"
},
{
"file": "Food and Drink/Dango.webp",
"emoji": "🍡"
},
{
"file": "Food and Drink/Doughnut.webp",
"emoji": "🍩"
},
{
"file": "Food and Drink/Fish Cake With Swirl.webp",
"emoji": "🍥"
},
{
"file": "Food and Drink/Fork And Knife With Plate.webp",
"emoji": "🍽️"
},
{
"file": "Food and Drink/French Fries.webp",
"emoji": "🍟"
},
{
"file": "Food and Drink/Glass Of Milk.webp",
"emoji": "🥛"
},
{
"file": "Food and Drink/Hamburger.webp",
"emoji": "🍔"
},
{
"file": "Food and Drink/Hot Beverage.webp",
"emoji": "☕"
},
{
"file": "Food and Drink/Hot Dog.webp",
"emoji": "🌭"
},
{
"file": "Food and Drink/Lollipop.webp",
"emoji": "🍭"
},
{
"file": "Food and Drink/Mate.webp",
"emoji": "🧉"
},
{
"file": "Food and Drink/Meat On Bone.webp",
"emoji": "🍖"
},
{
"file": "Food and Drink/Oden.webp",
"emoji": "🍢"
},
{
"file": "Food and Drink/Pancakes.webp",
"emoji": "🥞"
},
{
"file": "Food and Drink/Pie.webp",
"emoji": "🥧"
},
{
"file": "Food and Drink/Pizza.webp",
"emoji": "🍕"
},
{
"file": "Food and Drink/Popcorn.webp",
"emoji": "🍿"
},
{
"file": "Food and Drink/Poultry Leg.webp",
"emoji": "🍗"
},
{
"file": "Food and Drink/Pouring Liquid.webp",
"emoji": "🫗"
},
{
"file": "Food and Drink/Pretzel.webp",
"emoji": "🥨"
},
{
"file": "Food and Drink/Rice Ball.webp",
"emoji": "🍙"
},
{
"file": "Food and Drink/Rice Cracker.webp",
"emoji": "🍘"
},
{
"file": "Food and Drink/Sandwich.webp",
"emoji": "🥪"
},
{
"file": "Food and Drink/Shortcake.webp",
"emoji": "🍰"
},
{
"file": "Food and Drink/Soft Ice Cream.webp",
"emoji": "🍦"
},
{
"file": "Food and Drink/Strawberry.webp",
"emoji": "🍓"
},
{
"file": "Food and Drink/Stuffed Flatbread.webp",
"emoji": "🥙"
},
{
"file": "Food and Drink/Sushi.webp",
"emoji": "🍣"
},
{
"file": "Food and Drink/Taco.webp",
"emoji": "🌮"
},
{
"file": "Food and Drink/Tropical Drink.webp",
"emoji": "🍹"
},
{
"file": "Food and Drink/Tumbler Glass.webp",
"emoji": "🥃"
},
{
"file": "Food and Drink/Wine Glass.webp",
"emoji": "🍷"
}
]
};
@@ -0,0 +1,280 @@
export const TELEGRAM_EMOJI_GROUP_OBJECTS = {
"id": "objects",
"label": "Предметы",
"icon": "💡",
"items": [
{
"file": "Objects/Abacus.webp",
"emoji": "🧮"
},
{
"file": "Objects/Ballot Box With Ballot.webp",
"emoji": "🗳️"
},
{
"file": "Objects/Bar Chart.webp",
"emoji": "📊"
},
{
"file": "Objects/Bomb.webp",
"emoji": "💣"
},
{
"file": "Objects/Books.webp",
"emoji": "📚"
},
{
"file": "Objects/Briefcase.webp",
"emoji": "💼"
},
{
"file": "Objects/Card Index Dividers.webp",
"emoji": "🗂️"
},
{
"file": "Objects/Chart Decreasing.webp",
"emoji": "📉"
},
{
"file": "Objects/Chart Increasing.webp",
"emoji": "📈"
},
{
"file": "Objects/Clapper Board.webp",
"emoji": "🎬"
},
{
"file": "Objects/Coffin.webp",
"emoji": "⚰️"
},
{
"file": "Objects/Coin.webp",
"emoji": "🪙"
},
{
"file": "Objects/Crown.webp",
"emoji": "👑"
},
{
"file": "Objects/File Folder.webp",
"emoji": "📁"
},
{
"file": "Objects/Gem Stone.webp",
"emoji": "💎"
},
{
"file": "Objects/Graduation Cap.webp",
"emoji": "🎓"
},
{
"file": "Objects/Handbag.webp",
"emoji": "👜"
},
{
"file": "Objects/High Heeled Shoe.webp",
"emoji": "👠"
},
{
"file": "Objects/Hourglass Done.webp",
"emoji": "⌛"
},
{
"file": "Objects/Hourglass Not Done.webp",
"emoji": "⏳"
},
{
"file": "Objects/Identification Card.webp",
"emoji": "🪪"
},
{
"file": "Objects/Inbox Tray.webp",
"emoji": "📥"
},
{
"file": "Objects/Incoming Envelope.webp",
"emoji": "📨"
},
{
"file": "Objects/Key.webp",
"emoji": "🔑"
},
{
"file": "Objects/Keyboard.webp",
"emoji": "⌨️"
},
{
"file": "Objects/Laptop.webp",
"emoji": "💻"
},
{
"file": "Objects/Light Bulb.webp",
"emoji": "💡"
},
{
"file": "Objects/Locked With Key.webp",
"emoji": "🔐"
},
{
"file": "Objects/Luggage.webp",
"emoji": "🧳"
},
{
"file": "Objects/Magnifying Glass Tilted Left.webp",
"emoji": "🔍"
},
{
"file": "Objects/Magnifying Glass Tilted Right.webp",
"emoji": "🔎"
},
{
"file": "Objects/Megaphone.webp",
"emoji": "📣"
},
{
"file": "Objects/Memo.webp",
"emoji": "📝"
},
{
"file": "Objects/Microphone.webp",
"emoji": "🎤"
},
{
"file": "Objects/Microscope.webp",
"emoji": "🔬"
},
{
"file": "Objects/Military Helmet.webp",
"emoji": "🪖"
},
{
"file": "Objects/Mobile Phone With Arrow.webp",
"emoji": "📲"
},
{
"file": "Objects/Mobile Phone.webp",
"emoji": "📱"
},
{
"file": "Objects/Money Bag.webp",
"emoji": "💰"
},
{
"file": "Objects/Money With Wings.webp",
"emoji": "💸"
},
{
"file": "Objects/Musical Note.webp",
"emoji": "🎵"
},
{
"file": "Objects/Musical Notes.webp",
"emoji": "🎶"
},
{
"file": "Objects/Newspaper.webp",
"emoji": "📰"
},
{
"file": "Objects/Old Key.webp",
"emoji": "🗝️"
},
{
"file": "Objects/Open Book.webp",
"emoji": "📖"
},
{
"file": "Objects/Outbox Tray.webp",
"emoji": "📤"
},
{
"file": "Objects/Pencil.webp",
"emoji": "✏️"
},
{
"file": "Objects/Pill.webp",
"emoji": "💊"
},
{
"file": "Objects/Printer.webp",
"emoji": "🖨️"
},
{
"file": "Objects/Purse.webp",
"emoji": "👛"
},
{
"file": "Objects/Reminder Ribbon.webp",
"emoji": "🎗️"
},
{
"file": "Objects/Roll Of Paper.webp",
"emoji": "🧻"
},
{
"file": "Objects/Shopping Bags.webp",
"emoji": "🛍️"
},
{
"file": "Objects/Shopping Cart.webp",
"emoji": "🛒"
},
{
"file": "Objects/Soap.webp",
"emoji": "🧼"
},
{
"file": "Objects/Sponge.webp",
"emoji": "🧽"
},
{
"file": "Objects/Stethoscope.webp",
"emoji": "🩺"
},
{
"file": "Objects/Studio Microphone.webp",
"emoji": "🎙️"
},
{
"file": "Objects/Syringe.webp",
"emoji": "💉"
},
{
"file": "Objects/Tear Off Calendar.webp",
"emoji": "📆"
},
{
"file": "Objects/Telephone Receiver.webp",
"emoji": "📞"
},
{
"file": "Objects/Telephone.webp",
"emoji": "☎️"
},
{
"file": "Objects/Telescope.webp",
"emoji": "🔭"
},
{
"file": "Objects/Television.webp",
"emoji": "📺"
},
{
"file": "Objects/Test Tube.webp",
"emoji": "🧪"
},
{
"file": "Objects/Thermometer.webp",
"emoji": "🌡️"
},
{
"file": "Objects/Toolbox.webp",
"emoji": "🧰"
},
{
"file": "Objects/Top Hat.webp",
"emoji": "🎩"
}
]
};
@@ -0,0 +1,360 @@
export const TELEGRAM_EMOJI_GROUP_PEOPLE = {
"id": "people",
"label": "Люди",
"icon": "🧑",
"items": [
{
"file": "People/Baby.webp",
"emoji": "👶"
},
{
"file": "People/Backhand Index Pointing Down.webp",
"emoji": "👇"
},
{
"file": "People/Backhand Index Pointing Left.webp",
"emoji": "👈"
},
{
"file": "People/Backhand Index Pointing Right.webp",
"emoji": "👉"
},
{
"file": "People/Backhand Index Pointing Up.webp",
"emoji": "👆"
},
{
"file": "People/Biting Lip.webp",
"emoji": "🫦"
},
{
"file": "People/Bone.webp",
"emoji": "🦴"
},
{
"file": "People/Bust In Silhouette.webp",
"emoji": "👤"
},
{
"file": "People/Busts In Silhouette.webp",
"emoji": "👥"
},
{
"file": "People/Call Me Hand.webp",
"emoji": "🤙"
},
{
"file": "People/Clapping Hands.webp",
"emoji": "👏"
},
{
"file": "People/Crossed Fingers.webp",
"emoji": "🤞"
},
{
"file": "People/Ear With Hearing Aid.webp",
"emoji": "🦻"
},
{
"file": "People/Ear.webp",
"emoji": "👂"
},
{
"file": "People/Eyes.webp",
"emoji": "👀"
},
{
"file": "People/Family Man Woman Girl Boy.webp",
"emoji": "👨‍👩‍👧‍👦"
},
{
"file": "People/Flexed Biceps.webp",
"emoji": "💪"
},
{
"file": "People/Folded Hands.webp",
"emoji": "🙏"
},
{
"file": "People/Foot.webp",
"emoji": "🦶"
},
{
"file": "People/Footprints.webp",
"emoji": "👣"
},
{
"file": "People/Hand With Fingers Splayed.webp",
"emoji": "🖐️"
},
{
"file": "People/Hand With Index Finger And Thumb Crossed.webp",
"emoji": "🫰"
},
{
"file": "People/Handshake.webp",
"emoji": "🤝"
},
{
"file": "People/Heart Hands.webp",
"emoji": "🫶"
},
{
"file": "People/Index Pointing At The Viewer.webp",
"emoji": "🫵"
},
{
"file": "People/Index Pointing Up.webp",
"emoji": "☝️"
},
{
"file": "People/Left Facing Fist.webp",
"emoji": "🤛"
},
{
"file": "People/Leftwards Hand.webp",
"emoji": "🫲"
},
{
"file": "People/Leg.webp",
"emoji": "🦵"
},
{
"file": "People/Love You Gesture.webp",
"emoji": "🤟"
},
{
"file": "People/Man Dancing.webp",
"emoji": "🕺"
},
{
"file": "People/Man Facepalming.webp",
"emoji": "🤦‍♂️"
},
{
"file": "People/Man Health Worker.webp",
"emoji": "👨‍⚕️"
},
{
"file": "People/Man Police Officer.webp",
"emoji": "👮‍♂️"
},
{
"file": "People/Man Shrugging.webp",
"emoji": "🤷‍♂️"
},
{
"file": "People/Man Teacher.webp",
"emoji": "👨‍🏫"
},
{
"file": "People/Man Technologist.webp",
"emoji": "👨‍💻"
},
{
"file": "People/Man Vampire.webp",
"emoji": "🧛‍♂️"
},
{
"file": "People/Man Zombie.webp",
"emoji": "🧟‍♂️"
},
{
"file": "People/Mechanical Arm.webp",
"emoji": "🦾"
},
{
"file": "People/Mechanical Leg.webp",
"emoji": "🦿"
},
{
"file": "People/Middle Finger.webp",
"emoji": "🖕"
},
{
"file": "People/Mouth.webp",
"emoji": "👄"
},
{
"file": "People/Mrs Claus.webp",
"emoji": "🤶"
},
{
"file": "People/Mx Claus.webp",
"emoji": "🧑‍🎄"
},
{
"file": "People/Nail Polish.webp",
"emoji": "💅"
},
{
"file": "People/Nose.webp",
"emoji": "👃"
},
{
"file": "People/Ok Hand.webp",
"emoji": "👌"
},
{
"file": "People/Old Woman.webp",
"emoji": "👵"
},
{
"file": "People/Oncoming Fist.webp",
"emoji": "👊"
},
{
"file": "People/Open Hands.webp",
"emoji": "👐"
},
{
"file": "People/Palm Down Hand.webp",
"emoji": "🫳"
},
{
"file": "People/Palm Up Hand.webp",
"emoji": "🫴"
},
{
"file": "People/Palms Up Together.webp",
"emoji": "🤲"
},
{
"file": "People/People Hugging.webp",
"emoji": "🫂"
},
{
"file": "People/Person Facepalming.webp",
"emoji": "🤦"
},
{
"file": "People/Person Shrugging.webp",
"emoji": "🤷"
},
{
"file": "People/Pinched Fingers.webp",
"emoji": "🤌"
},
{
"file": "People/Pinching Hand.webp",
"emoji": "🤏"
},
{
"file": "People/Pregnant Woman.webp",
"emoji": "🤰"
},
{
"file": "People/Raised Back Of Hand.webp",
"emoji": "🤚"
},
{
"file": "People/Raised Fist.webp",
"emoji": "✊"
},
{
"file": "People/Raised Hand.webp",
"emoji": "✋"
},
{
"file": "People/Raising Hands.webp",
"emoji": "🙌"
},
{
"file": "People/Right Facing Fist.webp",
"emoji": "🤜"
},
{
"file": "People/Rightwards Hand.webp",
"emoji": "🫱"
},
{
"file": "People/Santa Claus.webp",
"emoji": "🎅"
},
{
"file": "People/Sign Of The Horns.webp",
"emoji": "🤘"
},
{
"file": "People/Speaking Head.webp",
"emoji": "🗣️"
},
{
"file": "People/Technologist.webp",
"emoji": "🧑‍💻"
},
{
"file": "People/Thumbs Down.webp",
"emoji": "👎"
},
{
"file": "People/Thumbs Up.webp",
"emoji": "👍"
},
{
"file": "People/Tongue.webp",
"emoji": "👅"
},
{
"file": "People/Tooth.webp",
"emoji": "🦷"
},
{
"file": "People/Vampire.webp",
"emoji": "🧛"
},
{
"file": "People/Victory Hand.webp",
"emoji": "✌️"
},
{
"file": "People/Vulcan Salute.webp",
"emoji": "🖖"
},
{
"file": "People/Waving Hand.webp",
"emoji": "👋"
},
{
"file": "People/Woman Dancing.webp",
"emoji": "💃"
},
{
"file": "People/Woman Facepalming.webp",
"emoji": "🤦‍♀️"
},
{
"file": "People/Woman Health Worker.webp",
"emoji": "👩‍⚕️"
},
{
"file": "People/Woman Police Officer.webp",
"emoji": "👮‍♀️"
},
{
"file": "People/Woman Shrugging.webp",
"emoji": "🤷‍♀️"
},
{
"file": "People/Woman Technologist.webp",
"emoji": "👩‍💻"
},
{
"file": "People/Woman Vampire.webp",
"emoji": "🧛‍♀️"
},
{
"file": "People/Woman Zombie.webp",
"emoji": "🧟‍♀️"
},
{
"file": "People/Writing Hand.webp",
"emoji": "✍️"
},
{
"file": "People/Zombie.webp",
"emoji": "🧟"
}
]
};
@@ -0,0 +1,503 @@
export const TELEGRAM_EMOJI_GROUP_SMILEYS = {
"id": "smileys",
"label": "Смайлы",
"icon": "🙂",
"items": [
{
"file": "Smileys/Alien Monster.webp",
"emoji": "👾"
},
{
"file": "Smileys/Alien.webp",
"emoji": "👽"
},
{
"file": "Smileys/Angry Face With Horns.webp",
"emoji": "👿"
},
{
"file": "Smileys/Angry Face.webp",
"emoji": "😠"
},
{
"file": "Smileys/Anguished Face.webp",
"emoji": "😧"
},
{
"file": "Smileys/Anxious Face With Sweat.webp",
"emoji": "😰"
},
{
"file": "Smileys/Astonished Face.webp",
"emoji": "😲"
},
{
"file": "Smileys/Beaming Face With Smiling Eyes.webp",
"emoji": "😁"
},
{
"file": "Smileys/Cat With Tears Of Joy.webp",
"emoji": "😹"
},
{
"file": "Smileys/Cat With Wry Smile.webp",
"emoji": "😼"
},
{
"file": "Smileys/Clown Face.webp",
"emoji": "🤡"
},
{
"file": "Smileys/Cold Face.webp",
"emoji": "🥶"
},
{
"file": "Smileys/Confounded Face.webp",
"emoji": "😖"
},
{
"file": "Smileys/Confused Face.webp",
"emoji": "😕"
},
{
"file": "Smileys/Cowboy Hat Face.webp",
"emoji": "🤠"
},
{
"file": "Smileys/Crying Cat.webp",
"emoji": "😿"
},
{
"file": "Smileys/Crying Face.webp",
"emoji": "😢"
},
{
"file": "Smileys/Disappointed Face.webp",
"emoji": "😞"
},
{
"file": "Smileys/Disguised Face.webp",
"emoji": "🥸"
},
{
"file": "Smileys/Dizzy Face.webp",
"emoji": "😵"
},
{
"file": "Smileys/Dotted Line Face.webp",
"emoji": "🫥"
},
{
"file": "Smileys/Downcast Face With Sweat.webp",
"emoji": "😓"
},
{
"file": "Smileys/Drooling Face.webp",
"emoji": "🤤"
},
{
"file": "Smileys/Exploding Head.webp",
"emoji": "🤯"
},
{
"file": "Smileys/Expressionless Face.webp",
"emoji": "😑"
},
{
"file": "Smileys/Face Blowing A Kiss.webp",
"emoji": "😘"
},
{
"file": "Smileys/Face Exhaling.webp",
"emoji": "😮‍💨"
},
{
"file": "Smileys/Face Holding Back Tears.webp",
"emoji": "🥹"
},
{
"file": "Smileys/Face In Clouds.webp",
"emoji": "😶‍🌫️"
},
{
"file": "Smileys/Face Savoring Food.webp",
"emoji": "😋"
},
{
"file": "Smileys/Face Screaming In Fear.webp",
"emoji": "😱"
},
{
"file": "Smileys/Face Vomiting.webp",
"emoji": "🤮"
},
{
"file": "Smileys/Face With Diagonal Mouth.webp",
"emoji": "🫤"
},
{
"file": "Smileys/Face With Hand Over Mouth.webp",
"emoji": "🤭"
},
{
"file": "Smileys/Face With Head Bandage.webp",
"emoji": "🤕"
},
{
"file": "Smileys/Face With Medical Mask.webp",
"emoji": "😷"
},
{
"file": "Smileys/Face With Monocle.webp",
"emoji": "🧐"
},
{
"file": "Smileys/Face With Open Eyes And Hand Over Mouth.webp",
"emoji": "🫢"
},
{
"file": "Smileys/Face With Open Mouth.webp",
"emoji": "😮"
},
{
"file": "Smileys/Face With Peeking Eye.webp",
"emoji": "🫣"
},
{
"file": "Smileys/Face With Raised Eyebrow.webp",
"emoji": "🤨"
},
{
"file": "Smileys/Face With Rolling Eyes.webp",
"emoji": "🙄"
},
{
"file": "Smileys/Face With Spiral Eyes.webp",
"emoji": "😵‍💫"
},
{
"file": "Smileys/Face With Steam From Nose.webp",
"emoji": "😤"
},
{
"file": "Smileys/Face With Symbols On Mouth.webp",
"emoji": "🤬"
},
{
"file": "Smileys/Face With Tears Of Joy.webp",
"emoji": "😂"
},
{
"file": "Smileys/Face With Thermometer.webp",
"emoji": "🤒"
},
{
"file": "Smileys/Face With Tongue.webp",
"emoji": "😛"
},
{
"file": "Smileys/Face Without Mouth.webp",
"emoji": "😶"
},
{
"file": "Smileys/Fearful Face.webp",
"emoji": "😨"
},
{
"file": "Smileys/Flushed Face.webp",
"emoji": "😳"
},
{
"file": "Smileys/Frowning Face With Open Mouth.webp",
"emoji": "😦"
},
{
"file": "Smileys/Frowning Face.webp",
"emoji": "☹️"
},
{
"file": "Smileys/Ghost.webp",
"emoji": "👻"
},
{
"file": "Smileys/Goblin.webp",
"emoji": "👺"
},
{
"file": "Smileys/Grimacing Face.webp",
"emoji": "😬"
},
{
"file": "Smileys/Grinning Cat With Smiling Eyes.webp",
"emoji": "😸"
},
{
"file": "Smileys/Grinning Cat.webp",
"emoji": "😺"
},
{
"file": "Smileys/Grinning Face With Big Eyes.webp",
"emoji": "😃"
},
{
"file": "Smileys/Grinning Face With Smiling Eyes.webp",
"emoji": "😄"
},
{
"file": "Smileys/Grinning Face With Sweat.webp",
"emoji": "😅"
},
{
"file": "Smileys/Grinning Face.webp",
"emoji": "😀"
},
{
"file": "Smileys/Grinning Squinting Face.webp",
"emoji": "😆"
},
{
"file": "Smileys/Hear No Evil Monkey.webp",
"emoji": "🙉"
},
{
"file": "Smileys/Hot Face.webp",
"emoji": "🥵"
},
{
"file": "Smileys/Hugging Face.webp",
"emoji": "🤗"
},
{
"file": "Smileys/Hushed Face.webp",
"emoji": "😯"
},
{
"file": "Smileys/Kissing Cat.webp",
"emoji": "😽"
},
{
"file": "Smileys/Kissing Face With Closed Eyes.webp",
"emoji": "😚"
},
{
"file": "Smileys/Kissing Face.webp",
"emoji": "😗"
},
{
"file": "Smileys/Loudly Crying Face.webp",
"emoji": "😭"
},
{
"file": "Smileys/Lying Face.webp",
"emoji": "🤥"
},
{
"file": "Smileys/Melting Face.webp",
"emoji": "🫠"
},
{
"file": "Smileys/Money Mouth Face.webp",
"emoji": "🤑"
},
{
"file": "Smileys/Nauseated Face.webp",
"emoji": "🤢"
},
{
"file": "Smileys/Nerd Face.webp",
"emoji": "🤓"
},
{
"file": "Smileys/Neutral Face.webp",
"emoji": "😐"
},
{
"file": "Smileys/Ogre.webp",
"emoji": "👹"
},
{
"file": "Smileys/Partying Face.webp",
"emoji": "🥳"
},
{
"file": "Smileys/Pensive Face.webp",
"emoji": "😔"
},
{
"file": "Smileys/Persevering Face.webp",
"emoji": "😣"
},
{
"file": "Smileys/Pile Of Poo.webp",
"emoji": "💩"
},
{
"file": "Smileys/Pleading Face.webp",
"emoji": "🥺"
},
{
"file": "Smileys/Pouting Cat.webp",
"emoji": "😾"
},
{
"file": "Smileys/Pouting Face.webp",
"emoji": "😡"
},
{
"file": "Smileys/Relieved Face.webp",
"emoji": "😌"
},
{
"file": "Smileys/Robot.webp",
"emoji": "🤖"
},
{
"file": "Smileys/Rolling On The Floor Laughing.webp",
"emoji": "🤣"
},
{
"file": "Smileys/Sad But Relieved Face.webp",
"emoji": "😥"
},
{
"file": "Smileys/Saluting Face.webp",
"emoji": "🫡"
},
{
"file": "Smileys/See No Evil Monkey.webp",
"emoji": "🙈"
},
{
"file": "Smileys/Shushing Face.webp",
"emoji": "🤫"
},
{
"file": "Smileys/Skull And Crossbones.webp",
"emoji": "☠️"
},
{
"file": "Smileys/Skull.webp",
"emoji": "💀"
},
{
"file": "Smileys/Sleeping Face.webp",
"emoji": "😴"
},
{
"file": "Smileys/Sleepy Face.webp",
"emoji": "😪"
},
{
"file": "Smileys/Slightly Frowning Face.webp",
"emoji": "🙁"
},
{
"file": "Smileys/Slightly Smiling Face.webp",
"emoji": "🙂"
},
{
"file": "Smileys/Smiling Cat With Heart Eyes.webp",
"emoji": "😻"
},
{
"file": "Smileys/Smiling Face With Halo.webp",
"emoji": "😇"
},
{
"file": "Smileys/Smiling Face With Hearts.webp",
"emoji": "🥰"
},
{
"file": "Smileys/Smiling Face With Horns.webp",
"emoji": "😈"
},
{
"file": "Smileys/Smiling Face With Smiling Eyes.webp",
"emoji": "😊"
},
{
"file": "Smileys/Smiling Face With Sunglasses.webp",
"emoji": "😎"
},
{
"file": "Smileys/Smiling Face With Tear.webp",
"emoji": "🥲"
},
{
"file": "Smileys/Smiling Face.webp",
"emoji": "☺️"
},
{
"file": "Smileys/Smirking Face.webp",
"emoji": "😏"
},
{
"file": "Smileys/Sneezing Face.webp",
"emoji": "🤧"
},
{
"file": "Smileys/Speak No Evil Monkey.webp",
"emoji": "🙊"
},
{
"file": "Smileys/Squinting Face With Tongue.webp",
"emoji": "😝"
},
{
"file": "Smileys/Star Struck.webp",
"emoji": "🤩"
},
{
"file": "Smileys/Thinking Face.webp",
"emoji": "🤔"
},
{
"file": "Smileys/Tired Face.webp",
"emoji": "😫"
},
{
"file": "Smileys/Unamused Face.webp",
"emoji": "😒"
},
{
"file": "Smileys/Upside Down Face.webp",
"emoji": "🙃"
},
{
"file": "Smileys/Weary Cat.webp",
"emoji": "🙀"
},
{
"file": "Smileys/Weary Face.webp",
"emoji": "😩"
},
{
"file": "Smileys/Winking Face With Tongue.webp",
"emoji": "😜"
},
{
"file": "Smileys/Winking Face.webp",
"emoji": "😉"
},
{
"file": "Smileys/Woozy Face.webp",
"emoji": "🥴"
},
{
"file": "Smileys/Worried Face.webp",
"emoji": "😟"
},
{
"file": "Smileys/Yawning Face.webp",
"emoji": "🥱"
},
{
"file": "Smileys/Zany Face.webp",
"emoji": "🤪"
},
{
"file": "Smileys/Zipper Mouth Face.webp",
"emoji": "🤐"
}
]
};
@@ -0,0 +1,283 @@
export const TELEGRAM_EMOJI_GROUP_SYMBOLS = {
"id": "symbols",
"label": "Символы",
"icon": "❤️",
"items": [
{
"file": "Symbols/Anger Symbol.webp",
"emoji": "💢"
},
{
"file": "Symbols/Aquarius.webp",
"emoji": "♒"
},
{
"file": "Symbols/Aries.webp",
"emoji": "♈"
},
{
"file": "Symbols/Baby Symbol.webp",
"emoji": "🚼"
},
{
"file": "Symbols/Baggage Claim.webp",
"emoji": "🛄"
},
{
"file": "Symbols/Beating Heart.webp",
"emoji": "💓"
},
{
"file": "Symbols/Black Heart.webp",
"emoji": "🖤"
},
{
"file": "Symbols/Blue Heart.webp",
"emoji": "💙"
},
{
"file": "Symbols/Broken Heart.webp",
"emoji": "💔"
},
{
"file": "Symbols/Brown Heart.webp",
"emoji": "🤎"
},
{
"file": "Symbols/Cancer.webp",
"emoji": "♋"
},
{
"file": "Symbols/Capricorn.webp",
"emoji": "♑"
},
{
"file": "Symbols/Check Box With Check.webp",
"emoji": "☑️"
},
{
"file": "Symbols/Check Mark Button.webp",
"emoji": "✅"
},
{
"file": "Symbols/Check Mark.webp",
"emoji": "✔️"
},
{
"file": "Symbols/Collision.webp",
"emoji": "💥"
},
{
"file": "Symbols/Cool Button.webp",
"emoji": "🆒"
},
{
"file": "Symbols/Cross Mark.webp",
"emoji": "❌"
},
{
"file": "Symbols/Currency Exchange.webp",
"emoji": "💱"
},
{
"file": "Symbols/Customs.webp",
"emoji": "🛃"
},
{
"file": "Symbols/Dizzy.webp",
"emoji": "💫"
},
{
"file": "Symbols/Double Exclamation Mark.webp",
"emoji": "‼️"
},
{
"file": "Symbols/Exclamation Mark.webp",
"emoji": "❗"
},
{
"file": "Symbols/Exclamation Question Mark.webp",
"emoji": "⁉️"
},
{
"file": "Symbols/Free Button.webp",
"emoji": "🆓"
},
{
"file": "Symbols/Gemini.webp",
"emoji": "♊"
},
{
"file": "Symbols/Green Heart.webp",
"emoji": "💚"
},
{
"file": "Symbols/Growing Heart.webp",
"emoji": "💗"
},
{
"file": "Symbols/Heart Decoration.webp",
"emoji": "💟"
},
{
"file": "Symbols/Heart Exclamation.webp",
"emoji": "❣️"
},
{
"file": "Symbols/Heart On Fire.webp",
"emoji": "❤️‍🔥"
},
{
"file": "Symbols/Heart With Arrow.webp",
"emoji": "💘"
},
{
"file": "Symbols/Heart With Ribbon.webp",
"emoji": "💝"
},
{
"file": "Symbols/Hundred Points.webp",
"emoji": "💯"
},
{
"file": "Symbols/Kiss Mark.webp",
"emoji": "💋"
},
{
"file": "Symbols/Left Luggage.webp",
"emoji": "🛅"
},
{
"file": "Symbols/Leo.webp",
"emoji": "♌"
},
{
"file": "Symbols/Libra.webp",
"emoji": "♎"
},
{
"file": "Symbols/Love Letter.webp",
"emoji": "💌"
},
{
"file": "Symbols/Mending Heart.webp",
"emoji": "❤️‍🩹"
},
{
"file": "Symbols/Mens Room.webp",
"emoji": "🚹"
},
{
"file": "Symbols/New Button.webp",
"emoji": "🆕"
},
{
"file": "Symbols/No One Under Eighteen.webp",
"emoji": "🔞"
},
{
"file": "Symbols/Ok Button.webp",
"emoji": "🆗"
},
{
"file": "Symbols/Ophiuchus.webp",
"emoji": "⛎"
},
{
"file": "Symbols/Orange Heart.webp",
"emoji": "🧡"
},
{
"file": "Symbols/Passport Control.webp",
"emoji": "🛂"
},
{
"file": "Symbols/Pisces.webp",
"emoji": "♓"
},
{
"file": "Symbols/Purple Heart.webp",
"emoji": "💜"
},
{
"file": "Symbols/Question Mark.webp",
"emoji": "❓"
},
{
"file": "Symbols/Red Heart.webp",
"emoji": "❤️"
},
{
"file": "Symbols/Revolving Hearts.webp",
"emoji": "💞"
},
{
"file": "Symbols/Right Anger Bubble.webp",
"emoji": "🗯️"
},
{
"file": "Symbols/Sagittarius.webp",
"emoji": "♐"
},
{
"file": "Symbols/Scorpio.webp",
"emoji": "♏"
},
{
"file": "Symbols/Sparkling Heart.webp",
"emoji": "💖"
},
{
"file": "Symbols/Speech Balloon.webp",
"emoji": "💬"
},
{
"file": "Symbols/Taurus.webp",
"emoji": "♉"
},
{
"file": "Symbols/Thought Balloon.webp",
"emoji": "💭"
},
{
"file": "Symbols/Top Arrow.webp",
"emoji": "🔝"
},
{
"file": "Symbols/Two Hearts.webp",
"emoji": "💕"
},
{
"file": "Symbols/Up Button.webp",
"emoji": "🆙"
},
{
"file": "Symbols/Virgo.webp",
"emoji": "♍"
},
{
"file": "Symbols/White Exclamation Mark.webp",
"emoji": "❕"
},
{
"file": "Symbols/White Heart.webp",
"emoji": "🤍"
},
{
"file": "Symbols/White Question Mark.webp",
"emoji": "❔"
},
{
"file": "Symbols/Womens Room.webp",
"emoji": "🚺"
},
{
"file": "Symbols/Yellow Heart.webp",
"emoji": "💛"
},
{
"file": "Symbols/Zzz.webp",
"emoji": "💤"
}
]
};
@@ -0,0 +1,76 @@
export const TELEGRAM_EMOJI_GROUP_TRAVEL_PLACES = {
"id": "travel-and-places",
"label": "Путешествия",
"icon": "✈️",
"items": [
{
"file": "Travel and Places/Airplane.webp",
"emoji": "✈️"
},
{
"file": "Travel and Places/Ambulance.webp",
"emoji": "🚑"
},
{
"file": "Travel and Places/Automobile.webp",
"emoji": "🚗"
},
{
"file": "Travel and Places/Beach With Umbrella.webp",
"emoji": "🏖️"
},
{
"file": "Travel and Places/Camping.webp",
"emoji": "🏕️"
},
{
"file": "Travel and Places/Classical Building.webp",
"emoji": "🏛️"
},
{
"file": "Travel and Places/Compass.webp",
"emoji": "🧭"
},
{
"file": "Travel and Places/Desert Island.webp",
"emoji": "🏝️"
},
{
"file": "Travel and Places/Hot Springs.webp",
"emoji": "♨️"
},
{
"file": "Travel and Places/House.webp",
"emoji": "🏠"
},
{
"file": "Travel and Places/Locomotive.webp",
"emoji": "🚂"
},
{
"file": "Travel and Places/Moai.webp",
"emoji": "🗿"
},
{
"file": "Travel and Places/Motor Boat.webp",
"emoji": "🛥️"
},
{
"file": "Travel and Places/Police Car.webp",
"emoji": "🚓"
},
{
"file": "Travel and Places/Rocket.webp",
"emoji": "🚀"
},
{
"file": "Travel and Places/Roller Coaster.webp",
"emoji": "🎢"
},
{
"file": "Travel and Places/Taxi.webp",
"emoji": "🚕"
}
]
};