import React, { useState } from "react"; import { Box, Close, Grid, useThemeUI, IconButton, Text, Flex } from "theme-ui"; import { useSpring, animated, config } from "react-spring"; import ReactResizeDetector from "react-resize-detector"; import SimpleBar from "simplebar-react"; import { useGroup } from "../../contexts/GroupContext"; import { UNGROUP_ID, ADD_TO_MAP_ID } from "../../contexts/TileDragContext"; import useResponsiveLayout from "../../hooks/useResponsiveLayout"; import ChangeNicknameIcon from "../../icons/ChangeNicknameIcon"; import GroupNameModal from "../../modals/GroupNameModal"; import { renameGroup } from "../../helpers/group"; import Droppable from "../drag/Droppable"; function TilesOverlay({ modalSize, children }) { const { groups, openGroupId, onGroupClose, onGroupSelect, onGroupsChange, } = useGroup(); const { theme } = useThemeUI(); const layout = useResponsiveLayout(); const openAnimation = useSpring({ opacity: openGroupId ? 1 : 0, transform: openGroupId ? "scale(1)" : "scale(0.99)", config: config.gentle, }); const [containerSize, setContinerSize] = useState({ width: 0, height: 0 }); function handleContainerResize(width, height) { const size = Math.min(width, height) - 16; setContinerSize({ width: size, height: size }); } const [isGroupNameModalOpen, setIsGroupNameModalOpen] = useState(false); function handleGroupNameChange(name) { onGroupsChange(renameGroup(groups, openGroupId, name)); setIsGroupNameModalOpen(false); } const group = groups.find((group) => group.id === openGroupId); if (!openGroupId) { return null; } return ( <> openGroupId && onGroupClose()} > e.stopPropagation()} > {group?.name} setIsGroupNameModalOpen(true)} > onGroupSelect()} > {children} onGroupClose()} sx={{ position: "absolute", top: 0, right: 0 }} /> setIsGroupNameModalOpen(false)} /> ); } export default TilesOverlay;