Speicherplatz in Dateien, Smilies in Nachrichten
This commit is contained in:
@@ -25,12 +25,10 @@ const EMOJI_MAP = {
|
||||
|
||||
// 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;
|
||||
// Letztes "Wort" vor dem Leerzeichen/Newline prüfen
|
||||
return text.replace(/(\S+)(\s)$/, (_, word, space) => {
|
||||
return (EMOJI_MAP[word] ?? word) + space;
|
||||
});
|
||||
}
|
||||
|
||||
// ── Emoji-Picker Daten ────────────────────────────────────────────────────────
|
||||
@@ -86,6 +84,17 @@ export default function Nachrichten({ toast, mobile }) {
|
||||
const [showPicker, setShowPicker] = useState(false);
|
||||
const bottomRef = useRef(null);
|
||||
const pollRef = useRef(null);
|
||||
const pickerRef = useRef(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (!showPicker) return;
|
||||
const handler = e => {
|
||||
if (pickerRef.current && !pickerRef.current.contains(e.target)) setShowPicker(false);
|
||||
};
|
||||
document.addEventListener('mousedown', handler);
|
||||
document.addEventListener('touchstart', handler);
|
||||
return () => { document.removeEventListener('mousedown', handler); document.removeEventListener('touchstart', handler); };
|
||||
}, [showPicker]);
|
||||
|
||||
// ── Initialisierung ──────────────────────────────────────────────────────────
|
||||
useEffect(() => {
|
||||
@@ -430,7 +439,7 @@ export default function Nachrichten({ toast, mobile }) {
|
||||
Senden nicht möglich
|
||||
</div>
|
||||
) : (
|
||||
<div style={{ display:'flex', gap:8, alignItems:'flex-end', position:'relative' }}>
|
||||
<div style={{ display:'flex', gap:8, alignItems:'flex-end', position:'relative' }} ref={pickerRef}>
|
||||
{showPicker && (
|
||||
<EmojiPicker
|
||||
onSelect={em => { setText(t => t + em); setShowPicker(false); }}
|
||||
|
||||
Reference in New Issue
Block a user