- Сделаны круглыми кнопки отправки и прокрутки вниз - Убран фон у поля ввода сообщений - Добавлен emoji-picker-element с поддержкой категорий - Скрыта кнопка выбора тона кожи в emoji picker - Изменена иконка кнопки отправки на ракету - Исправлена бесконечная перезагрузка при падении WebSocket - Добавлено умное переподключение WebSocket с 5 попытками - Улучшена анимация кнопки прокрутки вниз
344 lines
14 KiB
JavaScript
344 lines
14 KiB
JavaScript
/**
|
||
* Русские ключевые слова для поиска эмодзи
|
||
* Формат: emoji -> массив русских синонимов
|
||
*/
|
||
export const emojiRussianKeywords = {
|
||
// Смайлики и эмоции
|
||
'😀': ['улыбка', 'радость', 'счастье', 'смайлик'],
|
||
'😃': ['улыбка', 'радость', 'смайлик'],
|
||
'😄': ['смех', 'улыбка', 'радость'],
|
||
'😁': ['ухмылка', 'улыбка', 'зубы'],
|
||
'😆': ['смех', 'хохот', 'веселье'],
|
||
'😅': ['пот', 'облегчение', 'смех'],
|
||
'🤣': ['смех', 'хохот', 'ржу'],
|
||
'😂': ['слезы', 'смех', 'плакать от смеха'],
|
||
'🙂': ['улыбка', 'легкая улыбка'],
|
||
'🙃': ['перевернутый', 'сарказм'],
|
||
'😉': ['подмигивание', 'намек'],
|
||
'😊': ['застенчивый', 'милый', 'улыбка'],
|
||
'😇': ['ангел', 'святой', 'невинный'],
|
||
'🥰': ['любовь', 'влюблен', 'сердечки'],
|
||
'😍': ['любовь', 'влюблен', 'сердце в глазах'],
|
||
'🤩': ['звезды', 'восторг', 'вау'],
|
||
'😘': ['поцелуй', 'воздушный поцелуй'],
|
||
'😗': ['поцелуй', 'губы'],
|
||
'😚': ['поцелуй', 'закрытые глаза'],
|
||
'😙': ['поцелуй', 'улыбка'],
|
||
'🥲': ['слеза', 'трогательно', 'счастье со слезой'],
|
||
'😋': ['вкусно', 'язык', 'ням'],
|
||
'😛': ['язык', 'дразнить'],
|
||
'😜': ['подмигивание', 'язык', 'шутка'],
|
||
'🤪': ['безумный', 'сумасшедший', 'веселье'],
|
||
'😝': ['язык', 'закрытые глаза'],
|
||
'🤑': ['деньги', 'богатство', 'жадность'],
|
||
'🤗': ['объятие', 'обнять'],
|
||
'🤭': ['ой', 'упс', 'смущение'],
|
||
'🤫': ['тсс', 'тихо', 'секрет'],
|
||
'🤔': ['думать', 'размышление', 'хм'],
|
||
'🤐': ['молчание', 'замок на губах'],
|
||
'🤨': ['подозрение', 'скептицизм', 'бровь'],
|
||
'😐': ['нейтральный', 'без эмоций'],
|
||
'😑': ['без эмоций', 'недовольство'],
|
||
'😶': ['без рта', 'молчание'],
|
||
'😏': ['ухмылка', 'самодовольство'],
|
||
'😒': ['недовольство', 'скука'],
|
||
'🙄': ['закатить глаза', 'раздражение'],
|
||
'😬': ['неловко', 'смущение', 'зубы'],
|
||
'😮': ['удивление', 'шок', 'о'],
|
||
'😯': ['удивление', 'ошеломление'],
|
||
'😲': ['шок', 'удивление'],
|
||
'😳': ['смущение', 'покраснение'],
|
||
'🥺': ['умоляющий', 'жалость', 'щенячьи глаза'],
|
||
'😦': ['нахмуренный', 'озабоченность'],
|
||
'😧': ['тревога', 'страх'],
|
||
'😨': ['испуг', 'страх'],
|
||
'😰': ['тревога', 'пот', 'нервы'],
|
||
'😥': ['грусть', 'облегчение', 'пот'],
|
||
'😢': ['слезы', 'плач', 'грусть'],
|
||
'😭': ['рыдание', 'плач', 'слезы'],
|
||
'😱': ['крик', 'ужас', 'страх'],
|
||
'😖': ['смущение', 'разочарование'],
|
||
'😣': ['упорство', 'настойчивость'],
|
||
'😞': ['разочарование', 'грусть'],
|
||
'😓': ['усталость', 'пот', 'стресс'],
|
||
'😩': ['усталость', 'стон'],
|
||
'😫': ['устал', 'измучен'],
|
||
'🥱': ['зевок', 'усталость', 'скука'],
|
||
'😤': ['триумф', 'гордость', 'пар из носа'],
|
||
'😡': ['злость', 'гнев'],
|
||
'😠': ['злой', 'гневный'],
|
||
'🤬': ['ругань', 'мат', 'злость'],
|
||
'😈': ['дьявол', 'зло', 'рога'],
|
||
'👿': ['дьявол', 'злой', 'рога'],
|
||
'💀': ['череп', 'смерть', 'умираю'],
|
||
'☠️': ['череп', 'яд', 'опасность'],
|
||
|
||
// Жесты
|
||
'👋': ['привет', 'пока', 'махать рукой'],
|
||
'🤚': ['рука', 'стоп'],
|
||
'🖐️': ['рука', 'пять', 'ладонь'],
|
||
'✋': ['стоп', 'рука', 'ладонь'],
|
||
'🖖': ['вулканский привет', 'спок'],
|
||
'👌': ['ок', 'окей', 'отлично'],
|
||
'🤌': ['жест', 'итальянский'],
|
||
'🤏': ['маленький', 'чуть-чуть'],
|
||
'✌️': ['победа', 'пис', 'два'],
|
||
'🤞': ['скрестить пальцы', 'удача'],
|
||
'🤟': ['люблю тебя', 'рок'],
|
||
'🤘': ['рок', 'рога'],
|
||
'🤙': ['позвони', 'телефон'],
|
||
'👈': ['влево', 'указать'],
|
||
'👉': ['вправо', 'указать'],
|
||
'👆': ['вверх', 'указать'],
|
||
'👇': ['вниз', 'указать'],
|
||
'☝️': ['вверх', 'один'],
|
||
'👍': ['лайк', 'класс', 'отлично'],
|
||
'👎': ['дизлайк', 'плохо'],
|
||
'✊': ['кулак', 'сила'],
|
||
'👊': ['кулак', 'удар'],
|
||
'🤛': ['кулак', 'удар слева'],
|
||
'🤜': ['кулак', 'удар справа'],
|
||
'👏': ['аплодисменты', 'хлопать'],
|
||
'🙌': ['руки вверх', 'ура', 'праздник'],
|
||
'👐': ['открытые руки', 'объятие'],
|
||
'🤲': ['молитва', 'просьба'],
|
||
'🤝': ['рукопожатие', 'согласие', 'сделка'],
|
||
'🙏': ['молитва', 'спасибо', 'пожалуйста'],
|
||
|
||
// Сердца и любовь
|
||
'💘': ['любовь', 'сердце', 'стрела'],
|
||
'💝': ['подарок', 'сердце'],
|
||
'💖': ['блестящее сердце', 'любовь'],
|
||
'💗': ['растущее сердце', 'любовь'],
|
||
'💓': ['бьющееся сердце', 'любовь'],
|
||
'💞': ['вращающиеся сердца', 'любовь'],
|
||
'💕': ['два сердца', 'любовь'],
|
||
'💟': ['сердце', 'украшение'],
|
||
'❣️': ['восклицание', 'сердце'],
|
||
'💔': ['разбитое сердце', 'грусть'],
|
||
'❤️': ['красное сердце', 'любовь'],
|
||
'🧡': ['оранжевое сердце'],
|
||
'💛': ['желтое сердце'],
|
||
'💚': ['зеленое сердце'],
|
||
'💙': ['синее сердце'],
|
||
'💜': ['фиолетовое сердце'],
|
||
'🤎': ['коричневое сердце'],
|
||
'🖤': ['черное сердце'],
|
||
'🤍': ['белое сердце'],
|
||
|
||
// Животные
|
||
'🐶': ['собака', 'пес', 'щенок'],
|
||
'🐱': ['кот', 'кошка', 'котенок'],
|
||
'🐭': ['мышь', 'мышка'],
|
||
'🐹': ['хомяк'],
|
||
'🐰': ['кролик', 'зайчик'],
|
||
'🦊': ['лиса', 'лисица'],
|
||
'🐻': ['медведь', 'мишка'],
|
||
'🐼': ['панда'],
|
||
'🐨': ['коала'],
|
||
'🐯': ['тигр'],
|
||
'🦁': ['лев'],
|
||
'🐮': ['корова'],
|
||
'🐷': ['свинья', 'хрюшка'],
|
||
'🐸': ['лягушка'],
|
||
'🐵': ['обезьяна'],
|
||
'🐔': ['курица'],
|
||
'🐧': ['пингвин'],
|
||
'🐦': ['птица'],
|
||
'🐤': ['цыпленок'],
|
||
'🦆': ['утка'],
|
||
'🦅': ['орел'],
|
||
'🦉': ['сова'],
|
||
'🦇': ['летучая мышь'],
|
||
'🐺': ['волк'],
|
||
'🐗': ['кабан'],
|
||
'🐴': ['лошадь', 'конь'],
|
||
'🦄': ['единорог'],
|
||
'🐝': ['пчела'],
|
||
'🐛': ['гусеница', 'червяк'],
|
||
'🦋': ['бабочка'],
|
||
'🐌': ['улитка'],
|
||
'🐞': ['божья коровка'],
|
||
'🐢': ['черепаха'],
|
||
'🐍': ['змея'],
|
||
'🦎': ['ящерица'],
|
||
'🐙': ['осьминог'],
|
||
'🦀': ['краб'],
|
||
'🐡': ['рыба', 'фугу'],
|
||
'🐠': ['тропическая рыба'],
|
||
'🐟': ['рыба'],
|
||
'🐬': ['дельфин'],
|
||
'🐳': ['кит'],
|
||
'🦈': ['акула'],
|
||
|
||
// Еда
|
||
'🍎': ['яблоко'],
|
||
'🍊': ['апельсин'],
|
||
'🍋': ['лимон'],
|
||
'🍌': ['банан'],
|
||
'🍉': ['арбуз'],
|
||
'🍇': ['виноград'],
|
||
'🍓': ['клубника'],
|
||
'🍑': ['персик'],
|
||
'🍒': ['вишня'],
|
||
'🍍': ['ананас'],
|
||
'🥝': ['киви'],
|
||
'🥑': ['авокадо'],
|
||
'🍅': ['помидор', 'томат'],
|
||
'🍆': ['баклажан'],
|
||
'🥒': ['огурец'],
|
||
'🥕': ['морковь'],
|
||
'🌽': ['кукуруза'],
|
||
'🌶️': ['перец', 'острый'],
|
||
'🥔': ['картофель', 'картошка'],
|
||
'🍠': ['батат', 'сладкий картофель'],
|
||
'🥐': ['круассан'],
|
||
'🥖': ['багет', 'хлеб'],
|
||
'🥨': ['крендель'],
|
||
'🥞': ['блины'],
|
||
'🧀': ['сыр'],
|
||
'🍖': ['мясо', 'кость'],
|
||
'🍗': ['курица', 'ножка'],
|
||
'🥩': ['стейк', 'мясо'],
|
||
'🥓': ['бекон'],
|
||
'🍔': ['бургер', 'гамбургер'],
|
||
'🍟': ['картофель фри', 'фри'],
|
||
'🍕': ['пицца'],
|
||
'🌭': ['хот-дог'],
|
||
'🥪': ['сэндвич', 'бутерброд'],
|
||
'🌮': ['тако'],
|
||
'🌯': ['буррито'],
|
||
'🥙': ['лаваш', 'шаурма'],
|
||
'🥚': ['яйцо'],
|
||
'🍳': ['яичница'],
|
||
'🥘': ['паэлья', 'сковорода'],
|
||
'🍲': ['суп', 'рагу'],
|
||
'🥣': ['каша', 'миска'],
|
||
'🥗': ['салат'],
|
||
'🍿': ['попкорн'],
|
||
'🧈': ['масло'],
|
||
'🧂': ['соль'],
|
||
'🥫': ['консервы'],
|
||
'🍱': ['бенто', 'ланч'],
|
||
'🍘': ['рисовый крекер'],
|
||
'🍙': ['онигири'],
|
||
'🍚': ['рис'],
|
||
'🍛': ['карри'],
|
||
'🍜': ['лапша', 'рамен'],
|
||
'🍝': ['спагетти', 'паста'],
|
||
'🍠': ['батат'],
|
||
'🍢': ['оден'],
|
||
'🍣': ['суши'],
|
||
'🍤': ['креветка жареная'],
|
||
'🍥': ['камабоко'],
|
||
'🥮': ['лунный пряник'],
|
||
'🍡': ['данго'],
|
||
'🥟': ['пельмени'],
|
||
'🥠': ['печенье с предсказанием'],
|
||
'🥡': ['коробка для еды'],
|
||
'🦀': ['краб'],
|
||
'🦞': ['лобстер'],
|
||
'🦐': ['креветка'],
|
||
'🦑': ['кальмар'],
|
||
'🦪': ['устрица'],
|
||
'🍦': ['мороженое'],
|
||
'🍧': ['фруктовый лед'],
|
||
'🍨': ['мороженое'],
|
||
'🍩': ['пончик'],
|
||
'🍪': ['печенье'],
|
||
'🎂': ['торт', 'день рождения'],
|
||
'🍰': ['кусок торта'],
|
||
'🧁': ['кекс'],
|
||
'🥧': ['пирог'],
|
||
'🍫': ['шоколад'],
|
||
'🍬': ['конфета'],
|
||
'🍭': ['леденец'],
|
||
'🍮': ['пудинг'],
|
||
'🍯': ['мед'],
|
||
'🍼': ['детская бутылочка'],
|
||
'🥛': ['молоко'],
|
||
'☕': ['кофе', 'чай'],
|
||
'🫖': ['чайник'],
|
||
'🍵': ['зеленый чай'],
|
||
'🍶': ['саке'],
|
||
'🍾': ['шампанское'],
|
||
'🍷': ['вино'],
|
||
'🍸': ['коктейль'],
|
||
'🍹': ['тропический напиток'],
|
||
'🍺': ['пиво'],
|
||
'🍻': ['пиво', 'чирс'],
|
||
'🥂': ['бокалы', 'тост'],
|
||
'🥃': ['виски', 'стакан'],
|
||
'🥤': ['напиток', 'стакан'],
|
||
'🧃': ['сок', 'коробка'],
|
||
'🧉': ['мате'],
|
||
'🧊': ['лед'],
|
||
|
||
// Праздники и объекты
|
||
'🎉': ['праздник', 'вечеринка', 'конфетти'],
|
||
'🎊': ['конфетти', 'праздник'],
|
||
'🎈': ['шарик', 'воздушный шар'],
|
||
'🎁': ['подарок', 'сюрприз'],
|
||
'🎀': ['бант', 'лента'],
|
||
'🎂': ['торт', 'день рождения'],
|
||
'🎄': ['елка', 'новый год', 'рождество'],
|
||
'🎅': ['санта', 'дед мороз'],
|
||
'🎃': ['тыква', 'хэллоуин'],
|
||
'👻': ['привидение', 'призрак'],
|
||
'🎆': ['фейерверк', 'салют'],
|
||
'🎇': ['бенгальский огонь'],
|
||
'✨': ['искры', 'блеск', 'магия'],
|
||
'🎈': ['шарик'],
|
||
'🎉': ['конфетти', 'праздник'],
|
||
|
||
// Символы
|
||
'❤️': ['сердце', 'любовь'],
|
||
'💯': ['сто', 'процентов', 'отлично'],
|
||
'💢': ['злость', 'гнев'],
|
||
'💥': ['взрыв', 'бум'],
|
||
'💫': ['головокружение'],
|
||
'💦': ['капли', 'пот'],
|
||
'💨': ['ветер', 'быстро'],
|
||
'🔥': ['огонь', 'пламя', 'жар'],
|
||
'⭐': ['звезда'],
|
||
'🌟': ['сияющая звезда'],
|
||
'✨': ['искры', 'блеск'],
|
||
'⚡': ['молния', 'электричество'],
|
||
'☀️': ['солнце'],
|
||
'🌙': ['луна', 'месяц'],
|
||
'☁️': ['облако'],
|
||
'⛅': ['солнце за облаком'],
|
||
'⛈️': ['гроза'],
|
||
'🌧️': ['дождь'],
|
||
'⛄': ['снеговик'],
|
||
'❄️': ['снежинка', 'снег'],
|
||
'🌈': ['радуга'],
|
||
'☂️': ['зонт'],
|
||
|
||
// Флаги
|
||
'🏁': ['финиш', 'флаг'],
|
||
'🚩': ['красный флаг'],
|
||
'🏴': ['черный флаг'],
|
||
'🏳️': ['белый флаг'],
|
||
'🏳️🌈': ['радужный флаг', 'прайд', 'лгбт'],
|
||
'🇷🇺': ['россия', 'российский флаг'],
|
||
};
|
||
|
||
/**
|
||
* Функция для поиска эмодзи по русскому запросу
|
||
*/
|
||
export function searchEmojiRussian(query) {
|
||
if (!query) return [];
|
||
|
||
const lowerQuery = query.toLowerCase().trim();
|
||
const results = [];
|
||
|
||
for (const [emoji, keywords] of Object.entries(emojiRussianKeywords)) {
|
||
if (keywords.some(keyword => keyword.includes(lowerQuery))) {
|
||
results.push(emoji);
|
||
}
|
||
}
|
||
|
||
return results;
|
||
}
|