{"version":3,"sources":["webpack://gatsby-tailwind/./src/components/headers/header1.jsx","webpack://gatsby-tailwind/./src/components/headers/linkableH2.jsx","webpack://gatsby-tailwind/./src/components/sortableTable.jsx","webpack://gatsby-tailwind/./src/pages/circuits.jsx","webpack://gatsby-tailwind/./src/types/conAvgPitstopsByRaceidListType.js","webpack://gatsby-tailwind/./src/types/constructorType.js","webpack://gatsby-tailwind/./src/types/driverType.js","webpack://gatsby-tailwind/./src/types/raceType.js","webpack://gatsby-tailwind/./src/types/allDriAlltimeStatsListType.js","webpack://gatsby-tailwind/./src/types/allDriAlltimeStatsPreparedListType.js","webpack://gatsby-tailwind/./src/types/allRacesType.js","webpack://gatsby-tailwind/./src/types/circuitType.js","webpack://gatsby-tailwind/./src/types/conAvgLapt70PType.js","webpack://gatsby-tailwind/./src/types/conAvgLaptType.js","webpack://gatsby-tailwind/./src/types/driAvgLapt70PType.js","webpack://gatsby-tailwind/./src/types/driAvgLaptType.js","webpack://gatsby-tailwind/./src/types/driverMapType.js","webpack://gatsby-tailwind/./src/types/driverStandingsType.js","webpack://gatsby-tailwind/./src/types/lapTimesType.js","webpack://gatsby-tailwind/./src/types/raceResultsType.js","webpack://gatsby-tailwind/./src/types/seasonDriverMainConsType.js","webpack://gatsby-tailwind/./src/types/teamStandingsType.js","webpack://gatsby-tailwind/./src/util/arrayWithValues.js"],"names":["Header1","children","dataId","className","data-id","defaultProps","id","replace","toLowerCase","href","style","fontSize","textDecorationThickness","NO_FILL","FILL","SortedHeaderRenderer","column","top","bottom","isSorted","isSortedDesc","render","viewBox","fill","xmlns","d","PaginationBar","canPreviousPage","canNextPage","pageCount","pageIndex","pageOptions","gotoPage","nextPage","previousPage","type","onClick","disabled","length","cellClasses","arr","showAt","push","console","error","join","headerClasses","SortableTable","data","columns","defaultSort","pagination","initialState","props","useSortBy","sortBy","pageSize","usePagination","useTable","getTableProps","getTableBodyProps","headerGroups","rows","page","prepareRow","state","iterator","map","headerGroup","getHeaderGroupProps","headers","getHeaderProps","getSortByToggleProps","row","i","getRowProps","cells","cell","getCellProps","getFirst","stat","JSON","parse","arrayWithValues","find","rank","parseInt","getConstructor","constructors","first","constructorid","name","desc","postgres","allCircuitsList","allConstructorTeamsList","allDriversList","tabData","c","country","circuitref","racecount","circuitstatByCircuitid","mostdriverwins","drivers","driverid","driverId","driverDisplayName","mostcostructorwins","useMemo","Header","accessor","Cell","value","teamName","Link","to","title","PropTypes","avgpittimes","constructorTeamByConstructorid","constructorType","isRequired","forename","number","surname","points","poles","second","thirds","toptens","undertens","wins","key","json","circuitByCircuitid","location","date","raceid","round","year","nodes","raceType","circuitid","url","firstrace","lastrace","racecountrank","mostconstructorpodiums","mostdriverpodiums","mostdriverstarts","avglaptimes","relevantLapCount","medianlaptimes","constructor","displayName","driverByDriverid","driverType","lap","milliseconds","position","time","fastestlap","fastestlapspeed","fastestlaptime","grid","laps","resultid","statusByStatusid","status","Array","isArray"],"mappings":"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","file":"component---src-pages-circuits-jsx-a0f60cd57b2ce390984e.js","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst Header1 = ({ children, dataId }) => (\n \n {children}\n \n);\n\nHeader1.propTypes = {\n children: PropTypes.node.isRequired,\n dataId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nHeader1.defaultProps = {\n dataId: null,\n};\n\nexport default Header1;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst LinkableH2 = ({ children }) => {\n const id = children.replace(/ /g, '-').toLowerCase();\n\n return (\n
\n \n \n {children}\n \n \n \n
\n );\n};\n\nLinkableH2.propTypes = {\n children: PropTypes.string.isRequired,\n};\n\nexport default LinkableH2;\n","/* eslint-disable react/prop-types */\n/* eslint-disable react/forbid-prop-types */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { usePagination, useSortBy, useTable } from 'react-table';\n\nconst NO_FILL = `#D1D5DB`;\nconst FILL = `#374151`;\n\nconst SortedHeaderRenderer = ({ column }) => {\n let top = NO_FILL;\n let bottom = NO_FILL;\n\n if (column.isSorted && column.isSortedDesc) {\n bottom = FILL;\n } else if (column.isSorted) {\n top = FILL;\n }\n\n return (\n
\n {column.render('Header')}\n \n \n \n \n
\n );\n};\n\nSortedHeaderRenderer.propTypes = {\n column: PropTypes.object.isRequired,\n};\n\nconst PaginationBar = ({\n canPreviousPage,\n canNextPage,\n pageCount,\n pageIndex,\n pageOptions,\n gotoPage,\n nextPage,\n previousPage,\n}) => (\n
\n
\n gotoPage(0)}\n disabled={!canPreviousPage}\n >\n {'<<'}\n \n previousPage()}\n disabled={!canPreviousPage}\n >\n {'<'}\n \n \n Page\n {pageIndex + 1}\n of\n {pageOptions.length}\n \n nextPage()}\n disabled={!canNextPage}\n className=\"rounded bg-white px-2 shadow hover:bg-blue-50 focus:outline-none focus:ring focus:ring-blue-300 disabled:cursor-not-allowed disabled:bg-transparent disabled:text-zinc-300 disabled:shadow-none\"\n >\n {'>'}\n \n gotoPage(pageCount - 1)}\n disabled={!canNextPage}\n >\n {'>>'}\n \n
\n
\n);\n\nconst cellClasses = (column) => {\n const arr = [];\n\n // needed to be written out for purging styles\n if (column.showAt) {\n switch (column.showAt) {\n case 'sm':\n arr.push('hidden sm:c-table-cell');\n break;\n case 'md':\n arr.push('hidden md:c-table-cell');\n break;\n case 'lg':\n arr.push('hidden lg:c-table-cell');\n break;\n default:\n // eslint-disable-next-line no-console\n console.error(`SortableTable => Unknown showAt \"${column.showAt}\"`);\n arr.push('c-table-cell');\n }\n } else {\n arr.push('c-table-cell');\n }\n\n if (column.className) {\n arr.push(column.className);\n }\n\n return arr.join(' ');\n};\n\nconst headerClasses = (column) => {\n if (column.showAt) {\n switch (column.showAt) {\n case 'sm':\n return 'hidden sm:c-table-heading';\n case 'md':\n return 'hidden md:c-table-heading';\n case 'lg':\n return 'hidden lg:c-table-heading';\n default:\n // eslint-disable-next-line no-console\n console.error(`SortableTable => Unknown showAt \"${column.showAt}\"`);\n return 'c-table-heading';\n }\n }\n\n return 'c-table-heading';\n};\n\nconst SortableTable = ({ data, columns, defaultSort, pagination }) => {\n const initialState = {};\n\n const props = [{ columns, data, initialState }, useSortBy];\n\n if (defaultSort) {\n initialState.sortBy = defaultSort;\n }\n\n if (pagination) {\n initialState.pageSize = pagination;\n props.push(usePagination);\n }\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n page,\n prepareRow,\n\n // pagination\n nextPage,\n previousPage,\n canPreviousPage,\n canNextPage,\n pageOptions,\n pageCount,\n gotoPage,\n state: { pageIndex },\n } = useTable(...props);\n\n const iterator = pagination ? page : rows;\n\n if (!columns || columns.length === 0) {\n return (\n
\n
\n No columns selected to display...\n
\n
\n );\n }\n\n return (\n
\n
\n
\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n \n \n ))}\n \n ))}\n \n \n {iterator.map((row, i) => {\n prepareRow(row);\n return (\n \n {row.cells.map((cell) => (\n \n {cell.render('Cell')}\n \n ))}\n \n );\n })}\n \n \n
\n {pagination && (\n \n )}\n
\n
\n );\n};\n\nSortableTable.propTypes = {\n data: PropTypes.array.isRequired,\n columns: PropTypes.array,\n defaultSort: PropTypes.array,\n pagination: PropTypes.number,\n};\n\nSortableTable.defaultProps = {\n defaultSort: null,\n pagination: null,\n columns: [],\n};\n\nexport default SortableTable;\n","import { graphql, Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport React, { useMemo } from 'react';\nimport { Header1 } from '../components/headers';\nimport Layout from '../components/layout';\nimport SEO from '../components/seo';\nimport SortableTable from '../components/sortableTable';\nimport TeamDisplay from '../components/teamDisplay/teamDisplay';\nimport { circuitType, constructorType, driverType } from '../types';\nimport arrayWithValues from '../util/arrayWithValues';\n\nexport const query = graphql`\n {\n postgres {\n allCircuitsList {\n circuitref\n name\n country\n circuitstatByCircuitid {\n firstrace\n lastrace\n mostconstructorpodiums\n mostcostructorwins\n mostdriverpodiums\n mostdriverstarts\n mostdriverwins\n racecount\n racecountrank\n }\n }\n allConstructorTeamsList {\n constructorid\n name\n }\n allDriversList {\n driverid\n driverDisplayName\n }\n }\n }\n`;\n\nfunction getFirst(stat) {\n const data = JSON.parse(stat);\n if (!arrayWithValues(data)) {\n return null;\n }\n\n return data.find(({ rank }) => parseInt(rank) === 1);\n}\n\nfunction getDriver(stat, drivers) {\n const first = getFirst(stat);\n if (!first) {\n return null;\n }\n\n const driver = drivers.find(\n ({ driverid }) => parseInt(driverid) === parseInt(first.driverId)\n );\n\n return driver.driverDisplayName;\n}\n\nfunction getConstructor(stat, constructors) {\n const first = getFirst(stat);\n if (!first) {\n return null;\n }\n\n const constr = constructors.find(\n ({ constructorid }) =>\n parseInt(constructorid) === parseInt(first.constructorid)\n );\n\n return constr.name;\n}\n\nconst defaultSort = [\n {\n id: 'racecount',\n desc: true,\n },\n];\n\nconst Circuits = ({ data }) => {\n const { allCircuitsList, allConstructorTeamsList, allDriversList } =\n data.postgres;\n\n const tabData = allCircuitsList.map((c) => ({\n name: c.name,\n country: c.country,\n circuitref: c.circuitref,\n racecount: c.circuitstatByCircuitid.racecount,\n mostdriverwins: getDriver(\n c.circuitstatByCircuitid.mostdriverwins,\n allDriversList\n ),\n mostcostructorwins: getConstructor(\n c.circuitstatByCircuitid.mostcostructorwins,\n allConstructorTeamsList\n ),\n }));\n\n const columns = useMemo(\n () => [\n {\n Header: 'Name',\n accessor: 'name',\n },\n {\n Header: 'Country',\n accessor: 'country',\n },\n {\n Header: 'Total Races',\n accessor: 'racecount',\n showAt: 'sm',\n },\n {\n Header: 'Most Wins (Driver)',\n accessor: 'mostdriverwins',\n showAt: 'md',\n },\n {\n Header: 'Most Wins (Constructor)',\n accessor: 'mostcostructorwins',\n showAt: 'md',\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) => ,\n },\n {\n Header: 'More Info',\n accessor: 'circuitref',\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) => (\n \n Circuit Details\n \n ),\n },\n ],\n []\n );\n\n return (\n \n \n All Circuits\n
\n \n
\n
\n );\n};\n\nCircuits.propTypes = {\n data: PropTypes.shape({\n postgres: PropTypes.shape({\n allCircuitsList: PropTypes.arrayOf(circuitType).isRequired,\n allConstructorTeamsList: PropTypes.arrayOf(constructorType).isRequired,\n allDriversList: PropTypes.arrayOf(driverType).isRequired,\n }).isRequired,\n }).isRequired,\n};\n\nexport default Circuits;\n","import PropTypes from 'prop-types';\nimport constructorType from './constructorType';\n\nexport default PropTypes.arrayOf(\n PropTypes.shape({\n avgpittimes: PropTypes.number.isRequired,\n constructorTeamByConstructorid: constructorType,\n }).isRequired\n);\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.shape({\n name: PropTypes.string,\n});\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.shape({\n driverDisplayName: PropTypes.string,\n driverid: PropTypes.string,\n forename: PropTypes.string,\n number: PropTypes.string,\n surname: PropTypes.string,\n});\n","import PropTypes from 'prop-types';\n\nconst raceType = PropTypes.shape({\n circuitByCircuitid: PropTypes.shape({\n name: PropTypes.string.isRequired,\n country: PropTypes.string.isRequired,\n location: PropTypes.string.isRequired,\n }),\n date: PropTypes.string,\n raceid: PropTypes.string,\n name: PropTypes.string,\n round: PropTypes.string,\n year: PropTypes.string,\n});\n\nexport default raceType;\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.shape({\n driverid: PropTypes.string.isRequired,\n points: PropTypes.string,\n poles: PropTypes.string,\n second: PropTypes.string,\n thirds: PropTypes.string,\n toptens: PropTypes.string,\n undertens: PropTypes.string,\n wins: PropTypes.string,\n}).isRequired;\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.shape({\n key: PropTypes.string.isRequired,\n json: PropTypes.string.isRequired,\n}).isRequired;\n","import PropTypes from 'prop-types';\nimport raceType from './raceType';\n\nconst allRacesType = PropTypes.shape({\n nodes: PropTypes.arrayOf(raceType),\n});\n\nexport default allRacesType;\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.shape({\n circuitid: PropTypes.number,\n circuitref: PropTypes.string,\n name: PropTypes.string,\n country: PropTypes.string,\n location: PropTypes.string,\n url: PropTypes.string,\n circuitstatByCircuitid: PropTypes.shape({\n firstrace: PropTypes.string,\n lastrace: PropTypes.string,\n racecount: PropTypes.string,\n racecountrank: PropTypes.string,\n mostconstructorpodiums: PropTypes.string,\n mostcostructorwins: PropTypes.string,\n mostdriverpodiums: PropTypes.string,\n mostdriverstarts: PropTypes.string,\n mostdriverwins: PropTypes.string,\n }).isRequired,\n});\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.arrayOf(\n PropTypes.shape({\n avglaptimes: PropTypes.number.isRequired,\n relevantLapCount: PropTypes.string.isRequired,\n constructorTeamByConstructorid: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired\n);\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.arrayOf(\n PropTypes.shape({\n avglaptimes: PropTypes.number.isRequired,\n medianlaptimes: PropTypes.number.isRequired,\n constructorTeamByConstructorid: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired\n);\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.arrayOf(\n PropTypes.shape({\n avglaptimes: PropTypes.number.isRequired,\n driverid: PropTypes.string.isRequired,\n relevantLapCount: PropTypes.string.isRequired,\n }).isRequired\n);\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.arrayOf(\n PropTypes.shape({\n avglaptimes: PropTypes.number.isRequired,\n driverid: PropTypes.string.isRequired,\n medianlaptimes: PropTypes.number.isRequired,\n }).isRequired\n);\n","import PropTypes from 'prop-types';\n\nexport default PropTypes.objectOf(\n PropTypes.shape({\n constructor: PropTypes.string.isRequired,\n forename: PropTypes.string.isRequired,\n surname: PropTypes.string.isRequired,\n displayName: PropTypes.string.isRequired,\n number: PropTypes.string.isRequired,\n })\n);\n","import PropTypes from 'prop-types';\nimport driverType from './driverType';\n\nconst driverStandingsType = PropTypes.shape({\n points: PropTypes.number.isRequired,\n wins: PropTypes.string.isRequired,\n driverid: PropTypes.string.isRequired,\n driverByDriverid: driverType.isRequired,\n});\n\nexport default driverStandingsType;\n","import PropTypes from 'prop-types';\nimport driverType from './driverType';\n\nexport default PropTypes.arrayOf(\n PropTypes.shape({\n driverByDriverid: driverType.isRequired,\n lap: PropTypes.string.isRequired,\n milliseconds: PropTypes.string.isRequired,\n position: PropTypes.string.isRequired,\n time: PropTypes.string.isRequired,\n }).isRequired\n);\n","import PropTypes from 'prop-types';\nimport driverType from './driverType';\n\nexport default PropTypes.shape({\n constructorTeamByConstructorid: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n driverByDriverid: driverType,\n fastestlap: PropTypes.string,\n fastestlapspeed: PropTypes.string,\n fastestlaptime: PropTypes.string,\n grid: PropTypes.string,\n laps: PropTypes.string,\n number: PropTypes.string,\n points: PropTypes.number,\n position: PropTypes.string,\n resultid: PropTypes.string,\n statusByStatusid: PropTypes.shape({\n status: PropTypes.string,\n }),\n time: PropTypes.string,\n});\n","import PropTypes from 'prop-types';\nimport constructorType from './constructorType';\nimport driverType from './driverType';\n\nconst seasonDriverMainConsType = PropTypes.shape({\n year: PropTypes.string,\n driverid: PropTypes.string,\n driverByDriverid: driverType,\n constructorTeamByConstructorid: constructorType,\n});\n\nexport default seasonDriverMainConsType;\n","import PropTypes from 'prop-types';\nimport constructorType from './constructorType';\n\nconst teamStandingsType = PropTypes.shape({\n points: PropTypes.number.isRequired,\n position: PropTypes.string.isRequired,\n wins: PropTypes.string.isRequired,\n constructorid: PropTypes.string.isRequired,\n constructorTeamByConstructorid: constructorType.isRequired,\n});\n\nexport default teamStandingsType;\n","function arrayWithValues(arr) {\n if (arr && Array.isArray(arr)) {\n return arr.length > 0;\n }\n return false;\n}\n\nexport default arrayWithValues;\n"],"sourceRoot":""}