{"version":3,"sources":["Components/Banko/Banko.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["LayoutType","Banko","useState","generateCount","setGenerateCount","layoutType","setLayoutType","getNumbersInRange","from","to","count","takenNumbers","arr","Array","i","current","Math","floor","random","indexOf","sameLeadingNumber","push","sort","a","b","currentNumber","some","item","toString","length","substr","sortColumns","table","cells","rows","forEach","inner","sortValues","values","map","innerText","filter","val1","val2","val3","Number","sorted","generateBankoPlade","elementId","tableElement","document","createElement","classList","add","row","rowElement","numbers","col","target","find","colElement","undefined","appendChild","arrs","cols","hasEmptyCells","getElementById","id","className","onClick","window","print","type","min","max","onChange","e","value","placeholder","selected","App","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.55eadb72.chunk.js","sourcesContent":["import { createElement, useContext, useEffect, useState } from \"react\";\r\nimport \"./Banko.scss\";\r\n\r\nenum LayoutType{\r\n THREE_PAGE,\r\n SIX_PAGE\r\n}\r\n\r\nconst Banko = () => {\r\n\r\n const [generateCount, setGenerateCount] = useState(1)\r\n const [layoutType, setLayoutType] = useState(\"six-tables-layout\")\r\n\r\n const getNumbersInRange = (from: number, to: number, count: number, takenNumbers: Array): Array => {\r\n\r\n let arr = Array()\r\n for (let i = 0; i < count; ++i) {\r\n let current = Math.floor(Math.random() * (to - from + 1) + from)\r\n while (arr.indexOf(current) > -1 || takenNumbers.indexOf(current) > -1 || sameLeadingNumber(arr, current)) {\r\n current = Math.floor(Math.random() * (to - from + 1) + from)\r\n }\r\n arr.push(current)\r\n }\r\n return arr.sort((a, b) => a - b);\r\n\r\n }\r\n\r\n const sameLeadingNumber = (arr: Array, currentNumber: number): boolean => {\r\n try {\r\n return arr.some(item => {\r\n if (currentNumber.toString().length === 1 && item.toString().length === 1) return true;\r\n if (currentNumber.toString().substr(0, 1) == \"9\" && item.toString().substr(0, 1) == \"8\" || currentNumber.toString().substr(0, 1) == \"8\" && item.toString().substr(0, 1) == \"9\") return true\r\n return currentNumber.toString().substr(0, 1) == item.toString().substr(0, 1)\r\n })\r\n }\r\n catch {\r\n return false\r\n }\r\n }\r\n\r\n const hasEmptyCells = (table: HTMLTableElement): boolean => {\r\n\r\n let rows = Array.from(table.rows)\r\n\r\n let arrs = Array>()\r\n\r\n\r\n rows.forEach(item => {\r\n\r\n let cols = Array.from(item.cells)\r\n arrs.push(cols.map(item => item.innerText))\r\n\r\n })\r\n\r\n for (let i = 0; i < 9; ++i) {\r\n\r\n let val1 = arrs[0][i]\r\n let val2 = arrs[1][i]\r\n let val3 = arrs[2][i]\r\n\r\n if (val1 == \"\" && val2 == \"\" && val3 == \"\") {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n const sortColumns = async (table: HTMLTableElement) => {\r\n\r\n let cells = Array()\r\n let arr = Array.from(table.rows)\r\n arr.forEach(item => {\r\n\r\n let current = Array.from(item.cells)\r\n current.forEach(inner => {\r\n cells.push(inner)\r\n })\r\n })\r\n\r\n sortValues([cells[0], cells[9], cells[18]])\r\n sortValues([cells[1], cells[10], cells[19]])\r\n sortValues([cells[2], cells[11], cells[20]])\r\n sortValues([cells[3], cells[12], cells[21]])\r\n sortValues([cells[4], cells[13], cells[22]])\r\n sortValues([cells[5], cells[14], cells[23]])\r\n sortValues([cells[6], cells[15], cells[24]])\r\n sortValues([cells[7], cells[16], cells[25]])\r\n sortValues([cells[8], cells[17], cells[26]])\r\n }\r\n\r\n const sortValues = (arr: Array) => {\r\n\r\n let values = [...arr.map(item => item.innerText)]\r\n\r\n let count = values.filter(item => item.length > 0).length\r\n\r\n if (count === 1) return\r\n\r\n if (count === 2) {\r\n\r\n let val1 = values[0]\r\n let val2 = values[1]\r\n let val3 = values[2]\r\n\r\n if (val1.length > 0 && val2.length > 0) {\r\n if (Number(val1) > Number(val2)) {\r\n [val1, val2] = [val2, val1]\r\n arr[0].innerText = val1\r\n arr[1].innerText = val2\r\n }\r\n }\r\n else if (val1.length > 0 && val3.length > 0) {\r\n if (Number(val1) > Number(val3)) {\r\n [val1, val3] = [val3, val1]\r\n arr[0].innerText = val1\r\n arr[2].innerText = val3\r\n }\r\n }\r\n else if (val2.length > 0 && val3.length > 0) {\r\n if (Number(val2) > Number(val3)) {\r\n [val2, val3] = [val3, val2]\r\n arr[1].innerText = val2\r\n arr[2].innerText = val3\r\n }\r\n }\r\n\r\n }\r\n\r\n if (count === 3) {\r\n let sorted = [...values].map(item => Number(item)).sort((a, b) => a - b)\r\n arr[0].innerText = sorted[0] === 0 ? \"\" : sorted[0].toString()\r\n arr[1].innerText = sorted[1] === 0 ? \"\" : sorted[1].toString()\r\n arr[2].innerText = sorted[2] === 0 ? \"\" : sorted[2].toString()\r\n }\r\n }\r\n\r\n const hanleGenerateBankoPladeClick = () => {\r\n\r\n for (let i = 0; i < generateCount; ++i){\r\n generateBankoPlade(\"bankoplade\")\r\n }\r\n \r\n }\r\n\r\n const generateBankoPlade = (elementId: string): HTMLElement => {\r\n\r\n let takenNumbers = Array()\r\n\r\n let tableElement = document.createElement(\"table\")\r\n tableElement.classList.add(`banko-table`)\r\n tableElement.classList.add(`${layoutType}`)\r\n\r\n for (let row = 0; row < 3; ++row) {\r\n\r\n let rowElement = document.createElement(\"tr\")\r\n\r\n let numbers = getNumbersInRange(1, 90, 5, takenNumbers)\r\n\r\n takenNumbers.push(...numbers)\r\n\r\n for (let col = 0; col < 90; col += 10) {\r\n\r\n let target = numbers.find(item => item >= col && item < col + 10)\r\n\r\n if (numbers[4] === 90 && col >= 80) {\r\n target = 90\r\n }\r\n\r\n let colElement = document.createElement(\"td\")\r\n\r\n colElement.innerText = target !== undefined ? target.toString() : \"\"\r\n\r\n rowElement.appendChild(colElement)\r\n }\r\n\r\n tableElement.appendChild(rowElement)\r\n }\r\n\r\n\r\n\r\n if (hasEmptyCells(tableElement)) {\r\n generateBankoPlade(elementId)\r\n }\r\n else {\r\n\r\n sortColumns(tableElement)\r\n document.getElementById(elementId)?.appendChild(tableElement)\r\n }\r\n\r\n return tableElement\r\n }\r\n\r\n const generateCountChanged = (e:any)=> {\r\n setGenerateCount(e.target.value)\r\n }\r\n\r\n const handleLayoutChange = (e:any)=> {\r\n\r\n setLayoutType(e.target.value)\r\n }\r\n\r\n const print = ()=> {\r\n window.print()\r\n }\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n )\r\n}\r\n\r\nexport default Banko;\r\n\r\n\r\n","import React from 'react';\nimport logo from './logo.svg';\nimport './App.css';\nimport Banko from './Components/Banko/Banko';\n\nfunction App() {\n return (\n
\n \n
\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}