{"version":3,"sources":["components/Layout.js","components/Home.js","utils/colours.js","components/Start.js","components/Join.js","components/Session.js","components/GettingStarted.js","App.js","registerServiceWorker.js","webpack:///./src/index.js?b635"],"names":["Layout","this","props","children","Component","displayName","name","Home","history","useHistory","pathname","useLocation","useEffect","window","scrollTo","className","href","target","rel","src","alt","onClick","push","xmlns","xmlnsXlink","viewBox","id","x1","x2","y1","y2","gradientUnits","offset","stopColor","stopOpacity","xlinkHref","style","isolation","fill","d","opacity","cx","cy","rx","ry","mixBlendMode","r","version","stroke","strokeWidth","fillRule","transform","role","to","strokeMiterlimit","marginLeft","solid","small","message","link","strokeLinecap","strokeLinejoin","fillOpacity","colours","getColour","Math","floor","random","length","cards","value","decks","Start","useState","setName","deck","setDeck","observer","setObserver","e","preventDefault","ky","post","json","sessionId","localStorage","setItem","getItem","Helmet","maxWidth","onSubmit","onChange","placeholder","type","required","map","index","htmlFor","defaultChecked","card","c","find","toString","replace","checked","Join","session","setSession","match","params","Session","connection","setConnection","colour","setColour","setCard","linkCopied","setLinkCopied","sessionRef","useRef","observerRef","timer1","setTimeout","clearTimeout","current","votingActive","submitVote","newConnection","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","initName","Cookies","get","start","then","on","prevState","hasVoted","votes","voteResult","vote","users","sessionState","send","onreconnected","connectionId","catch","console","log","interval","setInterval","connectionStarted","Date","now","clearInterval","resetConnection","startVote","endVote","clearVotes","skip","disabled","navigator","clipboard","writeText","location","host","readOnly","defaultValue","filter","x","isOwner","user","charAt","sort","a","b","textA","toUpperCase","textB","localeCompare","y","xmlSpace","attributeName","begin","dur","repeatCount","values","average","round","Number","EPSILON","nearest","GettingStarted","App","exact","path","component","Boolean","hostname","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.08b7374d.chunk.js","sourcesContent":["import React, { Component } from 'react';\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render () {\n return (\n
\n {this.props.children}\n
\n );\n }\n}\n","import React, { useEffect } from 'react';\nimport { useLocation, useHistory, Link } from 'react-router-dom';\nimport { Twitter, Facebook, Linkedin, } from 'react-social-sharing';\n\nconst Home = () => {\n const history = useHistory();\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return (\n <>\n
\n
\n Estimation Poker\n \n \n Buy me a coffee\n \n
\n\n
\n
\n
\n

\n Welcome to Estimation Poker\n

\n

\n Looking to host a planning poker session online? You've come to the right place.\n

\n
\n history.push('/start')}\n className=\"mx-auto lg:mx-0 bg-brilliant-pink hover:bg-brilliant-pink-600 focus:bg-brilliant-pink-600 text-white font-bold rounded-lg mr-6 py-3 px-8 shadow-lg focus:outline-none focus:ring-0 focus:shadow-outline\"\n >\n Start Session\n \n history.push('/join')}\n className=\"mx-auto bg-brilliant-pink hover:bg-brilliant-pink-600 focus:bg-brilliant-pink-600 text-white font-bold rounded-lg ml-6 py-3 px-8 shadow-lg focus:outline-none focus:ring-0 focus:shadow-outline\"\n >\n Join Session\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n\n
\n
\n

Your new favourite scrum poker tool

\n\n
\n
\n

Quick and simple

\n

\n It's easy to use, you can start a new estimation session in seconds.\n There's a range of voting schemes to choose from to suit the way your team works.\n There's nothing to sign-up for and no accounts to create.\n

\n Main features:\n

\n
    \n
  • Dedicated link to your session πŸ”—
  • \n
  • Voting and observing πŸ‘€
  • \n
  • Multiple voting schemes (Fibonacci, T-shirt sizing) πŸƒ
  • \n
  • Easy to use πŸŽ‰
  • \n
  • Free πŸš€
  • \n
\n

\n
\n Check out our Getting started guide for more info.\n

\n
\n
\n \"Estimation\n
\n
\n\n
\n
\n \n connected world\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n

Spread the word

\n
\n If you like what you see, consider spreading the word.\n
\n \n \n \n

\n Or alternatively show your support by buying me a coffee.\n
\n
\n
\n
\n\n
\n
\n

What is planning poker? πŸƒ

\n\n

Planning poker (also known as scrum poker) is a technique used by software development teams for estimating the amount of effort involved in completing a given task.

\n\n

Tasks are usually broken down into user stories and the effort - or complexity - involved in completing a user story is represented using the Fibonacci sequence, although other schemes are sometimes used, such as a modified Fibonacci sequence or even t-shirt sizing.

\n\n

Planning poker allows members of a team to individually vote on what they think a user story should be pointed at by selecting a value from the chosen scheme, thereby removing the potential of participants being influenced by others.

\n\n

Once everyone has voted the votes are then revealed and the results are used to populate the story points for that user story.

\n\n

Usually, this is played with the team in the same room using a physical deck of planning poker cards, but with remote working being more popular than ever before there has become a need to estimate user stories virtually - this is why we created estimationpoker.cards

\n
\n
\n\n
\n
\n \n \n );\n}\n\nexport default Home\n","const colours = [\n 'gray',\n 'yellow',\n 'orange',\n 'red',\n 'green',\n 'teal',\n 'blue',\n 'indigo',\n 'purple',\n 'pink',\n];\n\nconst getColour = () => {\n return colours[Math.floor(Math.random() * colours.length)]\n}\n\nexport default getColour;","import React, { useState, useEffect } from 'react'\nimport { useHistory } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport ky from 'ky';\nimport getColour from '../utils/colours';\n\nconst cards = [\n { name: 'Zero', value: 0 },\n { name: 'Half', value: 0.5 },\n { name: 'One', value: 1 },\n { name: 'Two', value: 2 },\n { name: 'Three', value: 3 },\n { name: 'Five', value: 5 },\n { name: 'Eight', value: 8 },\n { name: 'Thirteen', value: 13 },\n { name: 'Twenty', value: 20 },\n { name: 'TwentyOne', value: 21 },\n { name: 'ThirtyFour', value: 34 },\n { name: 'Forty', value: 40 },\n { name: 'FiftyFive', value: 55 },\n { name: 'EightyNine', value: 89 },\n { name: 'Hundred', value: 100 },\n { name: 'XXS', value: null },\n { name: 'XS', value: null },\n { name: 'S', value: null },\n { name: 'M', value: null },\n { name: 'L', value: null },\n { name: 'XL', value: null },\n { name: 'XXL', value: null },\n { name: '?', value: null },\n { name: '∞', value: null },\n { name: 'Coffee', value: null },\n];\n\nconst decks = [\n ['One', 'Two', 'Three', 'Five', 'Eight', 'Thirteen', '?', '∞', 'Coffee'],\n ['Zero', 'Half', 'One', 'Two', 'Three', 'Five', 'Eight', 'Thirteen', 'Twenty', 'Forty', 'Hundred', '?', '∞', 'Coffee'],\n ['Zero', 'One', 'Two', 'Three', 'Five', 'Eight', 'Thirteen', 'TwentyOne', 'ThirtyFour', 'FiftyFive', 'EightyNine', '?', '∞', 'Coffee'],\n ['XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', '?', '∞', 'Coffee'],\n];\n\nconst Start = () => {\n const [name, setName] = useState('');\n const [deck, setDeck] = useState(decks[0]);\n const [observer, setObserver] = useState(false);\n const history = useHistory();\n\n useEffect(() => {\n setName(window.localStorage.getItem('name') ?? '');\n }, []);\n\n useEffect(() => {\n window.localStorage.setItem('observer', observer);\n }, [observer]);\n\n async function createSession(e) {\n e.preventDefault();\n\n const sessionId = await ky.post('/api/session/start', {\n json: {\n name: name,\n deck: deck,\n }\n }).json();\n\n window.localStorage.setItem('name', name);\n window.localStorage.setItem('colour', getColour());\n history.push(`/session/${sessionId}`);\n }\n\n return (\n <>\n \n Estimation Poker | Start a session\n \n
\n
\n
\n

Start estimation session

\n
\n\n
\n\n
\n \n
\n setName(e.target.value)}\n value={name}\n className=\"w-full px-3 py-2 mb-1 border-2 border-gray-200 rounded-md focus:outline-none focus:ring-0 focus:border-brilliant-pink transition-colors\"\n placeholder=\"John Smith\"\n type=\"text\"\n required\n />\n
\n
\n

Choose your deck

\n
\n {\n decks.map((d, index) => (\n
\n
\n
\n \n
\n
\n ))\n }\n
\n\n \n\n
\n \n
\n \n\n
\n \n \n )\n}\n\nexport default Start\n","import React, { useState, useEffect } from 'react'\nimport { useHistory } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport ky from 'ky';\nimport getColour from '../utils/colours';\n\nconst Join = (props) => {\n const [name, setName] = useState('');\n const [observer, setObserver] = useState(false);\n const [session, setSession] = useState('');\n const history = useHistory();\n\n useEffect(() => {\n if (props.match.params.id) {\n setSession(props.match.params.id);\n }\n }, [props.match.params.id]);\n\n useEffect(() => {\n setName(window.localStorage.getItem('name') ?? '');\n }, []);\n\n useEffect(() => {\n window.localStorage.setItem('observer', observer);\n }, [observer]);\n\n async function joinSession(e) {\n e.preventDefault();\n\n const sessionId = await ky.post('/api/session/join', {\n json: {\n name: name,\n sessionId: session,\n }\n }).json();\n\n window.localStorage.setItem('name', name);\n window.localStorage.setItem('colour', getColour());\n history.push(`/session/${sessionId}`)\n }\n\n return (\n <>\n \n Estimation Poker | Join a session\n \n
\n
\n
\n

Join estimation session

\n
\n\n
\n
\n \n
\n setSession(e.target.value)}\n value={session}\n className=\"w-full px-3 py-2 mb-1 border-2 border-gray-200 rounded-md focus:outline-none focus:ring-0 focus:border-brilliant-pink transition-colors\"\n placeholder=\"e.g. nDgWFMHj\"\n type=\"text\"\n required\n />\n
\n
\n\n
\n \n
\n setName(e.target.value)}\n value={name}\n className=\"w-full px-3 py-2 mb-1 border-2 border-gray-200 rounded-md focus:outline-none focus:ring-0 focus:border-brilliant-pink transition-colors\"\n placeholder=\"John Smith\"\n type=\"text\"\n required\n />\n
\n
\n\n \n\n
\n \n
\n
\n
\n
\n \n )\n}\n\nexport default Join\n","\nimport React, { useState, useEffect, useRef } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { HubConnectionBuilder } from '@microsoft/signalr';\nimport { Helmet } from 'react-helmet';\nimport Cookies from 'js-cookie';\n\nconst Session = (props) => {\n const [connection, setConnection] = useState(null);\n const [name, setName] = useState('');\n const [colour, setColour] = useState('');\n const [observer, setObserver] = useState(null);\n const [card, setCard] = useState(null);\n const [session, setSession] = useState(null);\n const [linkCopied, setLinkCopied] = useState(false);\n const sessionRef = useRef(null);\n const observerRef = useRef(false);\n const history = useHistory();\n\n useEffect(\n () => {\n let timer1 = setTimeout(() => setLinkCopied(false), 2000);\n\n return () => {\n clearTimeout(timer1);\n };\n },\n [linkCopied]\n );\n\n useEffect(() => {\n sessionRef.current = session;\n observerRef.current = observer;\n\n if (session && observer === true && session.votingActive) {\n submitVote(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [session, observer]);\n\n useEffect(() => {\n if (observerRef.current !== null) {\n window.localStorage.setItem('observer', observer);\n }\n }, [observer]);\n\n useEffect(() => {\n const newConnection = new HubConnectionBuilder()\n .withUrl('/estimationhub')\n .withAutomaticReconnect()\n .build();\n\n setConnection(newConnection);\n\n const initName = window.localStorage.getItem('name');\n setName(initName);\n setColour(window.localStorage.getItem('colour'));\n setObserver(window.localStorage.getItem('observer') === 'true');\n\n const userId = Cookies.get('UserId');\n\n if (!userId || !initName) {\n history.push(`/join/${props.match.params.id}`);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (connection) {\n connection.start()\n .then(() => {\n connection.on('StartVote', () => {\n setSession(prevState => {\n return {\n ...prevState,\n votingActive: true,\n hasVoted: observerRef.current,\n votes: [],\n voteResult: null,\n }\n });\n });\n\n connection.on('EndVote', voteResult => {\n setCard(null);\n setSession(prevState => {\n return {\n ...prevState,\n votingActive: false,\n voteResult: voteResult,\n }\n });\n });\n\n connection.on('ClearVotes', () => {\n setSession(prevState => {\n return {\n ...prevState,\n voteResult: null,\n votingActive: false,\n hasVoted: false,\n votes: [],\n }\n });\n });\n\n connection.on('VoteSubmitted', vote => {\n setSession(prevState => {\n return {\n ...prevState,\n votes: [...prevState.votes, vote],\n }\n });\n });\n\n connection.on('HasVoted', () => {\n setSession(prevState => {\n return {\n ...prevState,\n hasVoted: true,\n }\n });\n });\n\n connection.on('UserList', users => {\n setSession(prevState => {\n return {\n ...prevState,\n users: users,\n }\n });\n });\n\n /*connection.on('StatusUpdate', message => {\n console.log('StatusUpdate', message);\n });*/\n\n connection.on('Session', sessionState => {\n setSession(sessionState);\n });\n\n connection.on('SetName', name => {\n setName(name);\n window.localStorage.setItem('name', name);\n });\n\n connection.send('AddToSession', props.match.params.id, name, colour);\n\n // connection.onreconnecting(error => {\n // console.log('onreconnecting', error);\n // });\n\n connection.onreconnected(connectionId => {\n connection.send('AddToSession', props.match.params.id, name, colour);\n });\n })\n .catch(e => console.log('Connection failed: ', e));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [connection]);\n\n useEffect(() => {\n const interval = setInterval(() => {\n if (connection.connectionStarted) {\n connection.send('PollClientResponse', Date.now());\n }\n }, 15000);\n \n return () => {\n clearInterval(interval);\n };\n }, [connection]);\n\n\n const resetConnection = () => {\n const newConnection = new HubConnectionBuilder()\n .withUrl('/estimationhub')\n .withAutomaticReconnect()\n .build();\n\n setConnection(newConnection);\n }\n\n const startVote = async () => {\n if (connection.connectionStarted) {\n try {\n await connection.send('StartVote', session.id);\n }\n catch (e) {\n console.log(e);\n }\n }\n else {\n resetConnection();\n await startVote();\n }\n }\n\n const endVote = async () => {\n if (connection.connectionStarted) {\n try {\n await connection.send('EndVote', session.id);\n }\n catch (e) {\n console.log(e);\n }\n }\n else {\n resetConnection();\n await endVote();\n }\n }\n\n const clearVotes = async () => {\n if (connection.connectionStarted) {\n try {\n await connection.send('ClearVotes', session.id);\n }\n catch (e) {\n console.log(e);\n }\n }\n else {\n resetConnection();\n await clearVotes();\n }\n }\n\n const submitVote = async (skip) => {\n if (connection.connectionStarted) {\n const vote = {\n sessionId: props.match.params.id,\n name: name,\n card: card,\n skip,\n };\n\n try {\n await connection.send('SubmitVote', vote);\n }\n catch (e) {\n console.log(e);\n }\n }\n else {\n resetConnection();\n await submitVote(skip);\n }\n }\n\n return (\n <>\n \n {`${session ? `Estimation Poker | ${session.name}` : 'Estimation Poker'}`}\n \n
\n
\n \n
\n
\n
\n
\n
\n {\n session && (\n \n )\n }\n
\n
\n {\n session && (\n
\n {\n session && !session.votingActive && session.voteResult === null && (\n \n Start Vote\n \n )\n }\n {\n session && session.votingActive && (\n \n End Vote\n \n )\n }\n {\n session && !session.votingActive && session.voteResult && (\n \n Reset\n \n )\n }\n
\n )\n }\n {\n session && (\n
\n submitVote(false)}\n disabled={card === null || session.hasVoted || session.votingActive === false}\n className={`block w-full max-w-xs mx-auto bg-brilliant-pink ${card === null || session.hasVoted || session.votingActive === false ? '' : 'hover:bg-brilliant-pink-600 focus:bg-brilliant-pink-600 animate-single-pulse'} text-white rounded-lg px-2 py-2 md:px-1 md:py-1 lg:px-2 lg:py-2 font-semibold my-5 disabled:opacity-50 truncate`}\n >\n Submit Vote\n \n
\n )\n }\n
\n\n
\n
\n
\n \n
\n
\n \n \n \n
\n {\n session && (\n {\n navigator.clipboard.writeText(`https://${window.location.host}/join/${session.id}`);\n setLinkCopied(true);\n }}\n id=\"share-link\"\n type=\"text\"\n readOnly\n defaultValue={`https://${window.location.host}/join/${session.id}`}\n className=\"w-full -ml-7 pl-7 pr-3 py-2 rounded-lg border-2 border-gray-200 outline-none focus:ring-0 focus:border-brilliant-pink cursor-pointer\"\n />\n )\n }\n
\n {\n linkCopied && (\n
\n \n Copied!\n
\n
\n )\n }\n
\n
\n\n
\n
\n
\n
\n
Users
\n
\n
\n
\n
\n
\n {\n session && session.users.filter(x => x.isOwner === true).map(user => (\n \n \n {user.name ? user.name.charAt(0) : '?'}\n \n {user.name}\n
\n ))\n }\n {\n session && session.users\n .sort(function (a, b) {\n let textA = a.name.toUpperCase();\n let textB = b.name.toUpperCase();\n\n return textA.localeCompare(textB);\n })\n .filter(x => x.isOwner === false).map(user => (\n \n \n {user.name ? user.name.charAt(0) : '?'}\n \n {user.name}\n
\n ))\n }\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n {session && session.name}\n {\n session && session.votingActive && (\n - Voting\n )\n }\n {\n session && session.voteResult && (\n - Results\n )\n }\n
\n
\n
\n {\n session && session.hasVoted === false && session.votingActive && (\n submitVote(true)}\n className={`block w-20 p-2 text-xs bg-gray-100 hover:bg-gray-200 focus:bg-gray-200 text-gray-500 rounded`}\n >\n Skip Vote\n \n )\n }\n
\n
\n
\n
\n\n
\n
\n {\n session && session.votes.length === 0 && session.hasVoted === false && session.voteResult === null && session.votingActive === false && (\n
\n \n

Waiting for voting to start

\n
\n )\n }\n {\n session && session.hasVoted === false && session.votingActive && session.deck.map(c => (\n card === null || card !== c.name ? setCard(c.name) : setCard(null)\n }\n key={c.name}\n className={`inline-flex align-top mx-4 mb-8 bg-white rounded-lg shadow-lg border border-transparent ${c.name === card ? 'border-brilliant-pink' : ''}`}\n >\n
\n
\n {\n c.name === 'Coffee' && (\n
\n \n \n \n
\n )\n }\n {\n c.name !== 'Coffee' && (\n

{c.value !== null ? c.value.toString().replace('0.5', 'Β½') : c.name}

\n )\n }\n
\n
\n
\n ))\n }\n {\n session && session.votes.length === 0 && session.hasVoted === true && session.votingActive === true && (\n
\n \n
\n
\n

-

\n

\n \n \n \n \n \n \n \n \n \n \n \n

\n
\n
\n
\n

Waiting for votes

\n
\n )\n }\n {\n session && session.votes.length > 0 && session.voteResult && session.voteResult.average > 0 && (\n
\n \n
\n
\n

\n {\n Math.round((session.voteResult.average + Number.EPSILON) * 100) / 100\n }\n

\n

\n Average\n

\n
\n
\n
\n \n
\n
\n

\n {\n session.voteResult.nearest.toString().replace('0.5', 'Β½')\n }\n

\n

\n Nearest\n

\n
\n
\n
\n
\n )\n }\n {\n session && session.votes.length > 0 && (session.hasVoted === true || session.voteResult) && (\n
\n {\n session.votes.map(vote => (\n \n
\n
\n {\n session.votingActive && vote.card.name === 'Coffee' && (\n

-

\n )\n }\n {\n session.votingActive === false && vote.card.name === 'Coffee' && (\n
\n \n \n \n
\n )\n }\n {\n vote.card.name !== 'Coffee' && (\n

\n {\n session.votingActive ? '-' : vote.card.value !== null ? vote.card.value.toString().replace('0.5', 'Β½') : vote.card.name\n }\n

\n )\n }\n

\n {\n vote.name\n }\n

\n
\n
\n
\n ))\n }\n {\n session && session.voteResult === null && (\n \n
\n
\n

-

\n

\n \n \n \n \n \n \n \n \n \n \n \n

\n
\n
\n
\n )\n }\n {\n session && session.voteResult === null && (\n

Waiting for votes

\n )\n }\n \n )\n }\n {\n session && session.votes.length === 0 && session.voteResult && (\n
\n \n

No one has voted

\n
\n )\n }\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default Session\n","import React, { useEffect } from 'react';\nimport { useLocation, Link } from 'react-router-dom';\n\nconst GettingStarted = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return (\n <>\n
\n
\n Estimation Poker\n \n \n Buy me a coffee\n \n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n\n
\n
\n

Getting started with Estimation Poker πŸƒ

\n\n
\n
\n

Estimation Poker allows teams to estimate user stories virtually online while trying to be as simple and easy to use as possible.

\n

A new session can be started with just a few clicks.

\n

\"Estimation

\n

Just enter your name and select a voting scheme to use. If you only want to observe the votes and not participate then you can check the observer checkbox.

\n

Once the session is started you can share it with your team.

\n

They’ll be able to enter their name and join the session.

\n

\"Estimation

\n

When the team has joined, anyone can start a round of voting, when all the votes are cast then the results will be displayed.

\n

\"Estimation

\n

\"Estimation

\n

Now the user story can be story pointed and the next round of voting can take place.

\n

Home

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