{"version":3,"file":"static/js/top-navigation-button.ea58bd57.chunk.js","mappings":"8OAMA,MAGMA,EAA2B,CAAEC,KAAO,QACpCC,EAA4B,CAAEC,MAAQ,QACtCC,EAA6B,CACjCH,KAAO,oBAGHI,EAA6B,CACjCC,OAAS,GAAEC,EAAAA,GAVO,QAadC,EAA6D,CACjE,cAAe,IAAKH,KAAiBL,GACrC,gBAAiB,IAAKK,KAAiBD,GACvC,eAAgB,IAAKC,KAAiBH,GACtCD,KAAM,IAAKD,GACXS,OAAQ,IAAKL,GACbD,MAAO,IAAKD,IAKDQ,EAAkB,SAC7BC,EACAC,GAEkB,IADlBC,EAAYC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GALe,IAO3B,MAAkB,QAAdH,EACK,IACFH,EAAcI,GACjB,CAACD,GAAa,GAAEE,EAhCF,QAoCXL,EAAe,GAAEG,KAAaC,IACvC,EAkBaK,EAAc,SACzBC,IAjBsB,SACtBA,GAGU,IAFVN,EAAQE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACXK,EAAwBL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,SAE3BI,EAAEE,iBACF,MAAMC,EAAuBC,SAASC,cAAc,qBAEhDF,EACFA,EAAqBG,SAAS,CAAEC,IAAKb,EAAUO,cAE/CG,SAASI,KAAKF,SAAS,CAAEC,IAAKb,EAAUO,aACxCG,SAASK,gBAAgBH,SAAS,CAAEC,IAAKb,EAAUO,aAEvD,CAMEK,CAASN,EAAG,EAFYJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,SAG7B,E,0DCjDA,MAAMc,EAA4B,KAIhCC,+BAAgCjB,EAChCkB,gCAAiCnB,GAC/BoB,EAAAA,GAESC,EAA8BA,KACzC,MAAMC,GAAoBC,EAAAA,EAAAA,IAAYC,EAAAA,IAChCC,GAAkBF,EAAAA,EAAAA,IAAYG,EAAAA,IAC9BC,GAAgBJ,EAAAA,EAAAA,IAAYK,EAAAA,IAC5BC,GAAWN,EAAAA,EAAAA,IAAYO,EAAAA,IACvBC,GAAaC,EAAAA,EAAAA,QAAmB,OAC/B9B,EAAc+B,IAAmBC,EAAAA,EAAAA,UAAS,IAC1CC,EAAWC,IAAgBF,EAAAA,EAAAA,UAAyB,MACrDG,GAAuBC,EAAAA,EAAAA,UAC3B,KAAMC,EAAAA,EAAAA,OAAed,GAAmBH,IACxC,CAACG,EAAiBH,IAGdkB,GAAWjB,EAAAA,EAAAA,IAAYkB,EAAAA,KAE7BC,EAAAA,EAAAA,YAAU,KACJL,GACEF,IACFC,GAAa,GACbO,aAAaZ,EAAWa,SAE5B,GACC,CAACP,IAEJ,MAAMQ,EAAeA,KACnB,MAAMC,EAAqBnC,SAASC,cAAc,qBAClD,IAAIuB,EACFxB,SAASI,KAAKgC,UAAY9B,GAC1BN,SAASK,gBAAgB+B,UAAY9B,EAEnC6B,IACFX,GACoB,OAAlBW,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBC,WAAY9B,IACd,OAAlB6B,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBC,WAAY9B,GAGpCmB,GAAaQ,KACFA,IAAYT,EAAYA,EAAYS,IAG3Cb,EAAWa,SACbD,aAAaZ,EAAWa,SAG1Bb,EAAWa,QAAUI,YAAW,KAC9BZ,GAAa,EAAM,GApDc,KAuDnC,MAAMa,EAAStC,SAASC,cACtB,sBAGEqC,GAAUA,EAAOC,UAAUC,SAAS,kBACtClB,EAAgBgB,EAAOG,cAAgBH,EAAOI,aAChD,EA+BF,OA5BAX,EAAAA,EAAAA,YAAU,KAAO,IAADY,EACd,MAAMR,EAAqBnC,SAASC,cAAc,qBAYlD,OAVI4B,GAAmC,QAA3Bc,EAAIC,OAAOC,OAAOhB,UAAS,IAAAc,GAAvBA,EAAyBlD,QACvCgC,GAAa,GAGXU,GAAsBjB,EACxBiB,EAAmBW,iBAAiB,SAAUZ,GAE9ClC,SAAS8C,iBAAiB,SAAUZ,GAG/B,KACLF,aAAaZ,EAAWa,SAEpBE,GACFA,EAAmBY,oBAAoB,SAAUb,EACnD,CACD,GACA,CAAChB,EAAUW,KAEdE,EAAAA,EAAAA,YAAU,IACD,KACL/B,SAAS+C,oBAAoB,SAAUb,EAAa,GAErD,KAGDc,EAAAA,EAAAA,KAAA,OACEC,MAAO7D,EAAgBC,EAAWC,EAAUC,GAC5C2D,QAASvD,EACTwD,WAAWC,EAAAA,EAAAA,GAAG,CACZ,mCACA,CACE,4CAA0D,IAAd5B,EAC5C,2CAA4CA,EAC5C,kDACER,GAAiBP,EAAAA,GAAc4C,kBACjC,wDACErC,IAAkBP,EAAAA,GAAc4C,qBAEnCC,UAEHN,EAAAA,EAAAA,KAACO,EAAAA,EAAU,CACTC,IAAI,UACJC,KAAK,oBACLC,MAAM,UACNC,KAAMC,EAAAA,GAAUC,OAEd,EC/HGC,EAA0BA,KAC9BlC,EAAAA,EAAAA,MAAcnB,EAAAA,GAAcsD,kCACjCf,EAAAA,EAAAA,KAACtC,EAAuB,IACtB,I","sources":["newelements/TopNavigationButton/helpers.ts","newelements/TopNavigationButton/NavigationButtonElement.tsx","newelements/TopNavigationButton/index.tsx"],"sourcesContent":["import { MouseEvent } from 'react';\nimport { BOTTOM_NAVIGATION_ELEMENT_DEFAULT_HEIGHT } from 'utils/constants/app/BottomNavigationDefaultData';\nimport { tAlignment, tPosition } from 'interfaces/generic';\n\ntype tStyleObject = { [k in tPosition | tAlignment]?: string };\n\nconst INDENT_SIZE = 24;\nconst BUTTON_WIDTH = 48;\n\nconst leftStyles: tStyleObject = { left: `${INDENT_SIZE}px` };\nconst rightStyles: tStyleObject = { right: `${INDENT_SIZE}px` };\nconst centerStyles: tStyleObject = {\n left: `calc(50% - ${BUTTON_WIDTH / 2}px)`\n};\n\nconst bottomStyles: tStyleObject = {\n bottom: `${BOTTOM_NAVIGATION_ELEMENT_DEFAULT_HEIGHT + INDENT_SIZE}px`\n};\n\nconst buttonStyling: { [k in tPosition | string]: tStyleObject } = {\n 'bottom-left': { ...bottomStyles, ...leftStyles },\n 'bottom-center': { ...bottomStyles, ...centerStyles },\n 'bottom-right': { ...bottomStyles, ...rightStyles },\n left: { ...leftStyles },\n center: { ...centerStyles },\n right: { ...rightStyles }\n};\n\nconst BUTTON_HEADER_HEIGHT = 150;\n\nexport const getButtonStyles = (\n alignment: tAlignment,\n position: tPosition,\n headerHeight = BUTTON_HEADER_HEIGHT\n): tStyleObject => {\n if (alignment === 'top') {\n return {\n ...buttonStyling[position],\n [alignment]: `${headerHeight + INDENT_SIZE}px`\n };\n }\n\n return buttonStyling[`${alignment}-${position}`];\n};\n\nexport const scrollTo = (\n e: MouseEvent,\n position = 0,\n behavior: ScrollBehavior = 'smooth'\n): void => {\n e.preventDefault();\n const scrollToTopContainer = document.querySelector('.canBeScrollToTop');\n\n if (scrollToTopContainer) {\n scrollToTopContainer.scrollTo({ top: position, behavior });\n } else {\n document.body.scrollTo({ top: position, behavior });\n document.documentElement.scrollTo({ top: position, behavior });\n }\n};\n\nexport const scrollToTop = (\n e: MouseEvent,\n behavior: ScrollBehavior = 'smooth'\n): void => {\n scrollTo(e, 0, behavior);\n};\n","import { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport cc from 'classcat';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { isMobile } from 'utils/is-mobile';\nimport { getButtonStyles, scrollToTop } from './helpers';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { getShowToTopNav } from 'store/selectors/app-data';\nimport {\n getBetslipOpen,\n getBetsTotalOdds,\n getQuickBetEnabled\n} from 'store/selectors/betslip';\nimport { getSingleGameData } from 'store/selectors/new-sportsbook';\nimport './index.less';\n\nconst SCROLL_TOP_TO_SHOW_BUTTON = 100;\nconst TIME_TO_HIDE_NAVIGATION_BUTTON = 4000;\n\nconst {\n TOP_NAVIGATION_BUTTON_POSITION: position,\n TOP_NAVIGATION_BUTTON_ALIGNMENT: alignment\n} = SpringConfigs;\n\nexport const NavigationButtonElement: FC = () => {\n const isQuickBetEnabled = useSelector(getQuickBetEnabled);\n const isBetslipOpened = useSelector(getBetslipOpen);\n const betsTotalOdds = useSelector(getBetsTotalOdds);\n const toTopNav = useSelector(getShowToTopNav);\n const timeoutRef = useRef(null);\n const [headerHeight, setHeaderHeight] = useState(0);\n const [isVisible, setIsVisible] = useState(null);\n const isBetslipModalOpened = useMemo(\n () => isMobile() && (isBetslipOpened || isQuickBetEnabled),\n [isBetslipOpened, isQuickBetEnabled]\n );\n\n const gameData = useSelector(getSingleGameData);\n\n useEffect(() => {\n if (isBetslipModalOpened) {\n if (isVisible) {\n setIsVisible(false);\n clearTimeout(timeoutRef.current);\n }\n }\n }, [isBetslipModalOpened]);\n\n const handleScroll = () => {\n const scrollToTopVisible = document.querySelector('.canBeScrollToTop');\n let isVisible =\n document.body.scrollTop > SCROLL_TOP_TO_SHOW_BUTTON ||\n document.documentElement.scrollTop > SCROLL_TOP_TO_SHOW_BUTTON;\n\n if (scrollToTopVisible) {\n isVisible =\n scrollToTopVisible?.scrollTop > SCROLL_TOP_TO_SHOW_BUTTON ||\n scrollToTopVisible?.scrollTop > SCROLL_TOP_TO_SHOW_BUTTON;\n }\n\n setIsVisible(current => {\n return !!current !== isVisible ? isVisible : current;\n });\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsVisible(false);\n }, TIME_TO_HIDE_NAVIGATION_BUTTON);\n\n const header = document.querySelector(\n 'header.header-rows'\n ) as HTMLDivElement;\n\n if (header && header.classList.contains('header-sticky')) {\n setHeaderHeight(header.clientHeight || header.offsetHeight);\n }\n };\n\n useEffect(() => {\n const scrollToTopVisible = document.querySelector('.canBeScrollToTop');\n\n if (gameData && Object.values(gameData)?.length) {\n setIsVisible(false);\n }\n\n if (scrollToTopVisible && toTopNav) {\n scrollToTopVisible.addEventListener('scroll', handleScroll);\n } else {\n document.addEventListener('scroll', handleScroll);\n }\n\n return () => {\n clearTimeout(timeoutRef.current);\n\n if (scrollToTopVisible) {\n scrollToTopVisible.removeEventListener('scroll', handleScroll);\n }\n };\n }, [toTopNav, gameData]);\n\n useEffect(() => {\n return () => {\n document.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n return (\n \n \n \n );\n};\n","import { FC } from 'react';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { isMobile } from 'utils/is-mobile';\nimport { NavigationButtonElement } from './NavigationButtonElement';\n\nexport const TopNavigationButton: FC = () => {\n return isMobile() && SpringConfigs.IS_TOP_NAVIGATION_BUTTON_ENABLED ? (\n \n ) : null;\n};\n"],"names":["leftStyles","left","rightStyles","right","centerStyles","bottomStyles","bottom","BOTTOM_NAVIGATION_ELEMENT_DEFAULT_HEIGHT","buttonStyling","center","getButtonStyles","alignment","position","headerHeight","arguments","length","undefined","scrollToTop","e","behavior","preventDefault","scrollToTopContainer","document","querySelector","scrollTo","top","body","documentElement","SCROLL_TOP_TO_SHOW_BUTTON","TOP_NAVIGATION_BUTTON_POSITION","TOP_NAVIGATION_BUTTON_ALIGNMENT","SpringConfigs","NavigationButtonElement","isQuickBetEnabled","useSelector","getQuickBetEnabled","isBetslipOpened","getBetslipOpen","betsTotalOdds","getBetsTotalOdds","toTopNav","getShowToTopNav","timeoutRef","useRef","setHeaderHeight","useState","isVisible","setIsVisible","isBetslipModalOpened","useMemo","isMobile","gameData","getSingleGameData","useEffect","clearTimeout","current","handleScroll","scrollToTopVisible","scrollTop","setTimeout","header","classList","contains","clientHeight","offsetHeight","_Object$values","Object","values","addEventListener","removeEventListener","_jsx","style","onClick","className","cc","BOTTOM_NAVIGATION","children","GlobalIcon","lib","name","theme","size","EIconSize","_20","TopNavigationButton","IS_TOP_NAVIGATION_BUTTON_ENABLED"],"sourceRoot":""}