import type { ReactNode } from 'react' import type { GameFactoryInput } from 'board-game-engine' import { Game, useGameserverConnection } from '../src/index' import ticTacToe from './tic-tac-toe.json' import { ErrorBoundary } from 'react-error-boundary' import './styles.css' const sampleGame = ticTacToe as unknown as GameFactoryInput export default { title: 'Game', component: Game, className: 'board-game-engine-react', args: { gameRules: sampleGame, numPlayers: 2, isSpectator: false, }, argTypes: { gameRules: { control: 'object' }, numPlayers: { control: 'number' }, isSpectator: { control: 'boolean' }, }, } const fallbackRender = ({ error }: { error: Error }) =>
Invalid Game Rules {error.message}
const Template = ({ gameRules, numPlayers, loading, isSpectator, }: { gameRules: GameFactoryInput numPlayers: number loading?: ReactNode isSpectator?: boolean }) => { const gameConnection = useGameserverConnection({ gameRules, numPlayers, }) return (
) } export const Basic = Template.bind({}) type TemplateProps = Parameters[0] export const WithLoading = Object.assign( (args: TemplateProps) => (