1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"/home/seanedmunds/dev/home-page/src/index.js\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\n\nfunction Square(props) {\n return /*#__PURE__*/_jsxDEV(\"button\", {\n className: \"square\",\n onClick: props.onClick,\n children: props.value\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 7,\n columnNumber: 7\n }, this);\n}\n\n_c = Square;\n\nclass Board extends React.Component {\n renderSquare(i) {\n return /*#__PURE__*/_jsxDEV(Square, {\n value: this.state.squares[i],\n onClick: () => this.props.onClick(i)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 16,\n columnNumber: 7\n }, this);\n }\n\n render() {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"board-row\",\n children: [this.renderSquare(0), this.renderSquare(1), this.renderSquare(2)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 26,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"board-row\",\n children: [this.renderSquare(3), this.renderSquare(4), this.renderSquare(5)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 31,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"board-row\",\n children: [this.renderSquare(6), this.renderSquare(7), this.renderSquare(8)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 36,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 25,\n columnNumber: 7\n }, this);\n }\n\n}\n\nclass Game extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n history: [{\n squares: Array(9).fill(null),\n xIsNext: true\n }]\n };\n }\n\n handleClick(i) {\n const history = this.state.history;\n const current = history[history.length - 1];\n const squares = current.squares.slice();\n\n if (calculateWinner(squares) || squares[i]) {\n return;\n }\n\n squares[i] = this.state.xIsNext ? 'X' : 'O';\n this.setState({\n history: history.concat([{\n squares: squares\n }]),\n xIsNext: !this.state.xIsNext\n });\n }\n\n render() {\n const history = this.state.history;\n const current = history[history.length - 1];\n const winner = calculateWinner(current.squares);\n const moves = history.map((step, move) => {\n const desc = move ? 'Go to move #' + move : 'Go to game start';\n return /*#__PURE__*/_jsxDEV(\"li\", {\n children: /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => this.jumpTo(move),\n children: desc\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 82,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 81,\n columnNumber: 11\n }, this);\n });\n let status;\n\n if (winner) {\n status = 'Winner :' + winner;\n } else {\n status = 'Next player: ' + (this.state.xIsNext ? 'X' : 'O');\n }\n\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"game\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"game-board\",\n children: /*#__PURE__*/_jsxDEV(Board, {\n squares: current.squares,\n onClick: i => this.handleClick(i)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 96,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 95,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"game-info\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: status\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 102,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"ol\", {\n children: moves\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 103,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 101,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 94,\n columnNumber: 7\n }, this);\n }\n\n} // ========================================\n\n\nReactDOM.render( /*#__PURE__*/_jsxDEV(Game, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 113,\n columnNumber: 3\n}, this), document.getElementById('root'));\n\nfunction calculateWinner(squares) {\n const lines = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]];\n\n for (let i = 0; i < lines.length; i++) {\n const [a, b, c] = lines[i];\n\n if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {\n return squares[a];\n }\n }\n\n return null;\n}\n\nvar _c;\n\n$RefreshReg$(_c, \"Square\");","map":{"version":3,"sources":["/home/seanedmunds/dev/home-page/src/index.js"],"names":["React","ReactDOM","Square","props","onClick","value","Board","Component","renderSquare","i","state","squares","render","Game","constructor","history","Array","fill","xIsNext","handleClick","current","length","slice","calculateWinner","setState","concat","winner","moves","map","step","move","desc","jumpTo","status","document","getElementById","lines","a","b","c"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\n\nfunction Square(props) {\n return (\n <button className=\"square\" onClick={props.onClick}>\n {props.value}\n </button>\n )\n}\n\nclass Board extends React.Component {\n renderSquare(i) {\n return (\n <Square \n value={this.state.squares[i]} \n onClick={() => this.props.onClick(i)}\n />\n );\n }\n\n render() {\n return (\n <div>\n <div className=\"board-row\">\n {this.renderSquare(0)}\n {this.renderSquare(1)}\n {this.renderSquare(2)}\n </div>\n <div className=\"board-row\">\n {this.renderSquare(3)}\n {this.renderSquare(4)}\n {this.renderSquare(5)}\n </div>\n <div className=\"board-row\">\n {this.renderSquare(6)}\n {this.renderSquare(7)}\n {this.renderSquare(8)}\n </div>\n </div>\n );\n }\n}\n\nclass Game extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n history: [{\n squares: Array(9).fill(null),\n xIsNext: true,\n }]\n }\n }\n handleClick(i) {\n const history = this.state.history;\n const current = history[history.length -1];\n const squares = current.squares.slice();\n if (calculateWinner(squares) || squares[i]) {\n return;\n }\n squares[i] = this.state.xIsNext ? 'X' : 'O';\n this.setState({\n history: history.concat([{\n squares: squares,\n }]),\n xIsNext: !this.state.xIsNext,\n });\n }\n render() {\n const history = this.state.history;\n const current = history[history.length -1];\n const winner = calculateWinner(current.squares);\n\n const moves = history.map((step, move) => {\n const desc = move ?\n 'Go to move #' + move :\n 'Go to game start';\n return (\n <li>\n <button onClick={() => this.jumpTo(move)}>{desc}</button>\n </li>\n );\n });\n\n let status;\n if (winner) {\n status = 'Winner :' + winner;\n } else {\n status = 'Next player: ' + (this.state.xIsNext ? 'X' : 'O');\n }\n return (\n <div className=\"game\">\n <div className=\"game-board\">\n <Board \n squares={current.squares}\n onClick={(i) => this.handleClick(i)}\n />\n </div>\n <div className=\"game-info\">\n <div>{status}</div>\n <ol>{moves}</ol>\n </div>\n </div>\n );\n }\n}\n\n// ========================================\n\nReactDOM.render(\n <Game />,\n document.getElementById('root')\n);\n\nfunction calculateWinner(squares) {\n const lines = [\n [0, 1, 2],\n [3, 4, 5],\n [6, 7, 8],\n [0, 3, 6],\n [1, 4, 7],\n [2, 5, 8],\n [0, 4, 8],\n [2, 4, 6],\n ];\n for (let i = 0; i < lines.length; i++) {\n const [a, b, c] = lines[i];\n if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {\n return squares[a];\n }\n }\n return null;\n}"]},"metadata":{},"sourceType":"module"} |