{"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/components/tbd.jsx","webpack://gatsby-tailwind/./src/components/circuit-template/circuitTimeStats.jsx","webpack://gatsby-tailwind/./src/components/circuit-template/circuitPerformanceStats.jsx","webpack://gatsby-tailwind/./src/components/circuit-template/circuitRacesTable.jsx","webpack://gatsby-tailwind/./src/templates/circuit-template.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","textDecoration","title","CircuitTimeStats","firstrace","lastrace","racecount","racecountrank","ListItem","rank","name","count","last","category","team","getRankText","rankText","rankClass","classNames","teamName","textClasses","TeamCard","list","allConstructorTeamsList","teamArray","JSON","parse","sort","a","b","p","constructor","find","c","parseInt","constructorid","key","cnt","DriverCard","allDriversList","driverArray","driverid","driverId","driverDisplayName","CircuitPerformanceStats","mostconstructorpodiums","mostcostructorwins","mostdriverpodiums","mostdriverstarts","mostdriverwins","desc","racesByCircuitidList","useMemo","Header","accessor","Cell","value","Link","to","postgres","circuitByCircuitid","circuitid","circuitstatByCircuitid","country","location","url","pageTitle","includes","description","meta","arrayWithValues","PropTypes","avgpittimes","constructorTeamByConstructorid","constructorType","isRequired","forename","number","surname","points","poles","second","thirds","toptens","undertens","wins","json","date","raceid","round","year","nodes","raceType","circuitref","avglaptimes","relevantLapCount","medianlaptimes","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-templates-circuit-template-jsx-8a8413e1b2f3256ac6be.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 React from 'react';\n\nconst TBD = () => (\n \n TBD...\n \n);\n\nexport default TBD;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst CircuitTimeStats = ({\n firstrace,\n lastrace,\n racecount,\n racecountrank,\n}) => (\n
\n
\n
First Race
\n
\n {firstrace ?? '-'}\n
\n
\n\n
\n
Last Race
\n
\n {lastrace ?? '-'}\n
\n
\n\n
\n
\n Total Races\n
\n
\n \n {racecount}\n \n {`(rank ${racecountrank})`}\n
\n
\n
\n);\n\nCircuitTimeStats.propTypes = {\n firstrace: PropTypes.string,\n lastrace: PropTypes.string,\n racecount: PropTypes.string.isRequired,\n racecountrank: PropTypes.string.isRequired,\n};\n\nCircuitTimeStats.defaultProps = {\n firstrace: null,\n lastrace: null,\n};\n\nexport default CircuitTimeStats;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { constructorType, driverType } from '../../types';\nimport classNames from '../../util/classNames';\nimport TeamDisplay from '../teamDisplay/teamDisplay';\n\nconst getRankText = (rank) => {\n switch (rank) {\n case 1:\n return ['1st', 'first-styles'];\n case 2:\n return ['2nd', 'second-styles'];\n case 3:\n return ['3rd', 'third-styles'];\n default:\n return [`${rank}th`, 'other-rank-styles'];\n }\n};\n\nconst ListItem = ({ rank, name, count, last, category, team = false }) => {\n const [rankText, rankClass] = getRankText(rank);\n\n return (\n \n {rankText}\n {team ? (\n \n ) : (\n {name}\n )}\n {`${count} ${category}`}\n \n );\n};\n\nListItem.propTypes = {\n rank: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n count: PropTypes.number.isRequired,\n last: PropTypes.bool.isRequired,\n category: PropTypes.string.isRequired,\n team: PropTypes.bool,\n};\n\nListItem.defaultProps = {\n team: false,\n};\n\nconst TeamCard = ({ list, allConstructorTeamsList, category }) => {\n if (!list) return <>;\n\n const teamArray = JSON.parse(list).sort((a, b) => a.rank - b.rank);\n for (let i = 0; i < teamArray.length; i++) {\n teamArray[i] = JSON.parse(teamArray[i]);\n }\n\n return (\n
\n

\n {`Most constructor ${category}`}\n

\n
    \n {teamArray.map((p, i) => {\n const constructor = allConstructorTeamsList.find(\n (c) => parseInt(c.constructorid) === parseInt(p.constructorid)\n )?.name;\n\n return (\n \n );\n })}\n
\n
\n );\n};\n\nTeamCard.propTypes = {\n list: PropTypes.string.isRequired,\n allConstructorTeamsList: PropTypes.arrayOf(constructorType).isRequired,\n category: PropTypes.string.isRequired,\n};\n\nconst DriverCard = ({ list, allDriversList, category }) => {\n if (!list) return <>;\n\n const driverArray = JSON.parse(list).sort((a, b) => a.rank - b.rank);\n for (let i = 0; i < driverArray.length; i++) {\n driverArray[i] = JSON.parse(driverArray[i]);\n }\n\n return (\n
\n

\n {`Most driver ${category}`}\n

\n
    \n {driverArray.map((p, i) => {\n const name = allDriversList.find(\n (c) => parseInt(c.driverid) === parseInt(p.driverId)\n )?.driverDisplayName;\n\n return (\n \n );\n })}\n
\n
\n );\n};\n\nDriverCard.propTypes = {\n list: PropTypes.string.isRequired,\n allDriversList: PropTypes.arrayOf(driverType).isRequired,\n category: PropTypes.string.isRequired,\n};\n\nconst CircuitPerformanceStats = ({\n allConstructorTeamsList,\n allDriversList,\n mostconstructorpodiums,\n mostcostructorwins,\n mostdriverpodiums,\n mostdriverstarts,\n mostdriverwins,\n}) => {\n if (!mostconstructorpodiums && !mostdriverpodiums && !mostdriverstarts) {\n return
No data yet!
;\n }\n\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nCircuitPerformanceStats.propTypes = {\n mostconstructorpodiums: PropTypes.string,\n mostcostructorwins: PropTypes.string,\n mostdriverpodiums: PropTypes.string,\n mostdriverstarts: PropTypes.string,\n mostdriverwins: PropTypes.string,\n allConstructorTeamsList: PropTypes.arrayOf(constructorType).isRequired,\n allDriversList: PropTypes.arrayOf(driverType).isRequired,\n};\n\nCircuitPerformanceStats.defaultProps = {\n mostconstructorpodiums: null,\n mostcostructorwins: null,\n mostdriverpodiums: null,\n mostdriverstarts: null,\n mostdriverwins: null,\n};\n\nexport default CircuitPerformanceStats;\n","import { Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport React, { useMemo } from 'react';\nimport { raceType } from '../../types';\nimport SortableTable from '../sortableTable';\nimport TBD from '../tbd';\nimport TeamDisplay from '../teamDisplay/teamDisplay';\n\nconst defaultSort = [\n {\n id: 'year',\n desc: true,\n },\n];\n\nconst CircuitRacesTable = ({ racesByCircuitidList }) => {\n const columns = useMemo(\n () => [\n {\n Header: 'Race',\n accessor: 'name',\n showAt: 'lg',\n },\n {\n Header: 'Year',\n accessor: 'year',\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: 'Winner (Driver)',\n accessor: 'resultsByRaceidList[0].driverByDriverid.driverDisplayName',\n showAt: 'sm',\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) => (value ? <>{value} : ),\n },\n {\n Header: 'Winner (Constructor)',\n accessor: 'resultsByRaceidList[0].constructorTeamByConstructorid.name',\n showAt: 'md',\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) =>\n value ? : ,\n },\n {\n Header: 'More Info',\n accessor: 'raceSlug',\n // eslint-disable-next-line react/prop-types\n Cell: ({ value }) => (\n \n Race Details\n \n ),\n },\n ],\n []\n );\n\n return (\n
\n \n
\n );\n};\n\nCircuitRacesTable.propTypes = {\n racesByCircuitidList: PropTypes.arrayOf(raceType).isRequired,\n};\n\nexport default CircuitRacesTable;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { graphql } from 'gatsby';\nimport { Header1, LinkableH2 } from '../components/headers';\nimport Layout from '../components/layout';\nimport SEO from '../components/seo';\nimport CircuitTimeStats from '../components/circuit-template/circuitTimeStats';\nimport CircuitPerformanceStats from '../components/circuit-template/circuitPerformanceStats';\nimport CircuitRacesTable from '../components/circuit-template/circuitRacesTable';\n\nimport '../styles/ranks.css';\nimport arrayWithValues from '../util/arrayWithValues';\n\nexport const query = graphql`\n query circuitData($circuitid: PostGraphile_BigInt!) {\n postgres {\n circuitByCircuitid(circuitid: $circuitid) {\n circuitid\n circuitref\n name\n country\n location\n url\n circuitstatByCircuitid {\n firstrace\n lastrace\n mostconstructorpodiums\n mostcostructorwins\n mostdriverpodiums\n mostdriverstarts\n mostdriverwins\n racecount\n racecountrank\n }\n racesByCircuitidList {\n name\n raceSlug\n year\n resultsByRaceidList(condition: { position: \"1\" }) {\n driverByDriverid {\n driverDisplayName\n }\n constructorTeamByConstructorid {\n name\n }\n }\n }\n }\n allConstructorTeamsList {\n constructorid\n name\n }\n allDriversList {\n driverid\n driverDisplayName\n }\n }\n }\n`;\n\nconst CircuitTemplate = ({ data }) => {\n const { allConstructorTeamsList, circuitByCircuitid, allDriversList } =\n data.postgres;\n\n const {\n circuitid,\n name,\n circuitstatByCircuitid,\n country,\n location,\n url,\n racesByCircuitidList,\n } = circuitByCircuitid;\n\n const {\n firstrace,\n lastrace,\n mostconstructorpodiums,\n mostcostructorwins,\n mostdriverpodiums,\n mostdriverstarts,\n mostdriverwins,\n racecount,\n racecountrank,\n } = circuitstatByCircuitid;\n\n const meta = [];\n\n const pageTitle = name.toLowerCase().includes('circuit')\n ? name\n : `${name} (Circuit)`;\n const description = `${country} ${location}`;\n\n return (\n \n \n {pageTitle}\n \n Circuit Wikipedia Page\n \n
\n Time Stats\n \n
\n
\n Performance Stats\n \n
\n {arrayWithValues(racesByCircuitidList) && (\n
\n Race List\n \n
\n )}\n
\n );\n};\n\nexport default CircuitTemplate;\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":""}