{"version":3,"sources":["LineChart.module.css","utils.js","Node.js","constants.js","Graph.js","LineChart.js","SimulationSettings.js","simulation/markov.js","simulation/grid.js","simulation/index.js","App.js","serviceWorker.js","index.js","App.module.css","SimulationSettings.module.css","Graph.module.css"],"names":["module","exports","randomSample","array","size","r","temp","length","i","end","swaps","Math","floor","random","push","sample","slice","pop","shuffle","temporaryValue","randomIndex","currentIndex","weightedRandom","spec","sum","prob","value","padding","max","padded","min","distance","source","target","sqrt","pow","x","y","noop","ICONS","house","hospital","temple","station","supermarket","Node","layout","node","width","height","type","venue","onNodeClick","position","id","transform","classes","classNames","styles","susceptible","state","sick","recovered","dead","locked","className","onClick","fontSize","stroke","fill","strokeWidth","Graph","props","handleTick","bind","setCurrent","current","nodes","reduce","prev","acc","this","runForceSimulation","simulation","on","nextProps","tick","updateForceSimulation","alpha","restart","force","links","edges","forceSimulation","forceLink","forceCollide","iterations","radius","updates","map","setState","nodeId","ref","svgRef","style","shapeRendering","index","Component","defaultProps","buildPolyLineString","points","xMultipier","yMultipier","maxXEntries","concat","join","LineChart","xOffset","yOffset","data","maxYPoint","maxYRange","scaleY","labelY","lineChart","color","labelX","SimulationSettings","simulationState","onSettingChange","onRestartButtonClick","container","form","onChange","initialSickAgents","agentsPerHouse","houses","busStations","hospitals","supermarkets","temples","footer","STAY","BASE","SIR_TRANSITION_STATE","DISEASE_SPREAD_TRANSITION","getNextMarkovStateForAgent","agent","transitionMap","location","split","agentLocation","applyFixedNodeGrid","gridSize","nodesToAlign","filter","count","row","col","fx","fy","VENUES","name","members","isRoot","VENUE_TRANSITIONS","getInitialGraph","forEach","alignment","nodeIndex","venueId","j","agentId","base","sickAgents","nextSimulationTick","find","nextMarkovState","moveAgent","fellow","applySIRModel","targetNode","sourceNode","edge","INITIAL_SIMULATION_STATE","INITIAL_GRAPH","App","useState","setSimulationState","setNodes","setEdges","historicalSickCount","setHistoricalSickCount","historicalRecoveredCount","setHistoricalRecoveredCount","historicalDeadCount","setHistoricalDeadCount","loading","setLoading","graphRef","useRef","callback","delay","savedCallback","useEffect","setInterval","clearInterval","useInterval","header","samples","sampleSusceptible","sampleInfected","sampleRecovered","round","section","stats","population","simulationSettings","simulationInfo","key","event","Boolean","window","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console","message"],"mappings":"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","file":"static/js/main.e0b65bcc.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"lineChart\":\"LineChart_lineChart__kGPs0\",\"labelY\":\"LineChart_labelY__1qHyC\",\"labelX\":\"LineChart_labelX__nzAeo\"};","import { COLORS as colors } from './constants';\nimport React, { useState, useEffect, useRef } from 'react';\n\nexport function useInterval(callback, delay) {\n // https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n // danke, dan\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nfunction getRandom(length) { return Math.floor(Math.random() * length); }\n\nexport function randomSample(array, size) {\n // https://stackoverflow.com/a/37835673\n var r, i = array.length, end = i - size, temp, swaps = randomSample.swaps;\n\n while (i-- > end) {\n r = getRandom(i + 1);\n temp = array[r];\n array[r] = array[i];\n array[i] = temp;\n swaps.push(i);\n swaps.push(r);\n }\n\n var sample = array.slice(end);\n\n while(size--) {\n i = swaps.pop();\n r = swaps.pop();\n temp = array[i];\n array[i] = array[r];\n array[r] = temp;\n }\n\n return sample;\n}\nrandomSample.swaps = [];\n\nexport function randomChoice(array) {\n return array[Math.floor(Math.random() * array.length)]\n}\n\nexport function shuffle(array) {\n // https://stackoverflow.com/a/2450976\n var currentIndex = array.length, temporaryValue, randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n\n return array;\n}\n\nexport function weightedRandom(spec) {\n const random = Math.random();\n let sum = .0; \n\n for (var i in spec) {\n const [prob, value] = spec[i];\n sum += prob;\n if (random <= sum) {\n return value;\n };\n }\n};\n\nexport function rangeBetween(min, max) {\n return Math.random() * (max - min) + min;\n}\n\nexport function shade(value) {\n let sum = 0;\n\n for (var i in colors) {\n const color = colors[i];\n if (value <= sum) {\n return color;\n };\n\n sum += 1 / colors.length;\n }\n\n return colors[colors.length - 1];\n}\n\nexport function padding(value, max, padded) {\n return Math.min(Math.max(padded, value), max - 50);\n}\n\nexport function distance(source, target) {\n return Math.sqrt(Math.pow(target.x - source.x, 2) + Math.pow(target.y - source.y, 2))\n}\n","import React, { Component } from \"react\";\nimport classNames from \"classnames\";\n\nimport styles from \"./Graph.module.css\";\nimport { padding, shade } from \"./utils\";\nimport { VENUE, SUSCEPTIBLE, SICK, RECOVERED, DEAD } from \"./constants\";\n\nfunction noop() {}\n\nconst ICONS = {\n house: \"🏠\",\n hospital: \"🏥\",\n temple: \"🕍\",\n station: \"🚌\",\n supermarket: \"🛒\"\n};\n\nexport default function Node({\n layout,\n node,\n width,\n height,\n type,\n venue,\n onNodeClick = noop\n}) {\n const position = layout[node.id];\n const transform = `translate(\n ${padding(position.x, width, 7)},\n ${padding(position.y, height, 30)}\n )`;\n\n const classes = classNames({\n [styles.node]: true,\n [styles[type]]: true,\n [styles[venue]]: true,\n [styles.susceptible]: node.state === SUSCEPTIBLE,\n [styles.sick]: node.state === SICK,\n [styles.recovered]: node.state === RECOVERED,\n [styles.dead]: node.state === DEAD,\n [styles.locked]: node.locked\n });\n\n return (\n