import React, { useImperativeHandle, useRef } from 'react';
import { View, StyleSheet } from 'react-native';
import Background from './components/chessboard-background';
import { HighlightedSquares } from './components/highlighted-squares';
import { Pieces } from './components/pieces';
import { SuggestedDots } from './components/suggested-dots';
import { ChessboardContextProvider } from './context/board-context-provider';
import type { ChessboardRef } from './context/board-refs-context';
import {
ChessboardProps,
ChessboardPropsContextProvider,
} from './context/props-context';
import { useChessboardProps } from './context/props-context/hooks';
import type { ChessboardState } from './helpers/get-chessboard-state';
const styles = StyleSheet.create({
container: {
aspectRatio: 1,
},
});
const Chessboard: React.FC = React.memo(() => {
const { boardSize } = useChessboardProps();
return (
);
});
const ChessboardContainerComponent = React.forwardRef<
ChessboardRef,
ChessboardProps
>((props, ref) => {
const chessboardRef = useRef(null);
useImperativeHandle(
ref,
() => ({
move: (params) => chessboardRef.current?.move?.(params),
highlight: (params) => chessboardRef.current?.highlight(params),
resetAllHighlightedSquares: () =>
chessboardRef.current?.resetAllHighlightedSquares(),
getState: () => chessboardRef?.current?.getState() as ChessboardState,
resetBoard: (params) => chessboardRef.current?.resetBoard(params),
}),
[]
);
return (
);
});
const ChessboardContainer = React.memo(ChessboardContainerComponent);
export type { ChessboardRef };
export default ChessboardContainer;