import React, { useContext } from 'react'
import PropTypes from 'prop-types';
import { socket } from '../socket';
import { Box, Flex } from '@mantine/core';
import { useDroppable } from '@dnd-kit/core'
import Piece from './Piece';
import { ChessGameContext } from '../context/chess-game-context';
import { SOCKET_EVENTS } from '../constants';
const { CHESS_MOVE, GAME_END } = SOCKET_EVENTS
const Cell = ({ cell, callbacks }) => {
let roomID = localStorage.getItem('roomID');
let { square, type } = cell;
const { getSquareColor, isSquareMarked, handleSquareClick, isLastMoveSquare } = useContext(ChessGameContext)
const { isOver, setNodeRef } = useDroppable({ id: square });
let squareColor = getSquareColor(square);
let historyCell = isLastMoveSquare(square);
let marked = isSquareMarked(square);
let borderColor = isOver ? '#77777744' : 'transparent';
let borderWidth = type ? '3px' : '5px'
const handleClick = () => {
handleSquareClick(square, callbacks.pieceClickCallback, () => {
socket.emit(GAME_END, roomID);
});
}
let content = null;
if (marked && !type) {
content =
} else if (type) {
content =
}
return (
{
let color = theme.colors.lime;
return { backgroundColor: historyCell ? '#c0cc5c' : (squareColor === 'b' ? '#769854' : '#e8edcd'), aspectRatio: '1/1' }
}} onClick={handleClick} bg={squareColor === 'w' ? "white" : "gray"} >
{content}
)
}
const Mark = () => {
return (
)
}
Cell.propTypes = {
cell: PropTypes.shape({
square: PropTypes.string.isRequired,
type: PropTypes.oneOf(['p', 'r', 'n', 'b', 'q', 'k']),
color: PropTypes.oneOf(['w', 'b'])
})
}
export default Cell