diff --git a/frontend/src/tools/nachrichten.jsx b/frontend/src/tools/nachrichten.jsx index f2560d5..915b44f 100644 --- a/frontend/src/tools/nachrichten.jsx +++ b/frontend/src/tools/nachrichten.jsx @@ -10,6 +10,68 @@ import { decryptMsg, } from '../crypto.js'; +// ── Emoji-Konvertierung ─────────────────────────────────────────────────────── +const EMOJI_MAP = { + ':D':'😁', ':)':'🙂', ':-)':'🙂', '(:':'🙂', ';)':'😉', ';-)':'😉', + ':P':'😛', ':-P':'😛', ':p':'😛', ':O':'😮', ':-O':'😮', ':o':'😮', + ':(':'😢', ':-(':'😢', ":'(":'😭', '>:(':"😠", '>:-(':"😠", + ':*':'😘', ':-*':'😘', '<3':'❤️', '3':'💔', + 'xD':'😆', 'XD':'😆', 'x)':"😄", + ':/':"😕", ':-/':"😕", ':|':"😐", ':-|':"😐", + 'B)':"😎", 'B-)':"😎", '^_^':"😊", '-_-':"😑", + 'O:)':"😇", 'O:-)':"😇", '>:)':"😈", + ':3':"🐱", ':$':"😳", +}; + +// Ersetze Kürzel am Ende des Textes (nach Leerzeichen oder Satzanfang) +function convertEmojis(text) { + let result = text; + for (const [code, emoji] of Object.entries(EMOJI_MAP)) { + const escaped = code.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + result = result.replace(new RegExp(`(^|\\s)${escaped}(?=\\s|$)`, 'g'), `$1${emoji}`); + } + return result; +} + +// ── Emoji-Picker Daten ──────────────────────────────────────────────────────── +const EMOJI_GROUPS = [ + { label:'Smileys', emojis:['😀','😁','😂','🤣','😊','😇','🙂','😉','😌','😍','🥰','😘','😎','🤩','😏','😒','😞','😢','😭','😤','😠','😡','🤬','😈','👿','💀','😱','😨','😰','😓','🤔','🤐','😶','😐','😑','😬','🙄','😴','🤧','🤒','😷','🤕'] }, + { label:'Gesten', emojis:['👍','👎','👌','✌️','🤞','🤟','🤙','👋','🤚','🖐','✋','🤜','🤛','👏','🙌','🤝','🙏','💪','🫶','❤️','🧡','💛','💚','💙','💜','🖤','💔','💯','💥','✨','🎉','🔥','⭐','🌟'] }, + { label:'Dinge', emojis:['😂💀','🎮','🏆','🎯','🎲','🃏','🎸','🎵','🎤','📱','💻','⌨️','🖱️','📷','🎬','📺','🚀','🛸','🌍','🌈','☀️','🌙','⭐','🍕','🍔','🍟','🌮','🍩','🍺','☕','🧃'] }, +]; + +function EmojiPicker({ onSelect, onClose }) { + const [group, setGroup] = useState(0); + return ( +