import React, { useEffect, useRef } from 'react';
import cons from '../../../client/state/cons';
import navigation from '../../../client/state/navigation';
import ContextMenu from '../../atoms/context-menu/ContextMenu';
import EmojiBoard from './EmojiBoard';
let requestCallback = null;
let isEmojiBoardVisible = false;
function EmojiBoardOpener() {
const openerRef = useRef(null);
function openEmojiBoard(cords, requestEmojiCallback) {
if (requestCallback !== null || isEmojiBoardVisible) {
requestCallback = null;
if (cords.detail === 0) openerRef.current.click();
return;
}
const x = typeof cords.x === 'string' ? cords.x : `${cords.x}px`;
const y = typeof cords.y === 'string' ? cords.y : `${cords.y}px`;
openerRef.current.style.left = cords.isReverse ? 'unset' : x;
openerRef.current.style.top = cords.isReverse ? 'unset' : y;
openerRef.current.style.right = cords.isReverse ? x : 'unset';
openerRef.current.style.bottom = cords.isReverse ? y : 'unset';
requestCallback = requestEmojiCallback;
openerRef.current.click();
}
function afterEmojiBoardToggle(isVisible) {
isEmojiBoardVisible = isVisible;
if (!isVisible) {
setTimeout(() => {
if (!isEmojiBoardVisible) requestCallback = null;
}, 500);
}
}
function addEmoji(emoji) {
requestCallback(emoji);
}
useEffect(() => {
navigation.on(cons.events.navigation.EMOJIBOARD_OPENED, openEmojiBoard);
return () => {
navigation.removeListener(cons.events.navigation.EMOJIBOARD_OPENED, openEmojiBoard);
};
}, []);
return (
)}
afterToggle={afterEmojiBoardToggle}
render={(toggleMenu) => (
)}
/>
);
}
export default EmojiBoardOpener;