{"version":3,"sources":["components/Footer.js","components/NavMenu.js","components/Layout.js","components/hooks/useApi.js","components/RamradCheckbox.js","components/UradCheckbox.js","components/UradFilter.js","RowGenerator.js","components/RowFilterModal.js","components/hooks/useForm.js","RowArrayService.js","components/FillRamradModal.js","components/InfoModal.js","components/FilterSettings.js","components/Matchtable.js","components/Gameplan.js","components/EmptyCoupon.js","components/context/GametypeContext.js","components/Coupon.js","components/Seo.js","components/Home.js","components/NotFound.js","components/Page.js","components/context/GametypeState.js","App.js","registerServiceWorker.js","index.js"],"names":["Footer","n","Date","getFullYear","className","NavMenu","props","toggleNavbar","bind","state","collapsed","this","setState","Navbar","color","Container","NavbarBrand","tag","Link","to","NavbarToggler","onClick","Collapse","isOpen","navbar","NavItem","NavLink","Component","displayName","name","Layout","children","apiStates","RamradCheckbox","React","useState","checked","setChecked","useEffect","isChecked","index","sign","ramrad","includes","Fragment","onChange","e","setRamrad","id","colname","type","classes","value","htmlFor","UradCheckbox","setUrad","uradindex","UradFilter","uradfilter","uradlocalfilter","setUradlocalFilter","UradFilterChange","target","setUradFilter","forhtml","min","max","RowGenerator","urad1","urad2","urad3","urad4","rowfilter","row","urad","Object","keys","length","matches","key","charAt","indexOf","array","i","arr","pre","self","reduce","ans","concat","getCombn","slice","rows","replace","baseRows","filter","el","filteredRows","hasUrad1","hasUrad2","hasUrad3","hasUrad4","nrOne","split","nrDraw","nrTwo","onemin","onemax","drawmin","drawmax","twomin","twomax","rowMatchUrad","urad1min","urad1max","urad2min","urad2max","urad3min","urad3max","urad4min","urad4max","push","RowFilterModal","initialValues","values","setValues","useForm","ramradfilter","handleChange","closeDialog","preventDefault","toggleRowFilterModal","style","display","tabIndex","role","data_dismiss","aria_label","aria-hidden","method","action","placeholder","rowCount","setCounter","setRamradFilter","RowArrayService","unshift","xIndex","splice","signIndex","forEach","v","result","ramradFilter","changedRamradFilter","isEightMatch","rowArray","signsArr","signs","toUpperCase","signArr","console","log","initialrowfilter","FillRamradModal","toggleFillRamradModal","innerText","cloned","JSON","parse","stringify","modifiedArray","fillIncompleteArray","countRows","fillRamrad","handleFillRamradModal","InfoModal","closeModal","title","text","memo","maxrowmodalopen","setMaxRowModalOpen","rowfiltermodalopen","setRowFilterModalOpen","fillramradmodalopen","setFillRamradModalOpen","disablesave","setDisableSave","gametypedropdownopen","setGameTypeDropdownOpen","counter","toggleGametype","gametype","toLowerCase","resetFilter","href","data_toggle","aria_haspopup","aria_expanded","toString","aria-labelledby","disabled","xmlns","width","height","fill","viewBox","d","fillRule","rowgen","data","round","exportFile","roundName","fetch","headers","body","then","response","json","error","resonse","url","window","location","catch","err","alert","uradcounter","map","match","eventNumber","teamsDescription","home","homeShort","away","awayShort","matchStartString","odds","draw","distribution","homePercent","drawPercent","awayPercent","renderUrader","colSpan","Gameplan","coupon","defaultrow","IsEightMatch","intialFilter","rowStringToArray","setFilter","setUradCounter","closeTimeString","turnOver","indexes","appendArray","colArrayIsComplete","hasUradFilterValues","hasRowFilterValues","u1signs","removeProp","rest","u2signs","u3signs","u4signs","Error","filledArray","drawNumber","Emptycoupon","GameTypeContext","createContext","Coupon","dependencies","setData","setPartData","partialData","useApi","notfound","setNotFound","useContext","GametypeContext","setGametype","route","SEO","description","Helmet","meta","content","Home","useParams","URLSearchParams","search","get","gameTypeToLoad","minHeight","NotFound","Page","document","GametypeState","Provider","App","exact","path","component","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","ready","unregister","URL","process","origin","addEventListener","status","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.175c67cd.chunk.js","sourcesContent":["import React from 'react';\r\nimport './Footer.css';\r\n\r\nexport const Footer = () => {\r\n //console.log('Render Footer Component');\r\n\r\n let d = new Date();\r\n let n = d.getFullYear();\r\n return (\r\n \r\n )\r\n}\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport './NavMenu.css';\r\n\r\nexport class NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n\r\n constructor (props) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true\r\n };\r\n }\r\n\r\n toggleNavbar () {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n render() {\r\n //console.log('Render NavMenu Component');\r\n\r\n return (\r\n
\r\n \r\n \r\n TipsPro\r\n \r\n \r\n
    \r\n \r\n Stryktipset\r\n \r\n \r\n Europatipset\r\n \r\n \r\n Topptipset\r\n \r\n \r\n Powerplay\r\n \r\n \r\n Om oss\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Footer } from './Footer.js';\r\nimport { NavMenu } from './NavMenu';\r\n\r\nexport const Layout = (props) => {\r\n return(\r\n
\r\n \r\n
\r\n {props.children}\r\n
\r\n
\r\n );\r\n \r\n}\r\n","import React, { useEffect } from 'react';\r\n\r\nexport const apiStates = {\r\n LOADING: 'LOADING',\r\n SUCCESS: 'SUCCESS',\r\n ERROR: 'ERROR',\r\n};\r\n\r\nexport const useApi = (url, dependencies) => {\r\n const [data, setData] = React.useState({\r\n state: apiStates.LOADING,\r\n error: '',\r\n data: [],\r\n });\r\n\r\n const setPartData = (partialData) => setData({ ...data, ...partialData });\r\n\r\n useEffect(() => {\r\n //console.log('sending httprequest');\r\n setPartData({\r\n state: apiStates.LOADING,\r\n });\r\n fetch(url)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n setPartData({\r\n state: apiStates.SUCCESS,\r\n data\r\n });\r\n })\r\n .catch(() => {\r\n setPartData({\r\n state: apiStates.ERROR,\r\n error: 'Fel när data skulle hämtas från api'\r\n });\r\n });\r\n }, dependencies, url);\r\n\r\n return data;\r\n};","import React, { useEffect } from 'react';\r\n\r\nexport const RamradCheckbox = (props) => {\r\n\r\n const [checked, setChecked] = React.useState(false);\r\n\r\n // Similar to componentDidMount and componentDidUpdate:\r\n useEffect(() => {\r\n if (isChecked(props.index, props.sign)) {\r\n setChecked(true);\r\n }\r\n }, [props]);\r\n\r\n const isChecked = (index, sign) => {\r\n return props.ramrad[index].includes(sign) ? \"checked\" : null;\r\n }\r\n const onChange = (e) => {\r\n setChecked(!checked);\r\n props.setRamrad(e)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n\r\n}","import React, { useState} from 'react';\r\n\r\nexport const UradCheckbox = (props) => {\r\n\r\n const [checked, setChecked] = useState(false);\r\n const onChange = (e) => {\r\n setChecked(!checked);\r\n props.setUrad(e);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\n\r\nexport const UradFilter = (props) => {\r\n\r\n const [uradlocalfilter, setUradlocalFilter] = useState(props.uradfilter);\r\n\r\n const UradFilterChange = (e) => {\r\n setUradlocalFilter({ ...uradlocalfilter, [e.target.name]: e.target.value });\r\n props.setUradFilter(e);\r\n };\r\n\r\n useEffect(() => {\r\n setUradlocalFilter(props.uradfilter);\r\n }, [props.uradfilter]);\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\n \r\n}\r\n","class RowGenerator {\r\n\r\n constructor(ramrad, urad1, urad2, urad3, urad4, uradfilter, rowfilter) {\r\n this.ramrad = ramrad;\r\n this.urad1 = urad1;\r\n this.urad2 = urad2;\r\n this.urad3 = urad3;\r\n this.urad4 = urad4;\r\n this.uradfilter = uradfilter;\r\n this.rowfilter = rowfilter\r\n }\r\n\r\n get hasUrader() {\r\n return Object.keys(this.urad1).length > 0 || Object.keys(this.urad2).length > 0 || Object.keys(this.urad3).length > 0 || Object.keys(this.urad4).length > 0\r\n } \r\n\r\n rowMatchUrad(row, urad, min, max) {\r\n if (Object.keys(urad).length > 0) {\r\n let matches = 0;\r\n for (const key in urad) {\r\n let sign = row.charAt(key);\r\n if (urad[key].indexOf(sign) > -1) {\r\n matches++;\r\n }\r\n }\r\n if (matches >= min && matches <= max) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n get exportFile() {\r\n let rows = this.rows;\r\n for (var i = 0; i < rows.length; i++) {\r\n rows[i] = rows[i].replace(/([1,X,2]{1}(?!,|$))/g, \"$1,\");\r\n }\r\n return rows;\r\n\r\n }\r\n\r\n get rowCount() {\r\n return this.rows.length;\r\n }\r\n get rows() {\r\n //remove empty arrays\r\n let baseRows = this.getCombn(this.ramrad.filter((el) => el.length > 0)); //1111111111111\r\n let filteredRows = [];\r\n let hasUrad1 = Object.keys(this.urad1).length > 0;\r\n let hasUrad2 = Object.keys(this.urad2).length > 0;\r\n let hasUrad3 = Object.keys(this.urad3).length > 0;\r\n let hasUrad4 = Object.keys(this.urad4).length > 0;\r\n \r\n for (var i = 0; i < baseRows.length; i++) {\r\n let nrOne = baseRows[i].split('1').length-1;\r\n let nrDraw = baseRows[i].split('X').length-1;\r\n let nrTwo = baseRows[i].split('2').length-1;\r\n //filter on signs\r\n if (nrOne < this.rowfilter.onemin || nrOne > this.rowfilter.onemax) {\r\n continue;\r\n } if (nrDraw < this.rowfilter.drawmin || nrDraw > this.rowfilter.drawmax) {\r\n continue;\r\n }\r\n if (nrTwo < this.rowfilter.twomin || nrTwo > this.rowfilter.twomax) {\r\n continue;\r\n }\r\n if (hasUrad1 && !this.rowMatchUrad(baseRows[i], this.urad1, this.uradfilter.urad1min, this.uradfilter.urad1max)) {\r\n continue;\r\n } \r\n if (hasUrad2 && !this.rowMatchUrad(baseRows[i], this.urad2, this.uradfilter.urad2min, this.uradfilter.urad2max)) {\r\n continue;\r\n } \r\n if (hasUrad3 && !this.rowMatchUrad(baseRows[i], this.urad3, this.uradfilter.urad3min, this.uradfilter.urad3max)) {\r\n continue;\r\n } \r\n if (hasUrad4 && !this.rowMatchUrad(baseRows[i], this.urad4, this.uradfilter.urad4min, this.uradfilter.urad4max)) {\r\n continue;\r\n } \r\n \r\n filteredRows.push(baseRows[i]);\r\n }\r\n return filteredRows;\r\n }\r\n colArrayHasValues(array) {\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i].length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n getCombn(arr, pre) {\r\n let self = this;\r\n pre = pre || '';\r\n if (!arr.length) {\r\n return pre;\r\n }\r\n var ans = arr[0].reduce(function (ans, value) {\r\n return ans.concat(self.getCombn(arr.slice(1), pre + value));\r\n }, []);\r\n return ans;\r\n }\r\n}\r\nexport default RowGenerator;","import React from 'react';\r\nimport { useForm } from './hooks/useForm';\r\nimport RowGenerator from '../RowGenerator';\r\n\r\nexport const RowFilterModal = (props) => {\r\n\r\n const [values, handleChange] = useForm(props.filter.ramradfilter);\r\n\r\n const closeDialog = (e) =>{\r\n e.preventDefault();\r\n props.toggleRowFilterModal(e);\r\n }\r\n const save = (e) => {\r\n e.preventDefault();\r\n const noChanges = (props.filter.ramradfilter.onemin === values.onemin &&\r\n props.filter.ramradfilter.onemax === values.onemax &&\r\n props.filter.ramradfilter.drawmin === values.drawmin &&\r\n props.filter.ramradfilter.drawmax === values.drawmax &&\r\n props.filter.ramradfilter.twomin === values.twomin &&\r\n props.filter.ramradfilter.twomax === values.twomax);\r\n if (!noChanges) { \r\n const rowgen = new RowGenerator(props.filter.ramrad, props.filter.urad1, props.filter.urad2, props.filter.urad3, props.filter.urad4, props.filter.uradfilter, values);\r\n const rows = rowgen.rowCount;\r\n props.setCounter(rows); \r\n props.setRamradFilter(values);\r\n }\r\n props.toggleRowFilterModal(e);\r\n }\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
Reducera rader
\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\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\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\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import { useState } from 'react';\r\n\r\n\r\n\r\nexport const useForm = (initialValues) => {\r\n\r\n const [values, setValues] = useState(initialValues);\r\n\r\n\r\n return [\r\n values,\r\n e => {\r\n setValues({\r\n ...values,\r\n [e.target.name]: e.target.value\r\n });\r\n }\r\n ]\r\n\r\n\r\n}","class RowArrayService {\r\n\r\n \r\n static appendArray(array, index, sign, checked) {\r\n if (checked) {\r\n if (sign === \"1\") {\r\n array[index].unshift(sign);\r\n }\r\n else if (sign === \"2\") {\r\n array[index].push(sign);\r\n }\r\n else {\r\n let xIndex = array[index].length === 0 ? 0 : 1;\r\n array[index].splice(xIndex, 0, \"X\");\r\n }\r\n }\r\n else {\r\n let signIndex = array[index].indexOf(sign)\r\n array[index].splice(signIndex, 1);\r\n }\r\n return array;\r\n }\r\n static fillIncompleteArray(array) {\r\n array.forEach((v) => {\r\n if (v.length === 0) {\r\n v.splice(0, 0, \"1\", \"X\", \"2\");\r\n }\r\n });\r\n return array;\r\n }\r\n\r\n static colArrayIsComplete(array) {\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i].length === 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static countRows(array) {\r\n let result = 1;\r\n array.forEach((v) => {\r\n result *= v.length;\r\n });\r\n return result;\r\n }\r\n static countRowsIncludeEmpty(array) {\r\n let result = 1;\r\n array.forEach((v) => {\r\n result *= (v.length === 0 ? 3 : v.length);\r\n });\r\n return result;\r\n }\r\n static hasUradFilterChanges(ramradFilter, changedRamradFilter) {\r\n for (const key in changedRamradFilter) {\r\n if (changedRamradFilter[key] !== ramradFilter[key]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n static hasUradFilterValues(urad1, urad2, urad3, urad4) {\r\n return Object.keys(urad1).length > 0 || Object.keys(urad2).length > 0 || Object.keys(urad3).length > 0 || Object.keys(urad4).length > 0\r\n }\r\n\r\n\r\n static rowStringToArray(row, isEightMatch) {\r\n var rowArray = isEightMatch ? [[], [], [], [], [], [], [], []] : [[], [], [], [], [], [], [], [], [], [], [], [], []];\r\n\r\n if (row === \"\") {\r\n return rowArray\r\n }\r\n let signsArr = row.split(',');\r\n for (var i = 0; i < signsArr.length; i++) {\r\n let signs = signsArr[i].toUpperCase();\r\n if (isEightMatch && i > 7 || !isEightMatch && i > 12) {\r\n break;\r\n }\r\n let signArr = signs.split('');\r\n rowArray[i] = signArr;\r\n }\r\n console.log(rowArray);\r\n return rowArray;\r\n }\r\n\r\n static hasRowFilterValues(rowfilter, initialrowfilter) {\r\n return !(rowfilter.onemin === initialrowfilter.onemin &&\r\n rowfilter.onemax === initialrowfilter.onemax &&\r\n rowfilter.drawmin === initialrowfilter.drawmin &&\r\n rowfilter.drawmax === initialrowfilter.drawmax &&\r\n rowfilter.twomin === initialrowfilter.twomin &&\r\n rowfilter.twomax === initialrowfilter.twomax);\r\n }\r\n static colArrayHasValues(array) {\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i].length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n \r\n}\r\nexport default RowArrayService;","import React from 'react';\r\nimport RowArrayService from './../RowArrayService';\r\n\r\nexport const FillRamradModal = (props) => {\r\n\r\n const handleFillRamradModal = (e) => {\r\n e.preventDefault();\r\n if (e.target.innerText === \"Ok\") {\r\n let cloned = JSON.parse(JSON.stringify(props.ramrad));\r\n const modifiedArray = RowArrayService.fillIncompleteArray(cloned);\r\n const result = RowArrayService.countRows(modifiedArray)\r\n if (result < 100000) {\r\n props.fillRamrad(modifiedArray);\r\n props.setCounter(result);\r\n }\r\n return result;\r\n }\r\n }\r\n const closeDialog = (e) => {\r\n e.preventDefault()\r\n props.toggleFillRamradModal(0, \"cancel\");\r\n }\r\n const save = (e) => {\r\n var result = handleFillRamradModal(e);\r\n props.toggleFillRamradModal(result, \"ok\");\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
Helgardera resten?
\r\n \r\n
\r\n
\r\n

Du måste markera minst ett tecken för alla rader i din ursprungsrad för att kunna filtrera. Vill du helgardera resten?

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import React from 'react';\r\n\r\nexport const InfoModal = (props) => {\r\n\r\n const closeDialog = (e) =>{\r\n props.closeModal(e);\r\n }\r\n const save = (e) => {\r\n props.closeModal(e);\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
{props.title}
\r\n \r\n
\r\n
\r\n

{props.text}

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import React, { useState } from 'react';\r\nimport { Link } from \"react-router-dom\";\r\nimport './Filtersettings.css';\r\nimport { RowFilterModal } from './RowFilterModal';\r\nimport { FillRamradModal } from './FillRamradModal';\r\nimport { InfoModal } from './InfoModal';\r\nimport RowGenerator from '../RowGenerator';\r\nimport RowArrayService from './../RowArrayService';\r\n//import { saveAs } from 'file-saver';\r\n\r\nconst FilterSettings = (props) => {\r\n\r\n //console.log('Loading component fitersettings, gametype ' + props.gametype)\r\n\r\n const [maxrowmodalopen, setMaxRowModalOpen] = useState(false);\r\n const [rowfiltermodalopen, setRowFilterModalOpen] = useState(false);\r\n const [fillramradmodalopen, setFillRamradModalOpen] = useState(false);\r\n const [disablesave, setDisableSave] = useState(false);\r\n const [gametypedropdownopen, setGameTypeDropdownOpen] = useState(false);\r\n\r\n const toggleRowFilterModal = (e) => {\r\n e.preventDefault();\r\n //counter = -1, ramrad is incomplete\r\n if (!rowfiltermodalopen && props.counter === -1) {\r\n setFillRamradModalOpen(true);\r\n return;\r\n }\r\n if (!rowfiltermodalopen && props.counter > 100000) {\r\n setMaxRowModalOpen(true);\r\n return;\r\n }\r\n setRowFilterModalOpen(!rowfiltermodalopen);\r\n }\r\n const toggleFillRamradModal = (result, action) => {\r\n if (action === \"ok\") {\r\n result > 100000 ? setMaxRowModalOpen(true) : setRowFilterModalOpen(!rowfiltermodalopen);\r\n }\r\n setFillRamradModalOpen(!fillramradmodalopen);\r\n }\r\n const handleMaxRowModal = (e) => {\r\n e.preventDefault();\r\n setDisableSave(false);\r\n setMaxRowModalOpen(!maxrowmodalopen);\r\n }\r\n const exportToFile = (e) => {\r\n e.preventDefault();\r\n //preventDoubleclick\r\n setDisableSave(true);\r\n\r\n const ramradCount = RowArrayService.countRows(props.filter.ramrad);\r\n //check if rows > 100000 = popup\r\n if (ramradCount > 10000) {\r\n setMaxRowModalOpen(!maxrowmodalopen);\r\n return;\r\n }\r\n let rowgen = new RowGenerator(props.filter.ramrad, props.filter.urad1, props.filter.urad2, props.filter.urad3, props.filter.urad4, props.filter.uradfilter, props.filter.ramradfilter);\r\n let data = {\r\n \"drawNumber\": props.round,\r\n \"system\": \"single\",\r\n \"betRowAmount\": 1, \r\n \"items\": rowgen.exportFile,\r\n \"client\": \"Tipspro 1.0\",\r\n \"retailer\": \"Tipspro\"\r\n }\r\n //console.log(JSON.stringify(data));\r\n let roundName = props.gametype;\r\n if (props.roundName.toLowerCase() === \"topptipset extra\") {\r\n roundName = \"topptipseteuropa\"\r\n }\r\n else if (props.roundName.toLowerCase() === \"topptipset stryk\") {\r\n roundName = \"topptipsetstryk\"\r\n }\r\n\r\n fetch('/api/svs?gametype=' + roundName, {\r\n method: \"POST\",\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(data),\r\n }).then(response => response.json())\r\n .then((json) => {\r\n //console.log(json);\r\n if (json.error != '' && json.resonse?.url != '') {\r\n //alert(json.response.url);\r\n window.location.href = json.response.url;\r\n }\r\n }).catch (err => alert(\"Filen kunde inte skickas till Svenska spel. Kontrollera att omg\\u00e5ngen är öppen för spel.\"));\r\n\r\n\r\n //export tofile\r\n //const exportfilename = props.gametype.charAt(0).toUpperCase() + this.slice(1);\r\n //const fileContent = (exportfilename +'\\r\\n') + rowgen.exportFile.join('');\r\n //const blob = new Blob([fileContent], { type: \"text/plain;charset=utf-8\" });\r\n //saveAs(blob, props.gametype);\r\n\r\n setDisableSave(false);\r\n }\r\n const updateCounter = (e) => {\r\n e.preventDefault();\r\n\r\n const ramradCount = RowArrayService.countRows(props.filter.ramrad);\r\n //check if rows > 100000 = popup\r\n if (ramradCount > 100000) {\r\n setMaxRowModalOpen(!maxrowmodalopen);\r\n }\r\n else {\r\n const rowgen = new RowGenerator(props.filter.ramrad, props.filter.urad1, props.filter.urad2, props.filter.urad3, props.filter.urad4, props.filter.uradfilter, props.filter.ramradfilter);\r\n const rows = rowgen.rowCount;\r\n props.setCounter(rows);\r\n }\r\n\r\n }\r\n const toggleGametype = (e) => {\r\n if (props.gametype !== e.target.innerText.toLowerCase()) {\r\n props.resetFilter();\r\n }\r\n else {\r\n e.preventDefault();\r\n }\r\n }\r\n const toggleGametypeDropdown = (e) => {\r\n e.preventDefault();\r\n setGameTypeDropdownOpen(!gametypedropdownopen);\r\n \r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

Välj spelform:

\r\n
\r\n \r\n {props.gametype.charAt(0).toUpperCase() + props.gametype.slice(1)}\r\n \r\n
\r\n Stryktipset\r\n Europatipset\r\n Topptipset\r\n Powerplay\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {props.counter > 100000 ? \"100000+\" : (props.counter === -2 ? \"?\" : props.counter === -1 ? \"0\" : props.counter)}\r\n Rader\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 {rowfiltermodalopen && }\r\n {fillramradmodalopen && }\r\n {maxrowmodalopen && }\r\n
\r\n );\r\n}\r\n\r\n\r\n\r\nexport default React.memo(FilterSettings);","import React from 'react';\r\nimport { RamradCheckbox } from './RamradCheckbox';\r\nimport { UradCheckbox } from './UradCheckbox';\r\nimport { UradFilter } from './UradFilter';\r\nimport FilterSettings from './FilterSettings';\r\nimport './Matchtable.css';\r\n\r\nconst Matchtable = (props) => {\r\n\r\n //console.log('Rendering MatchTable component');\r\n\r\n const renderUrader = (match) => {\r\n return (\r\n <>\r\n {props.uradcounter.map(\r\n (n, index) => (\r\n 1 ? \" border-left\" : \"\"}`} key={index}>\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\n );\r\n }\r\n const renderUradHeading = () => {\r\n return (\r\n <>\r\n {props.uradcounter.map(\r\n (n, index) => (\r\n \r\n Urad-{n}\r\n \r\n ),\r\n )}\r\n \r\n );\r\n }\r\n const renderUradFilter = () => {\r\n return (\r\n <>\r\n {props.uradcounter.map(\r\n (n, index) => (\r\n \r\n \r\n \r\n ),\r\n )}\r\n \r\n );\r\n }\r\n\r\n return (\r\n
2 ? \" rtl\" : \"\"}`}>\r\n 2 ? \" ltr\" : \"\"}`}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderUradHeading()}\r\n \r\n \r\n \r\n {props.matches.map(match =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderUrader(match)}\r\n \r\n )} \r\n {props.uradcounter.length > 0 ?\r\n \r\n \r\n \r\n {renderUradFilter()}\r\n \r\n :null\r\n }\r\n \r\n
#MatchStartProcentOdds1   X   2
{match.eventNumber}\r\n {match.teamsDescription == '' ?\r\n <>\r\n {match.home}\r\n {match.homeShort}\r\n - \r\n {match.away}\r\n {match.awayShort}\r\n \r\n :\r\n {match.teamsDescription}\r\n }\r\n {match.matchStartString}\r\n {match.odds.home}-\r\n {match.odds.draw}-\r\n {match.odds.away}\r\n \r\n {match.distribution.homePercent}-\r\n {match.distribution.drawPercent}-\r\n {match.distribution.awayPercent}\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\n
\r\n ); \r\n\r\n}\r\n\r\nexport default React.memo(Matchtable);\r\n//export default React.memo(Matchtable, (prevProps, nextProps) => {\r\n// return (prevProps.uradcounter === nextProps.uradcounter && prevProps.gametype === nextProps.gametype);\r\n//});\r\n","import React, { useState } from 'react';\r\nimport Matchtable from './Matchtable';\r\nimport RowArrayService from '../RowArrayService';\r\nimport './Gameplan.css';\r\n\r\nexport const Gameplan = ({ gametype, coupon, defaultrow }) => {\r\n\r\n const IsEightMatch = gametype === \"stryktipset\" || gametype === \"europatipset\" ? false : true;\r\n\r\n const intialFilter = IsEightMatch ?\r\n {\r\n ramradfilter: { onemin: 0, onemax: 8, drawmin: 0, drawmax: 8, twomin: 0, twomax: 8 },\r\n ramrad: RowArrayService.rowStringToArray(defaultrow, IsEightMatch),\r\n urad1: {},\r\n urad2: {},\r\n urad3: {},\r\n urad4: {},\r\n uradfilter: { urad1min: 0, urad1max: 8, urad2min: 0, urad2max: 8, urad3min: 0, urad3max: 8, urad4min: 0, urad4max: 8 }\r\n }\r\n : {\r\n ramradfilter: { onemin: 0, onemax: 13, drawmin: 0, drawmax: 13, twomin: 0, twomax: 13 },\r\n ramrad: RowArrayService.rowStringToArray(defaultrow, IsEightMatch),\r\n urad1: {},\r\n urad2: {},\r\n urad3: {},\r\n urad4: {},\r\n uradfilter: { urad1min: 0, urad1max: 13, urad2min: 0, urad2max: 13, urad3min: 0, urad3max: 13, urad4min: 0, urad4max: 13 }\r\n };\r\n\r\n const [filter, setFilter] = useState(intialFilter);\r\n const [counter, setCounter] = useState(defaultrow === \"\" ? -1 : RowArrayService.countRows(intialFilter.ramrad));\r\n const [uradcounter, setUradCounter] = useState([1,2]);\r\n\r\n const fillRamrad = (filledArray) => {\r\n setFilter({ ...filter, ramrad: filledArray });\r\n }\r\n const setRamrad = (e) => {\r\n let indexes = e.target.id.split('_'); //ramrad_0_1 = row1 has one checked\r\n const modifiedArray = RowArrayService.appendArray(filter.ramrad, indexes[1], e.target.value, e.target.checked);\r\n setFilter({ ...filter, ramrad: modifiedArray });\r\n\r\n if (RowArrayService.colArrayIsComplete(modifiedArray)) {\r\n //un-disable reloadbutton if uradfilters or rowfilter\r\n if (RowArrayService.hasUradFilterValues(filter.urad1, filter.urad2, filter.urad3, filter.urad4) ||\r\n RowArrayService.hasRowFilterValues(filter.ramradfilter, intialFilter.ramradfilter)) {\r\n //counter - 2 the rowcount has to be reloaded\r\n if (counter !== -2) {\r\n setCounter(-2);\r\n }\r\n }\r\n else {\r\n const result = RowArrayService.countRows(modifiedArray)\r\n setCounter(result);\r\n }\r\n }\r\n else if (counter !== -1) {\r\n //counter has value or need to be recalculated and NOT colArrayIsComplete, restore counter to default i.e. -1\r\n setCounter(-1);\r\n }\r\n }\r\n const setUrad = (e) => {\r\n let indexes = e.target.id.split('_'); //urad1_0_0 = row1 has one checked\r\n switch (indexes[0]) {\r\n case 'urad1':\r\n let u1signs = filter.urad1[indexes[1]] ? filter.urad1[indexes[1]] : \"\";\r\n u1signs = u1signs.replace(e.target.value, '');\r\n if (e.target.checked) {\r\n u1signs += e.target.value;\r\n }\r\n if (u1signs === '') {\r\n const removeProp = indexes[1];\r\n const { [removeProp]: remove, ...rest } = filter.urad1;\r\n setFilter({ ...filter, urad1: rest });\r\n if (!RowArrayService.hasUradFilterValues({}, filter.urad2, filter.urad3, filter.urad4) &&\r\n !RowArrayService.hasRowFilterValues(filter.ramradfilter, intialFilter.ramradfilter)) {\r\n const result = RowArrayService.countRows(filter.ramrad)\r\n setCounter(result);\r\n return;\r\n }\r\n }\r\n else {\r\n setFilter({ ...filter, urad1: { ...filter.urad1, [indexes[1]]: u1signs } });\r\n\r\n }\r\n break;\r\n case 'urad2':\r\n let u2signs = filter.urad2[indexes[1]] ? filter.urad2[indexes[1]] : \"\";\r\n u2signs = u2signs.replace(e.target.value, '');\r\n if (e.target.checked) {\r\n u2signs += e.target.value;\r\n }\r\n if (u2signs === '') {\r\n const removeProp = indexes[1];\r\n const { [removeProp]: remove, ...rest } = filter.urad2;\r\n setFilter({ ...filter, urad2: rest });\r\n }\r\n else {\r\n setFilter({ ...filter, urad2: { ...filter.urad2, [indexes[1]]: u2signs } });\r\n\r\n }\r\n break;\r\n case 'urad3':\r\n let u3signs = filter.urad3[indexes[1]] ? filter.urad3[indexes[1]] : \"\";\r\n u3signs = u3signs.replace(e.target.value, '');\r\n if (e.target.checked) {\r\n u3signs += e.target.value;\r\n }\r\n if (u3signs === '') {\r\n const removeProp = indexes[1];\r\n const { [removeProp]: remove, ...rest } = filter.urad3;\r\n setFilter({ ...filter, urad3: rest });\r\n }\r\n else {\r\n setFilter({ ...filter, urad3: { ...filter.urad3, [indexes[1]]: u3signs } });\r\n\r\n }\r\n break;\r\n case 'urad4':\r\n let u4signs = filter.urad4[indexes[1]] ? filter.urad4[indexes[1]] : \"\";\r\n u4signs = u4signs.replace(e.target.value, '');\r\n if (e.target.checked) {\r\n u4signs += e.target.value;\r\n }\r\n if (u4signs === '') {\r\n const removeProp = indexes[1];\r\n const { [removeProp]: remove, ...rest } = filter.urad4;\r\n setFilter({ ...filter, urad4: rest });\r\n }\r\n else {\r\n setFilter({ ...filter, urad4: { ...filter.urad4, [indexes[1]]: u4signs } });\r\n\r\n }\r\n break;\r\n default:\r\n throw new Error('Whoops! Something strange happend')\r\n }\r\n if (RowArrayService.colArrayIsComplete(filter.ramrad)) {\r\n //counter - 2 the rowcount has to be reloaded\r\n setCounter(-2);\r\n }\r\n }\r\n const setUradFilter = (e) => {\r\n const { name, value } = e.target;\r\n setFilter({ ...filter, uradfilter: { ...filter.uradfilter, [name]: value} });\r\n //counter - 2 the rowcount has to be reloaded\r\n if (counter >= 0) {\r\n setCounter(-2);\r\n }\r\n }\r\n const setRamradFilter = (values) => {\r\n setFilter({ ...filter, ramradfilter: { ...filter.ramradfilter, ...values } });\r\n }\r\n const resetFilter = () => {\r\n setFilter(intialFilter);\r\n }\r\n const incrementUradCounter = (e) => {\r\n e.preventDefault();\r\n setUradCounter([...uradcounter, (uradcounter.length + 1)]);\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n

{coupon.roundName}

\r\n
\r\n
\r\n {coupon.closeTimeString}\r\n | \r\n Omsättning: {coupon.turnOver}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n );\r\n}","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const Emptycoupon = ({ gametype }) => {\r\n\r\n //console.log('Render Emptycoupon Component');\r\n\r\n return (\r\n
\r\n
\r\n

Åh, nej...

\r\n

\r\n Tyvärr kunde vi inte hämta nästa kupong för {gametype} ännu.\r\n Det kan bero på att spelomgången inte är öppen.\r\n

\r\n Stryktipset\r\n Europatipset\r\n Topptipset\r\n Powerplay\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\n\r\n\r\n","import React from 'react';\r\n\r\nconst GameTypeContext = React.createContext();\r\n\r\nexport default GameTypeContext;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useApi, apiStates } from './hooks/useApi';\r\nimport { Gameplan } from './Gameplan';\r\nimport { Emptycoupon } from './EmptyCoupon';\r\nimport GametypeContext from './context/GametypeContext';\r\n\r\n\r\nexport const Coupon = (props) => {\r\n //console.log('Render Coupon Component for ' + props.gametype);\r\n\r\n const { state, error, data } = useApi(`api/round?type=${props.gametype}`, [props.gametype]);\r\n const [notfound, setNotFound ] = useState(false);\r\n const { gametype, setGametype } = useContext(GametypeContext);\r\n\r\n\r\n useEffect(() => {\r\n if (state === apiStates.SUCCESS) {\r\n if (data == null || data.matches == null) {\r\n if (typeof (props.route) === \"undefined\" && props.gametype === \"stryktipset\") {\r\n setGametype(\"europatipset\");\r\n }\r\n else if (typeof (props.route) === \"undefined\" && props.gametype === \"europatipset\") {\r\n setGametype(\"topptipset\");\r\n }\r\n else if (typeof (props.route) === \"undefined\" && props.gametype === \"topptipset\") {\r\n setGametype(\"powerplay\");\r\n }\r\n else {\r\n setNotFound(true);\r\n }\r\n }\r\n }\r\n }, [state]);\r\n\r\n\r\n switch (state) {\r\n case apiStates.ERROR:\r\n return
ERROR: {error || 'General error'}
\r\n case apiStates.SUCCESS:\r\n if (data == null || data.matches == null) {\r\n return (<>\r\n { notfound && }\r\n );\r\n }\r\n return ( \r\n <>\r\n \r\n \r\n );\r\n default:\r\n return (\r\n
\r\n
\r\n Loading...\r\n
\r\n
\r\n );\r\n } \r\n}\r\n\r\n","import React from 'react';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nexport const SEO = ({ description, title }) => {\r\n return (\r\n \r\n ) \r\n}","import React, { useContext} from 'react';\r\nimport { Coupon } from './Coupon.js';\r\nimport { useParams } from \"react-router-dom\";\r\nimport GametypeContext from './context/GametypeContext';\r\nimport {SEO} from \"./Seo\";\r\n\r\nexport const Home = (props) => {\r\n\r\n let { id } = useParams();\r\n const params = new URLSearchParams(props.location.search);\r\n const row = params.get('row') ?? \"\";\r\n\r\n let title = \"Reduceringsverktyg f\\u00f6r dig som spelar systemspel | Tipspro\";\r\n let description = 'Tipspro \\u00e4r ett reduceringsverktyg f\\u00f6r dig som spelar systemspel till spelformerna Stryktipset, Europatipset, Powerplay och Topptipset fr\\u00e5n Svenska Spel.'\r\n switch (id) {\r\n case 'stryktipset':\r\n title = \"Stryktipset reduceringsverktyg f\\u00f6r systemspel | Tipspro\";\r\n description = \"Tipspro \\u00e4r det enkla reduceringsverktyget f\\u00f6r dig som ska spela p\\u00e5 Svenska Spels Stryktipset och samtidigt spela lite smartare.\"\r\n break;\r\n case 'europatipset':\r\n title = \"Europatipset reduceringsverktyg f\\u00f6r systemspel | Tipspro\";\r\n description = \"Spela Europatipset med reducerade rader med Tipspro. Med v\\u00e5rt enkla reduceringsverktyg kan du spela st\\u00f6rre system till en l\\u00e4gre kostnad.\"\r\n break;\r\n case 'topptipset':\r\n title = \"Topptipset reduceringsverktyg f\\u00f6r systemspel | Tipspro\";\r\n description = \"Reducera rader p\\u00e5 Topptipset fr\\u00e5n Svenska Spel med Tipspro. Vi erbjuder enkel reducering som \\u00e4r enkel att anv\\u00e4nda \\u00e4ven f\\u00f6r nyb\\u00f6rjare.\"\r\n break;\r\n\r\n case 'powerplay':\r\n title = \"Powerplay reduceringsverktyg f\\u00f6r systemspel | Tipspro\";\r\n description = \"Spelar du Powerplay fr\\u00e5n Svenska Spel? Med Tipspro kan du spela smartare med en mindre investering \\u00e4n om du spelar ett matematiskt system\"\r\n break;\r\n }\r\n\r\n \r\n const { gametype, setGametype } = useContext(GametypeContext);\r\n let gameTypeToLoad = \"stryktipset\";\r\n if (typeof (id) !== \"undefined\") {\r\n gameTypeToLoad = id;\r\n if (gametype !== gameTypeToLoad) {\r\n setGametype(gameTypeToLoad.toLowerCase())\r\n }\r\n }\r\n else {\r\n gameTypeToLoad = gametype;\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","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nexport const NotFound = () => {\r\n\r\n\r\n return (\r\n
\r\n

Sidan kunde inte hittas :(

\r\n

404 - Vi kunde hitta sidan du letar efter. Leta på startsidan för att hitta det du söker.

\r\n Gå till startsidan\r\n
);\r\n\r\n\r\n}","import React, { useEffect } from 'react';\r\nimport { SEO } from \"./Seo\";\r\n\r\nexport const Page = () => {\r\n useEffect(() => {\r\n document.body.className = 'page';\r\n return () => { document.body.className = ''; }\r\n });\r\n return (\r\n <>\r\n \r\n
\r\n

Om Webbplatsen

\r\n

Tipspro ägs och drivs av Eastandsthlm AB och är en webbplats som erbjuder systemspel till spelformerna Styktipset, Europatipset, Topptipset och Powerplay från Svenska Spel Sport & Casino.

\r\n

På Tipspro behöver du inte logga in eller registrera dig utan det är fritt fram för alla som vill att kostnadsfritt använda vårt reduceringsverktyg. Gå vidare till \r\n  Systemspel

\r\n
\r\n \r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport GametypeContext from './GametypeContext';\r\n\r\n\r\nexport const GametypeState = ({ children }) => {\r\n\r\n //const isStryktipsDay = new Date().getDay() > 2 && new Date().getDay() !== 0;\r\n //const [gametype, setGametype] = useState(isStryktipsDay ? \"stryktipset\" : \"europatipset\");\r\n const [gametype, setGametype] = useState(\"stryktipset\");\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}","import React from 'react';\r\nimport { Route, Switch } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './components/Home';\r\nimport { NotFound } from './components/NotFound';\r\nimport { Page } from './components/Page';\r\nimport { GametypeState } from './components/context/GametypeState';\r\n\r\n\r\nimport './custom.css'\r\nexport const App = () => {\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","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { App } from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport * as serviceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nserviceWorker.unregister();\r\nregisterServiceWorker();\r\n\r\n"],"sourceRoot":""}