{"version":3,"sources":["components/PerformanceTest.tsx","components/Card.tsx","pages/Performance.tsx","components/StatusIcon.tsx","pages/Routing.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["ServiceIcon","Component","render","this","props","service","Error","PerformanceTest","constructor","super","state","tcpWidth","warmFblWidth","lblWidth","tcp","fbl","lbl","sum","width","failedTest","numberOfRuns","passedToParent","finishedTests","run","setState","update","$set","testStarted","i","url","uuid","mode","region","size","axios","request","method","catch","async","e","copyFailedArray","slice","getTimings","onComplete","length","updateSpeed","getAverage","timings","reduce","acc","c","j","newInterval","iteration","counter","interval","setInterval","clearInterval","performance","getEntriesByName","timingsJson","toJSON","React","createElement","style","padding","margin","paddingLeft","whiteSpace","className","textAlign","minWidth","paddingBottom","paddingTop","display","failedTests","id","flex","Icon","name","running","bothFinished","Spinner","backgroundColor","toLocaleString","left","right","height","borderRadius","paddingRight","totalDirect","totalAga","Card","tcpConnectTimeDirect","tcpConnectTimeAga","warmFblDirect","warmFblAga","lblDirect","lblAga","difference","directWidth","agaWidth","agaFinished","directFinished","diffFinished","differenceColor","updateDone","started","testComplete","updateDifference","data","Uuid","EndpointRegion","IngressPop","ingressPop","TcpConnectTimeDirect","parseFloat","toFixed","TcpConnectTimeUbiquity","TcpRequestTimeDirect","TcpRequestTimeUbiquity","TcpResponseTimeDirect","TcpResponseTimeUbiquity","DownloadSize","parseInt","then","block","regionName","position","marginTop","runDirect","bind","finished","runUbiquity","marginLeft","marginRight","color","flexDirection","PerformancePage","downloadSizes","Map","defaultDownloadSize","changeDownloadSize","event","localStorage","setItem","detail","selectedSize","startTests","downloadSize","direct","stopTests","window","location","reload","ubiquity","showMore","itemsToShow","regions","String","getItem","stripes","braids","startDisabled","document","title","protocol","Math","floor","random","response","stack","stateChangeManager","value","currRegion","currValue","currEvent","nextRegion","nextValue","nextEvent","regionNameMap","AppLayout","content","background","backgroundImage","backgroundSize","backgroundPosition","boxSizing","fontWeight","fontSize","wordWrap","borderRight","href","target","rel","ButtonDropdown","items","Array","from","keys","map","key","text","get","disabled","onItemClick","Button","variant","onClick","index","modifiedIndex","type","navigationHide","toolsHide","StatusIcon","icon","RoutingPage","_isMounted","client","ip","zone1a","zone1b","zone1c","zone1d","zone2a","zone2b","zone2c","zone2d","componentDidMount","urls","hostname","includes","concat","Promise","all","fetch","err","responses","r","json","results","body","JSON","stringify","componentWillUnmount","ColumnLayout","columns","data-awsui-column-layout-root","city","country","autonomous_system_organization","autonomous_system_number","App","HashRouter","Switch","Route","exact","path","component","subdomain","split","Redirect","to","Boolean","match","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.b9be6006.chunk.js","sourcesContent":["import React, {Component} from \"react\"\nimport axios from \"axios\"\nimport update from \"immutability-helper\"\nimport \"react-circular-progressbar/dist/styles.css\"\nimport {Spinner, Icon} from \"AWS-UI-Components-React\"\n\nclass ServiceIcon extends Component {\n render() {\n switch (this.props.service) {\n case \"direct\":\n return \"Direct over internet\"\n case \"ubiquity\":\n return \"AWS Global Accelerator\"\n default:\n throw new Error(\"Unsupported service: \" + this.props.service)\n }\n }\n}\n\nexport default class PerformanceTest extends Component {\n constructor(props: any) {\n super(props)\n this.state = {\n state: \"stopped\",\n tcpWidth: \"0%\",\n warmFblWidth: \"0%\",\n lblWidth: \"0%\",\n tcp: [],\n fbl: [],\n lbl: [],\n sum: [],\n width: 0,\n failedTest: [false, false, false],\n numberOfRuns: 3,\n passedToParent: false,\n finishedTests: false,\n }\n }\n\n async componentDidUpdate() {\n if (this.props.run === \"enabled\" && this.state.state === \"stopped\") {\n this.setState(update(this.state, {state: {$set: \"in-progress\"}}))\n this.props.testStarted()\n for (let i = 0; i < this.state.numberOfRuns; i++) {\n let url = `https://${this.props.uuid}-${i}.${this.props.mode}.${this.props.region}.prod.endpoints.ubiquity.aws.a2z.com/api/burst/${this.props.size}`\n await axios\n .request({\n method: \"get\",\n url: url,\n })\n .catch(async e => {\n await axios\n .request({\n method: \"get\",\n url: url,\n })\n .catch(e => {\n let copyFailedArray = this.state.failedTest.slice()\n copyFailedArray[i] = true\n this.setState({failedTest: copyFailedArray})\n })\n })\n }\n\n await this.getTimings()\n this.setState(update(this.state, {state: {$set: \"positive\"}}))\n }\n if (this.state.finishedTests && !this.state.passedToParent) {\n this.setState({\n passedToParent: true,\n })\n this.props.onComplete(this.props.region, this.props.mode)\n // If there are no timings found, fail the test\n if (\n this.state.tcp.length === 0 ||\n this.state.fbl.length === 0 ||\n this.state.lbl.length === 0 ||\n this.state.sum.length === 0\n ) {\n this.props.updateSpeed(this.props.mode, true, 0, 0, 0, 0)\n } else {\n this.props.updateSpeed(\n this.props.mode,\n false,\n this.getAverage(this.state.tcp),\n this.getAverage(this.state.fbl),\n this.getAverage(this.state.lbl),\n this.getAverage(this.state.sum),\n )\n }\n }\n }\n\n getAverage(timings) {\n const total = timings.reduce((acc, c) => acc + c, 0)\n return total / timings.length\n }\n\n async getTimings() {\n for (let j = 0; j < this.state.numberOfRuns; j++) {\n await this.newInterval(j)\n }\n }\n\n async newInterval(iteration) {\n let url = `https://${this.props.uuid}-${iteration}.${this.props.mode}.${this.props.region}.prod.endpoints.ubiquity.aws.a2z.com/api/burst/${this.props.size}`\n const retries = 3\n let counter = 0\n let interval = await setInterval(async () => {\n if (this.state.failedTest[iteration]) {\n clearInterval(interval)\n if (iteration === this.state.numberOfRuns - 1) {\n this.setState({\n finishedTests: true,\n })\n }\n return\n }\n if (\n typeof performance.getEntriesByName(url)[0] === \"undefined\" &&\n counter < retries\n ) {\n counter++\n await axios\n .request({\n method: \"get\",\n url: url,\n })\n .catch(async e => {\n await axios\n .request({\n method: \"get\",\n url: url,\n })\n .catch(e => {\n let copyFailedArray = this.state.failedTest.slice()\n copyFailedArray[iteration] = true\n this.setState({failedTest: copyFailedArray})\n })\n })\n return\n } else if (\n typeof performance.getEntriesByName(url)[0] === \"undefined\" &&\n counter >= retries\n ) {\n // This tries to get the timings 3 times. If it fails on any of them, fails to output results\n clearInterval(interval)\n let copyFailedArray = this.state.failedTest.slice()\n copyFailedArray[iteration] = true\n this.setState({failedTest: copyFailedArray})\n if (iteration === this.state.numberOfRuns - 1) {\n this.setState({\n finishedTests: true,\n })\n }\n return\n }\n clearInterval(interval)\n const timings = performance.getEntriesByName(url)\n // If the first request fails, but the second request succeeds, there will be 2 times. Hence we use timings.length - 1\n const timingsJson = timings[timings.length - 1].toJSON()\n await this.setState({\n tcp: [\n ...this.state.tcp,\n timingsJson[\"connectEnd\"] - timingsJson[\"connectStart\"],\n ],\n fbl: [\n ...this.state.fbl,\n timingsJson[\"responseStart\"] - timingsJson[\"requestStart\"],\n ],\n lbl: [\n ...this.state.lbl,\n timingsJson[\"responseEnd\"] - timingsJson[\"responseStart\"],\n ],\n sum: [\n ...this.state.sum,\n timingsJson[\"connectEnd\"] -\n timingsJson[\"connectStart\"] +\n timingsJson[\"responseStart\"] -\n timingsJson[\"requestStart\"] +\n timingsJson[\"responseEnd\"] -\n timingsJson[\"responseStart\"],\n ],\n })\n if (iteration === this.state.numberOfRuns - 1) {\n this.setState({\n finishedTests: true,\n })\n }\n }, 1000)\n }\n\n render() {\n return (\n \n
\n \n \n
\n \n \n {this.props.failedTests ? (\n \n {\" \"}\n \n Error. Refresh to try again.\n \n \n ) : this.props.running && !this.props.bothFinished ? (\n
\n \n Running\n \n
\n ) : this.props.bothFinished ? (\n
\n
\n \n ) : (\n
\n \n Pending\n \n
\n )}\n\n \n {this.props.failedTests ||\n (this.props.running && !this.props.bothFinished)\n ? 0\n : this.props.bothFinished\n ? this.props.totalDirect\n ? this.props.totalDirect\n : this.props.totalAga\n : 0}\n ms\n \n \n \n )\n }\n}\n","import React, {Component} from \"react\"\nimport PerformanceTest from \"./PerformanceTest\"\nimport axios from \"axios\"\n\nexport default class Card extends Component {\n constructor(props: any) {\n super(props)\n this.state = {\n tcpConnectTimeDirect: 0,\n tcpConnectTimeAga: 0,\n warmFblDirect: 0,\n warmFblAga: 0,\n lblDirect: 0,\n lblAga: 0,\n totalDirect: 0,\n totalAga: 0,\n difference: 0,\n directWidth: 0,\n agaWidth: 0,\n agaFinished: false,\n directFinished: false,\n diffFinished: false,\n differenceColor: \"black\",\n failedTests: false,\n updateDone: false,\n started: false,\n }\n }\n\n async updateSpeed(mode: string, failedTest: boolean, tcp, fbl, lbl, sum) {\n if (failedTest || this.state.failedTests) {\n this.setState({failedTests: true})\n if (mode === \"direct\") {\n this.setState({directFinished: true})\n } else {\n this.setState({agaFinished: true})\n }\n return\n }\n if (mode === \"ubiquity\") {\n this.setState({\n tcpConnectTimeAga: tcp,\n warmFblAga: fbl,\n lblAga: lbl,\n totalAga: sum,\n agaFinished: true,\n })\n } else {\n this.setState({\n tcpConnectTimeDirect: tcp,\n warmFblDirect: fbl,\n lblDirect: lbl,\n totalDirect: sum,\n directFinished: true,\n })\n }\n }\n\n async componentDidUpdate() {\n if (\n this.state.agaFinished &&\n this.state.directFinished &&\n !this.state.updateDone\n ) {\n this.setState({\n updateDone: true,\n })\n if (this.state.failedTests) {\n this.props.testComplete(this.props.region, \"post\")\n return\n }\n await this.updateDifference()\n }\n }\n\n async updateDifference() {\n await axios\n .request({\n method: \"post\",\n url: `/api/performance_data`,\n data: {\n Uuid: this.props.uuid,\n EndpointRegion: this.props.region,\n IngressPop: this.props.ingressPop,\n TcpConnectTimeDirect: parseFloat(\n this.state.tcpConnectTimeDirect.toFixed(2),\n ),\n TcpConnectTimeUbiquity: parseFloat(\n this.state.tcpConnectTimeAga.toFixed(2),\n ),\n TcpRequestTimeDirect: parseFloat(this.state.warmFblDirect.toFixed(2)),\n TcpRequestTimeUbiquity: parseFloat(this.state.warmFblAga.toFixed(2)),\n TcpResponseTimeDirect: parseFloat(this.state.lblDirect.toFixed(2)),\n TcpResponseTimeUbiquity: parseFloat(this.state.lblAga.toFixed(2)),\n DownloadSize: parseInt(this.props.size),\n },\n })\n .then(() => {\n this.props.testComplete(this.props.region, \"post\")\n })\n .catch(() => {\n //this is here so the page will continue to load for the user,\n //even if it fails to write the data to the db\n this.props.testComplete(this.props.region, \"post\")\n })\n if (this.state.totalDirect > this.state.totalAga) {\n this.setState({\n difference:\n (\n ((this.state.totalDirect - this.state.totalAga) /\n this.state.totalDirect) *\n 100\n ).toFixed(0) + \"% faster with AWS Global Accelerator\",\n directWidth: 1,\n agaWidth: this.state.totalAga / this.state.totalDirect,\n diffFinished: true,\n differenceColor: \"green\",\n })\n } else {\n this.setState({\n difference:\n (\n ((-1 * (this.state.totalDirect - this.state.totalAga)) /\n this.state.totalDirect) *\n 100\n ).toFixed(0) + \"% slower with AWS Global Accelerator\",\n directWidth: this.state.totalDirect / this.state.totalAga,\n agaWidth: 1,\n diffFinished: true,\n differenceColor: \"red\",\n })\n }\n }\n\n testStarted() {\n this.setState({\n started: true,\n })\n }\n\n render() {\n var cardClass =\n \"col-6 col-s-12 col-xs-12 col-xxs-12 col-xxxs-12 col-l-6 col-xl-4 col-xxl-4 col-xxxl-4\"\n return (\n \n
\n
\n
\n
\n

