{"version":3,"file":"js/react/mls-match-summary-app.js?_t=45d17bc13840b6af6736","mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAaA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAaA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAEA;AAAA;AAGA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAoEA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAaA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAaA;AAEA;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAUA;AAcA;AAGA;AAEA;;;;;;;;;;;;;;;;ACvCA;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AAEA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AAGA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AAGA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AAEA;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AAEA;AACA;AAQA;AAQA;AAQA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAAA;AAGA;AAGA;AAAA;AAGA;AAYA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAGA;AAEA;;;;;;;;;;;;;;;;AC/EA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAGA;AAGA;AAEA;;;;;;;;;;;;;;;;AClCA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AASA;AAGA;AAGA;AAEA;;;;;;;;;;;;;;;;AC3BA","sources":["webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/app.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/components/CommentaryBlock/index.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/components/Goal/loader.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/components/MatchSummaryData/MatchSummaryData.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/components/PenaltyCard/loader.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/components/ShootOutKick/ShootOutKick.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/components/ShootOutKick/index.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/hooks/useBookings.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/hooks/useForgeMatchVideos.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/hooks/useForgePlayers.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/hooks/useGoals.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/hooks/usePenaltyKicks.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/hooks/useSummary.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/loader.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-summary/main.js","webpack://@mlssoccer/netcore/./scripts/react/shared/svg/CheckIcon/CheckIcon.js","webpack://@mlssoccer/netcore/./scripts/react/shared/svg/PenaltyKickAwardedIcon/PenaltyKickAwardedIcon.js","webpack://@mlssoccer/netcore/./scripts/react/shared/svg/PenaltyKickAwardedIcon/index.js"],"sourcesContent":["export { default } from './main';\n","export { default } from './CommentaryBlock';\n","import React from 'react';\nimport LoadingDisplay from \"../../../shared/components/LoadingDisplay\";\nimport Picture from \"../../../shared/components/Picture\";\nimport { useReactAppState } from \"../../../shared/containers/utils\";\n\nexport function GoalLoader({ componentType, isHome }) {\n const { mediaQueries } = useReactAppState();\n const { isMediumLargeMin } = mediaQueries || {};\n\n return (\n
\n {isMediumLargeMin ?
: 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}\n\nexport default GoalLoader;\n","import React from 'react';\nimport { formatPenaltyKicks, formatSummary } from \"../../utils\";\nimport CommentaryBlock from \"../CommentaryBlock\";\nimport Picture from \"../../../shared/components/Picture\";\nimport PenaltyKickAwardedIcon from \"../../../shared/svg/PenaltyKickAwardedIcon\";\nimport ShootOutKick from \"../ShootOutKick\";\nimport { useReactAppState } from \"../../../shared/containers/utils\";\nimport { formatImageUrl, queryStatusTypes } from \"../../../shared/utils\";\nimport { composeVideoList } from \"../../../mls-match-feed/utils\";\nimport usePenaltyKicks from '../../hooks/usePenaltyKicks';\nimport useBookings from '../../hooks/useBookings';\nimport useForgePlayers from '../../hooks/useForgePlayers';\nimport useForgeMatchVideos from '../../hooks/useForgeMatchVideos';\n\nfunction MatchSummaryData({ homeClub, awayClub, summary, matchOptaId, queryConfig, mlsMatch, goals, goalsStatus, hide2ndAssist }) {\n const { mediaQueries, t, videoTags } = useReactAppState();\n const { isMediumLargeMin } = mediaQueries || {};\n\n const { logoColorUrl: homeLogoColorUrl, fullName: homeFullName, abbreviation: homeAbbrev } = homeClub || {};\n const { logoColorUrl: awayLogoColorUrl, fullName: awayFullName, abbreviation: awayAbbrev } = awayClub || {};\n\n const { highQuality: homeClubLogoSrc } = homeLogoColorUrl ? formatImageUrl(homeLogoColorUrl, { format: \"w_128,h_128,c_pad\", extension: \"f_png\" }) : {};\n const { highQuality: awayClubLogoSrc } = awayLogoColorUrl ? formatImageUrl(awayLogoColorUrl, { format: \"w_128,h_128,c_pad\", extension: \"f_png\" }) : {};\n\n const { penaltyKicks, penaltiKicksStatus } = usePenaltyKicks({ matchOptaId, queryConfig, mlsMatch });\n const { bookings, bookingsStatus } = useBookings({ matchOptaId, mlsMatch, queryConfig });\n const { forgeMatchPlayers, forgeMatchPlayersStatus } = useForgePlayers({ matchOptaId });\n const { forgeMatchVideos, forgeVideoStatus } = useForgeMatchVideos({ matchOptaId, queryConfig });\n\n const videoList = React.useMemo(() => composeVideoList(forgeMatchVideos, videoTags), [forgeMatchVideos]);\n const secondAssists = !hide2ndAssist ? goals?.filter((goal) => goal?.second_assist_player) : null;\n const summaryWithSecondAssists = summary?.map((comm) => {\n let secondAssist = null;\n secondAssists?.forEach((assist) => {\n assist?.second_assist_player && (comm?.minute === assist?.minute) ? secondAssist = assist?.second_assist_player : null;\n });\n\n return {\n ...comm,\n third_player: secondAssist\n };\n });\n\n const formattedPenaltyKicks = React.useMemo(() => formatPenaltyKicks({ penaltyKicks, home: homeClub, away: awayClub }), [penaltyKicks]);\n const formattedSummary = React.useMemo(() => formatSummary({ summary: summaryWithSecondAssists, home: homeClub, away: awayClub, videoList }), [summary, videoList]);\n const matchSummaryLabel = t(\"match_summary\");\n\n if (bookingsStatus === queryStatusTypes.loading && goalsStatus === queryStatusTypes.loading && forgeMatchPlayersStatus === queryStatusTypes.loading\n && forgeVideoStatus === queryStatusTypes.loading && penaltiKicksStatus === queryStatusTypes.loading) {\n return null;\n }\n\n return (\n
\n {(formattedSummary != null && formattedSummary.length > 0) || (penaltyKicks != null && penaltyKicks.length > 0) || (formattedPenaltyKicks?.home && formattedPenaltyKicks?.away) ?\n
\n {matchSummaryLabel}\n
\n : null}\n
\n {\n formattedSummary != null && formattedSummary.length > 0\n ? formattedSummary.map(block => )\n : null\n }\n {\n penaltyKicks != null && penaltyKicks.length > 0\n ? isMediumLargeMin\n ? (\n
\n
\n
\n \n
\n
{homeFullName}
\n
\n
\n \n
\n
\n
\n \n
\n
{awayFullName}
\n
\n
\n ) : (\n
\n
\n \n
\n
\n
\n
{homeAbbrev}
\n
\n \n
\n
\n
\n
\n \n
\n
{awayAbbrev}
\n
\n
\n
\n )\n : null\n }\n
\n
\n {formattedPenaltyKicks?.home && formattedPenaltyKicks?.away\n ? (\n
\n
\n {\n formattedPenaltyKicks?.home.map(kick => )\n }\n
\n
\n {\n formattedPenaltyKicks?.away.map(kick => )\n }\n
\n
\n )\n : null\n }\n
\n );\n}\n\n// eslint-disable-next-line no-func-assign\nMatchSummaryData = React.memo(MatchSummaryData);\n\nexport default MatchSummaryData;\n","import React from 'react';\nimport LoadingDisplay from \"../../../shared/components/LoadingDisplay\";\nimport Picture from \"../../../shared/components/Picture\";\nimport { useReactAppState } from \"../../../shared/containers/utils\";\n\nfunction PenaltyCardLoader({ componentType, isHome }) {\n const { mediaQueries } = useReactAppState();\n const { isMediumLargeMin } = mediaQueries || {};\n\n return (\n
\n {isMediumLargeMin ?
: 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}\n\nexport default PenaltyCardLoader;\n","import React from 'react';\nimport CheckIcon from \"../../../shared/svg/CheckIcon/CheckIcon\";\nimport CloseIcon from \"../../../shared/svg/CloseIcon/CloseIcon\";\nimport { componentTypes, outcomeTypes } from \"../../utils\";\nimport { useReactAppState } from \"../../../shared/containers/utils\";\n\nfunction ShootOutKick({ penaltyKick, isHome, componentType = componentTypes.summary }) {\n const { player, outcome } = penaltyKick || {};\n const { known_name, last_name, first_name } = player || {};\n\n const playerName = known_name\n ? known_name\n : first_name && last_name\n ? `${first_name.charAt(0)}. ${last_name}`\n : last_name\n ? last_name\n : first_name\n ? first_name\n : \"\";\n\n return (\n
\n
\n {\n outcome === outcomeTypes.scored\n ? \n : \n }\n
\n
\n {playerName}\n
\n
\n );\n}\n\n// eslint-disable-next-line no-func-assign\nShootOutKick = React.memo(ShootOutKick);\n\nexport default ShootOutKick;\n","export { default } from './ShootOutKick';\n","import { useQuery } from 'react-query'\nimport { fetchClient } from '../../shared/api/fetching';\nimport { apiURL, mlsBookingsAPI } from '../../shared/api/variables';\n\nfunction useBookings({ matchOptaId, mlsMatch, queryConfig }) {\n const bookingsEndpoint = mlsBookingsAPI({ matchOptaId });\n\n\n const { data: bookings, status: bookingsStatus } = useQuery({\n queryKey: [`mls-bookings`, { matchOptaId }],\n queryFn: () => fetchClient({ endpoint: bookingsEndpoint, apiURL: apiURL.statsAPI }),\n ...queryConfig,\n enabled: !!(mlsMatch)\n });\n\n return { bookings, bookingsStatus }\n}\n\nexport default useBookings;\n","import { useQuery } from 'react-query'\nimport { fetchClient } from '../../shared/api/fetching';\nimport { apiURL, forgeMatchVideosAPI } from \"../../shared/api/variables\";\n\n\nfunction useForgeMatchVideos({ matchOptaId, queryConfig }) {\n const forgeMatchVideosEndpoint = forgeMatchVideosAPI({ matchOptaId });\n\n const { status: forgeVideoStatus, data: forgeMatchVideos } = useQuery({\n queryKey: [`forge-match-videos`, { matchOptaId }],\n queryFn: () => fetchClient({ apiURL: apiURL.forgeDAPI, endpoint: forgeMatchVideosEndpoint }),\n ...queryConfig,\n enabled: !!(matchOptaId),\n select: videos => videos?.items\n });\n\n return { forgeMatchVideos, forgeVideoStatus }\n}\n\nexport default useForgeMatchVideos;\n","import { useQuery } from 'react-query'\nimport { fetchClient } from '../../shared/api/fetching';\nimport { apiURL, d3PlayerAPI } from '../../shared/api/variables';\n\n\nfunction useForgePlayers({ matchOptaId }) {\n const d3PlayersEndpoint = d3PlayerAPI({ matchOptaId });\n\n const { data: forgeMatchPlayers, status: forgeMatchPlayersStatus } = useQuery({\n queryKey: [`d3-players-match`, { matchOptaId }],\n queryFn: () => fetchClient({ endpoint: d3PlayersEndpoint, apiURL: apiURL.d3SportsAPI }),\n enabled: !!(matchOptaId)\n });\n\n return { forgeMatchPlayers, forgeMatchPlayersStatus }\n\n}\n\nexport default useForgePlayers;\n","import { useQuery } from 'react-query'\nimport { fetchClient } from '../../shared/api/fetching';\nimport { apiURL, mlsGoalsAPI } from '../../shared/api/variables';\n\nfunction useGoals({ matchOptaId, mlsMatch, queryConfig }) {\n const goalsEndpoint = mlsGoalsAPI({ matchOptaId, includeAssists: true });\n\n const { data: goals, status: goalsStatus } = useQuery({\n queryKey: [`mls-goals`, { matchOptaId }],\n queryFn: () => fetchClient({ endpoint: goalsEndpoint, apiURL: apiURL.statsAPI }),\n ...queryConfig,\n enabled: !!(mlsMatch)\n });\n\n return { goals, goalsStatus }\n}\n\nexport default useGoals;\n","import { useQuery } from 'react-query'\nimport { fetchClient } from '../../shared/api/fetching';\nimport { apiURL, mlsPenaltyKicksAPI } from '../../shared/api/variables';\n\nfunction usePenaltyKicks({ matchOptaId, queryConfig, mlsMatch }) {\n const penaltyKicksEndpoint = mlsPenaltyKicksAPI({ matchOptaId });\n\n const { data: penaltyKicks, status: penaltiKicksStatus } = useQuery({\n queryKey: [`mls-penalty-kicks`, { matchOptaId }],\n queryFn: () => fetchClient({ endpoint: penaltyKicksEndpoint, apiURL: apiURL.statsAPI }),\n ...queryConfig,\n enabled: !!(mlsMatch)\n });\n\n return { penaltyKicks, penaltiKicksStatus }\n}\n\nexport default usePenaltyKicks;\n","import { useQuery } from 'react-query'\nimport { fetchClient } from \"../../shared/api/fetching\";\nimport { apiURL, mlsMatchCommentariesAPI } from \"../../shared/api/variables\";\n\nconst COMMENTARIES_SETTINGS = {\n includeOwnGoals: true,\n includeSecondYellowCards: true,\n includePenaltyGoals: true,\n includeYellowCards: true,\n includeRedCards: true,\n includeSubstitutions: true,\n includeGoals: true\n}\n\nfunction useSummary({ matchOptaId, mlsMatch, queryConfig }) {\n const summaryEndpoint = mlsMatchCommentariesAPI({\n matchOptaId, ...COMMENTARIES_SETTINGS\n });\n\n const {\n status: summaryStatus,\n isError: isErrorSummary,\n data: summary,\n error: summaryError\n } = useQuery({\n queryKey: [`mls-commentaries`, {\n matchOptaId, ...COMMENTARIES_SETTINGS\n }],\n queryFn: () => fetchClient({ endpoint: summaryEndpoint, apiURL: apiURL.statsAPI }),\n ...queryConfig,\n enabled: !!(mlsMatch)\n });\n\n return {\n status: summaryStatus,\n isError: isErrorSummary,\n data: summary,\n error: summaryError\n }\n}\n\nexport default useSummary;\n","import React from 'react';\nimport LoadingDisplay from \"../shared/components/LoadingDisplay\";\nimport GoalLoader from \"./components/Goal/loader\";\nimport { componentTypes } from \"./utils\";\nimport PenaltyCardLoader from \"./components/PenaltyCard/loader\";\n\nfunction MatchSummaryLoader() {\n return (\n
\n
\n \n
\n
\n {\n [...Array(3)].map((c, index) => {\n return (\n \n
\n \n
\n
\n \n
\n
\n );\n })\n }\n
\n
\n
\n );\n}\n\nexport default MatchSummaryLoader;\n","import React from 'react';\r\nimport ErrorDisplay from \"../shared/components/ErrorDisplay\";\r\nimport { statusTypes } from \"../mls-match-list/utils\";\r\nimport { useMatchStatus } from \"../shared/hooks/useMatchStatus\";\r\nimport { useReactAppState } from \"../shared/containers/utils\";\r\nimport MatchSummaryData from \"./components/MatchSummaryData/MatchSummaryData\";\r\nimport { queryStatusTypes } from \"../shared/utils\";\r\nimport { componentTypes } from \"./utils\";\r\nimport MatchSummaryLoader from \"./loader\";\r\nimport useSummary from './hooks/useSummary';\r\nimport useGoals from './hooks/useGoals';\r\n\r\nfunction MatchSummary({ options }) {\r\n const { match: appMatch, matchStatusOverride } = useReactAppState();\r\n const matchOptaId = options.matchOptaId || appMatch?.optaId;\r\n const competitionOptaId = options.competitionOptaId?.toString();\r\n const hide2ndAssistCompetitions = options.hide2ndAssistByCompetition?.split(\",\") || null;\r\n const componentType = componentTypes.summary;\r\n const home = options.home;\r\n const away = options.away;\r\n\r\n const hide2ndAssist = hide2ndAssistCompetitions?.includes(competitionOptaId);\r\n\r\n const { mlsMatch, error, isLoading, isError, status: matchStatus, queryConfig } = useMatchStatus({\r\n initialState: {\r\n matchOptaId\r\n }\r\n });\r\n\r\n const status = matchStatusOverride?.abbreviation ? matchStatusOverride : matchStatus;\r\n\r\n const { status: summaryStatus,\r\n isError: isErrorSummary,\r\n data: summary,\r\n error: summaryError } = useSummary({ matchOptaId, mlsMatch, queryConfig })\r\n\r\n\r\n const { goals, goalsStatus } = useGoals({ matchOptaId, mlsMatch, queryConfig });\r\n\r\n if (!matchOptaId) {\r\n return null;\r\n }\r\n\r\n if (status?.abbreviation === statusTypes.pre ||\r\n status?.abbreviation === statusTypes.cancelled ||\r\n status?.abbreviation === statusTypes.postponed) {\r\n return null;\r\n }\r\n\r\n return (\r\n isLoading || summaryStatus === queryStatusTypes.loading\r\n ? \r\n : isError || isErrorSummary\r\n ? (\r\n
\r\n \r\n
\r\n )\r\n : mlsMatch &&\r\n\r\n summaryStatus !== queryStatusTypes.loading\r\n ? \r\n : null\r\n );\r\n}\r\n\r\n// eslint-disable-next-line no-func-assign\r\nMatchSummary = React.memo(MatchSummary);\r\n\r\nexport default MatchSummary;\r\n","import React, { useState } from \"react\";\n\nfunction CheckIcon(props) {\n const { handleClick, extraClasses, size = \"small\", wrapperElement = \"div\" } = props || {};\n const [WrapperComponent] = useState(wrapperElement);\n\n return (\n \n \n \n \n \n \n \n );\n}\n\n// eslint-disable-next-line no-func-assign\nCheckIcon = React.memo(CheckIcon);\n\nexport default CheckIcon;\n","import React, { useState } from 'react';\n\nfunction PenaltyKickAwardedIcon(props) {\n const { handleClick, extraClasses, size = \"small\", wrapperElement = \"div\" } = props || {};\n const [WrapperComponent] = useState(wrapperElement);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\n// eslint-disable-next-line no-const-assign,no-func-assign\nPenaltyKickAwardedIcon = React.memo(PenaltyKickAwardedIcon);\n\nexport default PenaltyKickAwardedIcon;\n","export { default } from './PenaltyKickAwardedIcon';\n"],"names":[],"sourceRoot":""}