{"version":3,"file":"js/react/mls-match-hub-navigation-app.js?_t=f64513933e2627549b3f","mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AAiBA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAAA;AAGA;AACA;AAaA;AAIA;AAuBA;AAGA;AAEA;;;;;;;;;;;;;;;;AC1EA;AAEA;AACA;AAAA;AAEA;AAOA;AAEA;;;;;;;;;;;;;;;;ACdA;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;ACTA;;;;;;;;;;;;;;;ACAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAEA;AAAA;AACA;AAEA;AAAA;AACA;AAGA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AAMA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AAIA;AAAA;AAGA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA","sources":["webpack://@mlssoccer/netcore/./scripts/react/mls-match-hub-navigation/app.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-hub-navigation/components/SubMenuNavItem/SubMenuNavItem.js","webpack://@mlssoccer/netcore/./scripts/react/mls-match-hub-navigation/main.js","webpack://@mlssoccer/netcore/./scripts/react/shared/components/ErrorDisplay/ErrorDisplay.js","webpack://@mlssoccer/netcore/./scripts/react/shared/components/ErrorDisplay/index.js","webpack://@mlssoccer/netcore/./scripts/react/shared/components/LoadingDisplay/LoadingDisplay.js","webpack://@mlssoccer/netcore/./scripts/react/shared/components/LoadingDisplay/index.js","webpack://@mlssoccer/netcore/./scripts/react/shared/components/LoadingDisplay/utils.js","webpack://@mlssoccer/netcore/./scripts/react/shared/hooks/useMatchStatus.js"],"sourcesContent":["export { default } from './main';\n","import React from 'react';\nimport { useReactAppState } from \"../../../shared/containers/utils\";\n\nfunction SubMenuNavItem({ menuItem, position }) {\n const {\n isActive,\n link,\n text,\n tag\n } = menuItem || {};\n const { t } = useReactAppState();\n\n const trackingData =\n {\n navigationType: 'sub navigation',\n navigationSelection: text,\n navigationPosition: position,\n clickLocation: 'sub navigation'\n };\n\n return (\n
  • \n {\n link\n ? (\n \n {tag ? t(tag) : text}\n \n )\n : (\n \n {tag ? t(tag) : text}\n \n )\n }\n
  • \n );\n}\n\n// eslint-disable-next-line no-func-assign\nSubMenuNavItem = React.memo(SubMenuNavItem);\n\nexport default SubMenuNavItem;\n","import React from 'react';\nimport { statusTypes } from \"../mls-match-list/utils\";\nimport LoadingDisplay from \"../shared/components/LoadingDisplay\";\nimport ErrorDisplay from \"../shared/components/ErrorDisplay\";\nimport SubMenuNavItem from \"./components/SubMenuNavItem/SubMenuNavItem\";\nimport { useMatchStatus } from \"../shared/hooks/useMatchStatus\";\nimport { useReactAppState } from \"../shared/containers/utils\";\n\nfunction MatchHubNavigation({ options }) {\n const { match: appMatch, matchStatusOverride } = useReactAppState();\n const matchOptaId = options.matchOptaId || appMatch?.optaId;\n\n const preMatchNavigation = options.preMatchNavigation;\n const liveMatchNavigation = options.liveMatchNavigation;\n const postMatchNavigation = options.postMatchNavigation;\n\n const { status: matchStatus, isLoading, isError, error } = useMatchStatus({\n initialState: {\n matchOptaId\n }\n });\n\n const status = matchStatusOverride?.abbreviation ? matchStatusOverride : matchStatus;\n\n if (!preMatchNavigation || !liveMatchNavigation || !postMatchNavigation) {\n return null;\n }\n\n if (!matchOptaId) {\n return (\n
    \n
    \n
    \n
      \n
    • \n \n Match Not Found\n \n
    • \n
    \n
    \n
    \n
    \n );\n }\n\n return (\n
    \n
    \n
    \n
      \n {\n isLoading\n ? \n : isError\n ? \n : status?.abbreviation === statusTypes.pre && preMatchNavigation && preMatchNavigation.length > 0\n ? preMatchNavigation.map((preMatch, index) => )\n : status?.abbreviation === statusTypes.live && liveMatchNavigation && liveMatchNavigation.length > 0\n ? liveMatchNavigation.map((liveMatch, index) => )\n : postMatchNavigation && postMatchNavigation.length > 0\n ? postMatchNavigation.map((postMatch, index) => )\n : null\n }\n
    \n
    \n
    \n
    \n );\n}\n\n// eslint-disable-next-line no-func-assign\nMatchHubNavigation = React.memo(MatchHubNavigation);\n\nexport default MatchHubNavigation;\n","import React from 'react';\n\nconst ErrorDisplay = ({ error }) => {\n if (!error || !error.message) return null;\n\n return (\n
    \n

    \n {error.message}\n

    \n
    \n );\n};\n\nexport default ErrorDisplay;\n","export { default } from './ErrorDisplay';\n","import React from 'react';\nimport { loadingTypes } from \"./utils\";\n\nconst LoadingDisplay = (props) => {\n const { width = \"100\", type = loadingTypes.line, ...otherProps } = props || {};\n\n return
    ;\n};\n\nexport default LoadingDisplay;\n","export { default } from './LoadingDisplay';\n","export const loadingTypes = {\n line: 'line'\n};\n","import React, { useEffect } from \"react\";\nimport { composeMatchStatus, periodTypes, statusTypes } from \"../../mls-match-list/utils\";\nimport { apiURL, mlsSingleMatchStatsAPI } from \"../api/variables\";\nimport { useQuery } from \"react-query\";\nimport { fetchClient } from \"../api/fetching\";\n\nexport const actionTypes = {\n status: 'status',\n matchOptaId: \"matchOptaId\"\n};\n\nexport function matchStatusReducer(state, action) {\n switch (action.type) {\n case actionTypes.status: {\n return { ...state, status: action.payload };\n }\n case actionTypes.matchOptaId: {\n return { ...state, matchOptaId: action.payload };\n }\n\n default: {\n throw new Error(`Unsupported type: ${action.type}`);\n }\n }\n}\n\nexport function useMatchStatus({ matchData = null, initialState, reducer = matchStatusReducer } = {}) {\n const { current: currentState } = React.useRef(initialState);\n const [state, dispatch] = React.useReducer(reducer, currentState);\n\n const { status: matchStatus, matchOptaId, matchStatusOverride } = state || {};\n const mlsMatchEndpoint = mlsSingleMatchStatsAPI({ matchOptaId });\n const updateMatchStatus = React.useCallback(({ type, payload }) => dispatch({ type, payload }), [dispatch]);\n\n const status = matchStatusOverride?.abbreviation ? matchStatusOverride : matchStatus;\n\n const queryConfig = status\n ? {\n enabled: true,\n refetchIntervalInBackground: true,\n staleTime:\n status?.abbreviation === statusTypes.live || status?.abbreviation === statusTypes.pre\n ? 0\n : Infinity,\n refetchInterval:\n status?.abbreviation === statusTypes.live\n ? 30000\n : status?.abbreviation === statusTypes.pre\n ? 200000\n : null\n } : { enabled: false };\n\n const { data, error, isLoading, isError, isIdle } = useQuery({\n queryKey: [`mls-match`, { matchOptaId }],\n queryFn: () => fetchClient({ endpoint: mlsMatchEndpoint, apiURL: apiURL.statsAPI }),\n select: data => data && data.length > 0 ? data[0] : null,\n ...queryConfig,\n enabled: matchOptaId > 0 && !matchData,\n });\n\n const mlsMatch = matchData ? matchData : data;\n\n useEffect(() => {\n if (!mlsMatch) {\n return;\n }\n const { period } = mlsMatch || {};\n const { delayedMatch } = initialState;\n\n const matchStatus = matchStatusOverride\n ? matchStatusOverride\n : composeMatchStatus({ period, delayedMatch });\n\n updateMatchStatus({ type: actionTypes.status, payload: matchStatus });\n }, [mlsMatch, initialState.delayedMatch]);\n\n const isShootout = status?.value === periodTypes.ShootOut;\n\n\n return {\n mlsMatch,\n error,\n isLoading,\n isIdle,\n isError,\n status,\n isShootout,\n queryConfig,\n updateMatchStatus\n };\n}\n"],"names":[],"sourceRoot":""}