\n {this.props.regionName}{\" \"}\n ({this.props.region})\n

\n
\n
\n
\n \n \n Total time\n
\n \n \n \n \n \n {this.state.difference}\n \n \n \n \n )\n }\n}\n","import React, {Component} from \"react\"\nimport {AppLayout, Icon, ButtonDropdown, Button} from \"AWS-UI-Components-React\"\nimport update from \"immutability-helper\"\nimport uuid from \"react-uuid\"\n\nimport Card from \"../components/Card\"\nimport axios from \"axios\"\n\nexport default class PerformancePage extends Component {\n constructor(props: any) {\n super(props)\n this.state = {\n \"us-east-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"us-east-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"us-west-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"us-west-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"af-south-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-west-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-west-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-south-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-south-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-west-3\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-central-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-central-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-northeast-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-northeast-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-northeast-3\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-southeast-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-southeast-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-southeast-3\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-southeast-4\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-south-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-south-2\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"eu-north-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"me-central-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"me-south-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ap-east-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"sa-east-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ca-central-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"ca-west-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n \"il-central-1\": {\n ubiquity: \"pending\",\n direct: \"pending\",\n },\n showMore: false,\n itemsToShow: 7,\n regions: [\n \"us-east-1\",\n \"us-west-2\",\n \"eu-west-1\",\n \"eu-central-1\",\n \"eu-central-2\",\n \"ap-northeast-1\",\n \"ap-southeast-1\",\n \"ap-southeast-2\",\n \"ap-southeast-3\",\n \"ap-southeast-4\",\n \"us-west-1\",\n \"eu-west-2\",\n \"us-east-2\",\n \"eu-west-3\",\n \"ap-south-1\",\n \"ap-south-2\",\n \"eu-north-1\",\n \"me-central-1\",\n \"me-south-1\",\n \"ap-east-1\",\n \"sa-east-1\",\n \"ca-central-1\",\n \"ca-west-1\",\n \"ap-northeast-2\",\n \"ap-northeast-3\",\n \"eu-south-1\",\n \"eu-south-2\",\n \"af-south-1\",\n \"il-central-1\",\n ],\n downloadSize: this.defaultDownloadSize,\n selectedSize:\n parseInt(String(localStorage.getItem(\"downloadSize\"))) ||\n this.defaultDownloadSize,\n ingressPop: \"unknown\",\n uuid: `${uuid()}`,\n stripes: [\"blue\", \"green\"],\n braids: [\"a\", \"b\", \"c\", \"d\"],\n startDisabled: true,\n started: false,\n }\n this.showMore = this.showMore.bind(this)\n this.changeDownloadSize = this.changeDownloadSize.bind(this)\n }\n\n downloadSizes = new Map([\n [51200, \"50KB\"],\n [102400, \"100KB\"],\n [1024000, \"1MB\"],\n [2048000, \"2MB\"],\n [5120000, \"5MB\"],\n ])\n defaultDownloadSize = 102400\n\n async componentDidMount() {\n document.title = \"AWS Global Accelerator Speed Comparison\"\n if (this.state.ingressPop === \"unknown\") {\n await axios\n .request({\n method: \"get\",\n url:\n window.location.protocol +\n `//${\n this.state.stripes[\n Math.floor(Math.random() * this.state.stripes.length)\n ]\n }-${\n this.state.braids[\n Math.floor(Math.random() * this.state.braids.length)\n ]\n }.diagnostics.globalaccelerator.aws/api/stack`,\n })\n .then(async (response: any) => {\n await this.setState({\n ingressPop: response.data.stack,\n startDisabled: false,\n })\n })\n .catch(async () => {\n //catch error and continue the tests, although the stack will be failed\n await this.setState({\n ingressPop: \"failed\",\n startDisabled: false,\n })\n })\n }\n }\n\n stateChangeManager(event: any) {\n this.setState({[event.name]: event.value})\n }\n\n testComplete(region: string, mode: string) {\n for (var i = 0; i < this.state.regions.length; i++) {\n var currRegion = this.state.regions[i]\n if (region === currRegion) {\n if (mode === \"direct\") {\n var currValue = this.state[currRegion]\n currValue[\"ubiquity\"] = \"enabled\"\n var currEvent = {\n name: currRegion,\n value: currValue,\n }\n this.stateChangeManager(currEvent)\n }\n var nextRegion = this.state.regions[i + 1]\n if (mode === \"post\" && i + 1 !== this.state.regions.length) {\n var nextValue = this.state[nextRegion]\n nextValue[\"direct\"] = \"enabled\"\n var nextEvent = {\n name: nextRegion,\n value: nextValue,\n }\n this.stateChangeManager(nextEvent)\n }\n }\n }\n }\n\n showMore() {\n this.setState({showMore: !this.state.showMore})\n }\n\n changeDownloadSize = (event: any) => {\n localStorage.setItem(\"downloadSize\", event.detail.id)\n this.setState({\n selectedSize: parseInt(event.detail.id),\n })\n }\n\n startTests = async () => {\n await this.setState({\n downloadSize: this.state.selectedSize,\n })\n await this.setState(\n update(this.state, {\"us-east-1\": {direct: {$set: \"enabled\"}}}),\n )\n this.setState({\n started: true,\n })\n }\n\n stopTests = () => {\n window.location.reload()\n }\n\n render() {\n const regionNameMap: {[index: string]: any} = {\n \"us-east-1\": \"N. Virginia\",\n \"us-west-2\": \"Oregon\",\n \"us-west-1\": \"N. California\",\n \"us-east-2\": \"Ohio\",\n \"eu-west-1\": \"Ireland\",\n \"eu-west-2\": \"London\",\n \"eu-west-3\": \"Paris\",\n \"eu-central-1\": \"Frankfurt\",\n \"eu-central-2\": \"Zurich\",\n \"ap-northeast-1\": \"Tokyo\",\n \"ap-northeast-2\": \"Seoul\",\n \"ap-northeast-3\": \"Osaka\",\n \"ap-southeast-1\": \"Singapore\",\n \"ap-southeast-2\": \"Sydney\",\n \"ap-southeast-3\": \"Jakarta\",\n \"ap-southeast-4\": \"Melbourne\",\n \"ap-south-1\": \"Mumbai\",\n \"ap-south-2\": \"Hyderabad\",\n \"eu-north-1\": \"Stockholm\",\n \"me-central-1\": \"UAE\",\n \"me-south-1\": \"Bahrain\",\n \"ap-east-1\": \"Hong Kong\",\n \"sa-east-1\": \"São Paulo\",\n \"ca-central-1\": \"Canada\",\n \"ca-west-1\": \"Calgary\",\n \"af-south-1\": \"Cape Town\",\n \"eu-south-1\": \"Milan\",\n \"eu-south-2\": \"Spain\",\n \"il-central-1\": \"Tel Aviv\",\n }\n\n return (\n \n \n \n \n AWS Global Accelerator\n \n \n Speed Comparison\n \n \n \n
\n \n

About this tool

\n

\n \n AWS Global Accelerator\n {\" \"}\n is a service that improves the availability and performance of\n your applications. This tool compares Global Accelerator to\n the public internet. Choose a file size to see the time to\n download a file from application endpoints in different AWS\n Regions to your browser.\n

\n

\n Files are downloaded over HTTPS/TCP from Application Load\n Balancers (ALBs) in different AWS Regions to your browser.{\" \"}\n \"\n rel=\"noopener noreferrer\"\n >\n Learn more\n \n

\n

\n Choose a file size and click \"Start\" to start the tests:\n {\n return {\n id: String(key),\n text: String(this.downloadSizes.get(key)),\n }\n })}\n disabled={this.state.started}\n onItemClick={this.changeDownloadSize}\n >\n {this.downloadSizes.get(this.state.selectedSize)}\n \n \n {this.state.started ? \"Reset\" : \"Start\"}\n \n

\n

\n We welcome suggestions for how to improve this tool.{\" \"}\n \"\n rel=\"noopener noreferrer\"\n >\n Provide feedback\n \n

\n

\n {\" \"}\n \n Results may differ when you run the test multiple times.\n Download times can vary based on factors that are external to\n Global Accelerator, such as the quality, capacity, and\n distance of the connection in the last-mile network that\n you’re using.\n

\n
\n {this.state.regions\n .slice(0, this.state.itemsToShow)\n .map((region: string, index: number) => {\n return (\n \n )\n })}\n {this.state.regions\n .slice(this.state.itemsToShow)\n .map((region: string, index: number) => {\n var modifiedIndex = this.state.itemsToShow + index\n return (\n \n )\n })}\n \n \n {this.state.showMore ? \"Show fewer Regions\" : \"Show more Regions\"}\n \n
\n Trace ID: {this.state.uuid}\n
\n \n }\n navigationHide={true}\n toolsHide={true}\n />\n )\n }\n}\n","import React, {Component} from \"react\"\nimport {Button} from \"AWS-UI-Components-React\"\n\nexport default class StatusIcon extends Component {\n render() {\n switch (this.props.state) {\n case \"in-progress\":\n return