{"version":3,"sources":["images/social/footer_social_facebook.jsx","images/social/footer_social_instagram.jsx","images/social/footer_social_pinterest.jsx","images/social/footer_social_twitter.jsx","images/social/footer_social_youtube.jsx","images/HallmarkChannelLogo.svg","components/Ads/AdSlot.jsx","infrastructure/freewheel/provider.js","infrastructure/freewheel/useFreewheel.ts","slices/game/selectors.ts","components/Ads/FooterAd.jsx","components/Hallmark/HallmarkFooter.jsx","images/logos/HallmarkChannelLogo.tsx","images/logos/Logo.tsx","images/logos/sns_logo-horizontal.svg","infrastructure/config/withConfig.js","infrastructure/isWebView/useLinkTarget.ts","components/Hallmark/HallmarkHeader.jsx","infrastructure/freewheel/breakpoints.js","components/Ads/AnimatedBanner.tsx","constants/Routes.ts","components/Ads/FixedAd.tsx","slices/sweepstakes/selectors.ts","images/icons/hallmark-crown-golden.webp","images/icons/hallmark-orange-crown.svg","components/Shared/HallmarkCrown.tsx","images/loveuary2024/princess-logo-landing-stacked.svg","images/loveuary2024/princess-logo-landing-horizontal.svg","helpers/GetConfig.ts","types/pageNameContants.ts","infrastructure/tracking/GoogleAnalytics.ts","components/Layout/LandingHeader/SponsorLogo.tsx","components/Layout/LandingHeader/LandingHeader.tsx","infrastructure/api/CallApi.ts","slices/users/actionTypes.ts","slices/users/actions.ts","components/Layout/CountdownTimer/CountdownTimer.tsx","images/chex2023/icons/ArrowRight.tsx","components/Layout/Button.tsx","infrastructure/hooks/useWindowDimensions.ts","images/icons/ArrowLeft.tsx","images/icons/Close.tsx","images/icons/Facebook.tsx","images/icons/Pinterest.tsx","images/icons/Twitter.tsx","images/icons/playCircle-default.png","images/icons/leaf1.svg","images/icons/leaf2.svg","images/icons/leaf3.svg","images/icons/leaf4.svg","images/icons/leaf5.svg","images/icons/leaf6.svg","images/icons/leaf7.svg","images/icons/playCircle.png","images/icons/finishedCircle.png","images/icons/circleStreak.png","images/icons/circleTick.png","images/icons/circleClock.png","images/icons/circleLeaderboard.png","images/icons/finishedCircle-default.png","images/icons/circleStreak-default.png","images/icons/circleTick-default.png","images/icons/circleClock-default.png","images/icons/circleLeaderboard-default.png","images/icons/iconShield.svg","images/icons/groupMembers.svg","images/icons/unlocked.svg","images/icons/groupMembersRed.svg","constants.ts","helpers/GetRouteName.ts","helpers/GetProfileImage.ts","images/loveuary2024/princess-cruises-nav-horizontal.svg","images/loveuary2024/princess-cruises-nav-vertical.svg","components/Layout/NavBar/icons/PlayIcon.tsx","components/Layout/NavBar/icons/LeaderboardIcon.tsx","components/Layout/NavBar/icons/GroupsIcon.tsx","components/Layout/NavBar/icons/ProfileIcon.tsx","components/Layout/NavBar/utils.tsx","components/Layout/NavBar/NavBar.tsx","images/loveuary2024/dont-miss-out.webp","components/Layout/SweepstakesCallout/SweepstakesCallout.tsx","slices/game/actionTypes.ts","slices/game/actions.ts","components/Layout/Disclaimer.tsx","infrastructure/isWebView/actionTypes.js","infrastructure/isWebView/reducer.js","slices/users/reducer.ts","slices/game/reducer.ts","slices/sweepstakes/actionTypes.ts","slices/sweepstakes/reducer.ts","slices/sharing/actionTypes.ts","slices/sharing/reducer.ts","slices/gameconfig/actionTypes.ts","slices/promotion/reducer.ts","slices/gameconfig/reducer.ts","slices/groupinvite/actionTypes.ts","slices/groupinvite/reducer.ts","infrastructure/redux/rootReducer.js","infrastructure/redux/configureStore.js","images/3d-tiles.webp","images/3d-tiles-default.webp","infrastructure/tracking/index.ts","infrastructure/hooks/usePageView.ts","components/Layout/LandingHeader/LandingPageEnterButton.tsx","components/LandingPage.tsx","helpers/FormValidationStandardSchema.ts","helpers/FormValidationSweepstakesSchema.ts","components/Form/TextField.jsx","sdk/FormCookie.ts","constants/providers.ts","components/FormPage.tsx","components/Modals/Confetti.tsx","images/backgrounds/game-line-2.png","images/backgrounds/game-line-3.png","images/backgrounds/game-line-4.png","images/backgrounds/game-line-5.png","images/backgrounds/tutorial-step-0.png","images/backgrounds/tutorial-step-1.png","images/backgrounds/tutorial-step-2.png","images/backgrounds/tutorial-step-3.png","images/backgrounds/tutorial-step-0-sweepstakes.png","images/backgrounds/tutorial-step-1-sweepstakes.png","images/backgrounds/tutorial-step-2-sweepstakes.png","images/backgrounds/tutorial-step-3-sweepstakes.png","images/backgrounds/HalftoneTextureTop.tsx","images/backgrounds/background-fair.svg","images/backgrounds/background-people.svg","images/backgrounds/background-stalls.svg","images/backgrounds/index.ts","images/backgrounds/bg-left.jpg","images/backgrounds/bg-right.jpg","images/backgrounds/background-present.png","images/backgrounds/background-tree.png","images/backgrounds/card-level11-sweepstakes.jpg","images/backgrounds/card-profile.jpg","images/backgrounds/card-profile-sweepstakes.jpg","images/backgrounds/card-badges.jpg","images/backgrounds/card-badges-sweepstakes.jpg","images/backgrounds/card-leaderboard.jpg","images/backgrounds/card-leaderboard-sweepstakes.jpg","images/backgrounds/isometric-tiles.png","images/backgrounds/isometric-tiles-plum.webp","images/backgrounds/game-line-1.png","components/Modals/GameTileAnimation.tsx","components/Modals/GameModalStandardBody.tsx","types/UserProfile.ts","images/badges/index.ts","components/Modals/GameModalBadgeBody.tsx","components/Modals/GameModal.tsx","helpers/LocalStorageHelper.ts","components/Modals/InteractiveTutorial.tsx","types/index.ts","components/Media/VimeoPlayer.tsx","components/Media/VideoPlayer.tsx","slices/promotion/selectors.ts","slices/users/selectors.ts","components/Modals/ModalTuneIn.tsx","game/types.ts","game/Helpers/levels.ts","helpers/index.ts","images/game/time.svg","images/game/points.svg","components/Modals/NextLevelModal.tsx","components/Modals/PauseModal.tsx","components/Modals/GameCompletedModal.tsx","images/game/help.svg","images/game/hint.svg","images/game/leaderboard.svg","images/game/mute.svg","images/game/pause.svg","images/game/shuffle.svg","images/game/unmute.svg","images/game/index.ts","components/Game/GameButtons.tsx","components/Modals/GameOverModal.tsx","components/Game/GameNav.tsx","game/Settings/config.ts","game/Helpers/preload.ts","game/Functions/gameLogic.ts","game/Functions/possibleMoves.ts","game/Functions/boardMovement.ts","game/Functions/lineDrawing.ts","game/Scenes/Game.ts","infrastructure/hooks/useCountdownTimer.ts","helpers/NotificationOptions.ts","helpers/BadgeNotification.tsx","infrastructure/hooks/useGame.ts","components/GamePage.tsx","components/RulesPage.tsx","components/Loader.tsx","components/Profile/ProfileStat.tsx","components/Profile/ProfileStats.tsx","components/Profile/LimitedEditionBadges.tsx","components/Profile/StandardBadges.tsx","components/Modals/ModalProfilePhoto.tsx","components/Sharing/FacebookButton.tsx","components/Sharing/PinterestButton.tsx","components/Sharing/TwitterButton.tsx","components/Share.tsx","components/ProfilePage.tsx","components/LeaderBoardPage.tsx","infrastructure/routes/SecuredRoute.tsx","infrastructure/routes/AnonymousRoute.tsx","infrastructure/routes/CloseWindow.ts","infrastructure/routes/NotFound404.tsx","infrastructure/hooks/useScrollToTop.ts","helpers/GroupNotification.tsx","components/Groups/CreateGroupForm.tsx","images/icons/groupRank.svg","components/Groups/UserGroupListItem.tsx","components/Groups/PublicGroupListItem.tsx","components/GroupIndexPage.tsx","images/icons/locked.svg","images/icons/padlock-image.webp","components/Groups/InviteLink.tsx","components/GroupPage.tsx","components/GroupInvitePage.tsx","slices/groupinvite/actions.ts","components/Groups/PaginationButton.tsx","images/chex2023/icons/ArrowLeft.tsx","components/GroupPublicListPage.tsx","infrastructure/routes/routes.tsx","infrastructure/isWebView/actions.js","components/Layout/PageContainer.tsx","components/Layout/NavBar/NavBarMobile.tsx","App.tsx","slices/gameconfig/actions.ts","slices/sweepstakes/actions.ts","slices/sharing/actions.ts","infrastructure/errors/ErrorBoundary.jsx","index.tsx"],"names":["FacebookIcon","_jsx","id","viewBox","width","height","preserveAspectRatio","children","fillRule","d","IconInstagram","IconPinterest","IconTwitter","fill","xmlns","IconYoutube","AdSlot","_ref","slotId","classNames","className","_jsxs","concat","style","display","type","name","value","FreewheelContext","createContext","FreewheelProvider","urlRef","useRef","levelRef","adManager","_window$config","window","config","networkId","serverUrl","profileId","siteSectionId","tv","freewheel","SDK","setLogLevel","LOG_LEVEL_QUIET","AdManager","setNetwork","setServer","_context","setProfile","setSiteSection","_unused","createAdManager","enableFreewheel","context","submitRequest","url","level","current","setTimeout","newContextWithContext","Provider","useFreewheel","useContext","selectActiveLevel","state","game","levelCompleted","totalNumberOfLevels","selectTotalNumberOfLevels","selectApiCallInProgress","apiCallInProgress","withRouter","location","shouldDisplay","freewheelRequest","activeLevel","useSelector","useEffect","pathname","renderIcons","facebook","IconFacebook","twitter","instagram","pinterest","youtube","SocialIcon","link","isWebView","Icon","rel","href","target","HallmarkFooter","_ref2","_Fragment","FooterAd","src","HallmarkChannelLogo","alt","top","color","Logo","colors","horizontalLogo","x1","y1","x2","y2","stroke","transform","stackedLogo","React","Fragment","withConfig","Component","compose","setDisplayName","wrapDisplayName","withProps","selector","webView","useLinkTarget","enhance","_ref$config","navBarColor","_useState","navBarLink","navBarFranchise","useState","_useState2","_slicedToArray","navOpen","setNavOpen","linkTarget","backgroundColor","CSSTransition","in","timeout","onMouseDown","isIE","shouldDisplayL","innerWidth","shouldShowMobileNavbar","AnimatedBanner","bannerTimer","animationTimer","useLocation","showBannerAd","setShowBannerAd","_useState3","_useState4","startFadeOut","setStartFadeout","username","user","clearTimeout","LandingRoute","FormRoute","LeaderboardRoute","GameRoute","RulesRoute","ProfileRoute","GroupIndexRoute","GroupListPageRoute","UrlNameKey","UrlNameKeyWithColon","GroupDetailPageRoute","GroupInvitePageRoute","FixedAd","hideAd","isNavBarHidden","includes","isLandingPage","isFormPage","selectIsCurrentSweepstake","Boolean","sweepstake","currentSweepstakeName","currentSweepstakeEnd","HallmarkCrown","isCurrentSweepstake","hallmarkCrownSweepstakes","hallmarkCrown","GetConfig","gameIntroModal","gamePage","leaderboardWeeklyPage","returningUserModal","gameHelpModal","trackEvent","category","action","label","_GetConfig","enableGoogleAnalytics","googleAnalyticsWebPropertyId","console","log","gtag","properties","event_category","send_to","trackPageView","pageTitle","pagePath","forcePageViewTrack","gaEnabled","enableComScore","COMSCORE","beacon","c1","c2","fetch","page_title","page_path","crossDomainProperties","crossDomainGoogleAnalyticsWebPropertyId","crossDomainGa4Properties","page_location","appUrl","replace","crossDomainGooglev4AnalyticsWebPropertyId","SponsorLogo","isStacked","onClick","logoStacked","logoHorizontal","LandingHeader","page","_useSelector","acceptedRules","CallApi","method","data","apiUrl","request","headers","Pragma","toUpperCase","Axios","LOGIN","LOGOUT","SEENMODAL","SETENTRYCOUNT","SETHIGHSCORE","SETPROFILEIMAGE","login","_objectSpread","logout","setEntryCount","dto","ArrowRight","strokeWidth","strokeLinecap","strokeLinejoin","Button","isLoading","iconBefore","iconOnly","withArrow","props","_objectWithoutProperties","_excluded","BootstrapButton","getWindowDimensions","_window","windowWidth","windowHeight","innerHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","addEventListener","removeEventListener","Close","clipRule","Facebook","Pinterest","Twitter","xmlnsXlink","x","y","localStorageKey","localStorageBadgeNotificationKey","GetRouteName","showHelp","getProfileImage","imageNumber","PlayIcon","gradientUnits","offset","LeaderboardIcon","GroupsIcon","clipPath","ProfileIcon","getNavbarUrl","title","getNavbarIcon","NavbarLink","isCurrentRoute","Link","to","NavBar","history","useHistory","dispatch","useDispatch","showHelpModal","badgeCount","profileImage","_useSelector2","entryCount","nextSweepstakeName","grandPrizeCount","nextSweepstakeStart","logoDesktop","logoMobile","iconShield","size","localStorage","removeItem","formEntryTimeout","_unused2","push","onLogoutClick","SweepstakesCallout","withButton","landingPageText","gameConfig","dontMissOutCopy","dangerouslySetInnerHTML","__html","SETSCOREONLEVELCOMPLETE","SETSCORE","ADDTIMEBONUS","STARTLEVEL","UPDATESHUFFLECOUNT","UPDATEHINTCOUNT","RESTARTGAME","SETNOPOSSIBLEMOVES","GAMEOVER","TOGGLESOUND","TOGGLEPAUSED","LOADED","SHOWHELP","SENTTOAPI","APICALLSTART","APICALLEND","togglePaused","paused","loaded","arguments","length","undefined","apiCallEnd","Disclaimer","Redirect","ADD_IS_WEBVIEW","initialState","webViewReducer","types","isWebview","emailAddress","feed","hasSeenModal","highScore","shareCode","newFormEntryAdded","hasVideoEntryAwarded","isNew","newBadgeNotification","userReducer","score","awaitingBonus","activeScore","completionTime","gameOverMessage","hintsRemaining","isManuallyPaused","levelScore","levelScoreBeforeBonus","loading","noPossibleMoves","requiresSaveToApi","secondsRemaning","showGameOverModal","showNextLevelModal","shufflesRemaining","soundOn","totalSecondsRemaining","totalScore","totalScoreBeforeBonus","timeBonus","secondsRemaining","currentScore","lastLevelPlayed","increment","on","SETSWEEPSTAKES","sweepstakeReducer","SETINVITECODE","shareReducer","SETCONFIG","promotionIndex","promotedItems","count","promotionReducer","tiles","tileCount","prizeTitle","gameConfigReducer","SETCODE","code","groupInviteReducer","rootReducer","combineReducers","isWebViewReducer","router","connectRouter","gameReducer","share","promotion","groupInvite","createBrowserHistory","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","trace","preloadedState","store","createStore","applyMiddleware","apply","routerMiddleware","trackPageViewGoogle","usePageView","LandingPageEnterButon","userId","formSubmissionAttempted","setFormSubmissionAttempted","acceptedRulesChecked","setAcceptedRulesChecked","_useState5","_useState6","ageConfirmationChecked","setAgeConfirmationChecked","_useState7","_useState8","acceptedSponsorChecked","setAcceptedSponsorChecked","_useState9","_useState10","isSubmitting","setIsSubmitting","linkTo","variant","onEnterClick","callApi","rules","cruiseSponsorOptIn","then","setItem","JSON","stringify","catch","response","alertDescription","error","message","Swal","fire","text","backdrop","toast","position","showConfirmButton","timer","timerProgressBar","handleError","finally","disabled","htmlFor","checked","onChange","e","textAlign","FormFeedback","tooltip","valid","LandingPage","Container","Col","xs","md","span","order","tiles3DSweepstakes","tiles3D","FormValidationStandardSchema","Yup","shape","firstName","test","max","required","lastName","email","FormValidationSweepstakesSchema","zipCode","provider","ageConfirmation","TextField","maxLength","placeholder","_useField","useField","_useField2","field","meta","Input","invalid","touched","cookieKey","emailPropertyKey","getJsonFromCookie","cookieData","Cookies","get","parse","remove","domain","getDomain","secure","setFormValuesOnCookie","formValues","newData","previousData","stringsOnly","Object","entries","filter","reduce","newObject","_ref3","_ref4","k","v","existingData","set","expires","cookieDomain","PROVIDERS","map","zipCodeMask","maskArray","i","FormPage","inviteCode","groupInviteCode","onSignUpSuccess","eventType","redirectPath","initialValues","keys","forEach","key","setInitialFromStateFromValuesOnCookie","crownMediaOptIn","sponsorOptIn","princessCruisesSponsorOptIn","Formik","validationSchema","onSubmit","values","errors","Form","noValidate","Row","sm","Field","render","MaskedInput","mask","guide","pattern","inputMode","_ref5","Confetti","repeat","opacity","HalftoneTextureTop","TutorialStepsSweepstakes","TutorialStepSweepstakes0","TutorialStepSweepstakes1","TutorialStepSweepstakes2","TutorialStepSweepstakes3","TutorialSteps","TutorialStep0","TutorialStep1","TutorialStep2","TutorialStep3","GameLines","GameLine2","GameLine3","GameLine4","GameLine5","GameTileAnimation","GameModalStandardBody","newEntry","Modal","Header","Body","StandardBadgeImageDictionary","RepeatPlayer","WeekWarrior","OverAchiever","SuperSpeedy","AllTimeTopTen","WeeklyTopFive","Independent","LastLevelBoss","LoyalPlayer","Centurion","TeamPlayer","GroupChampions","GroupGamers","LoyalLeague","LeaderboardLegends","getLimitedEditionBadgeUrlFromKey","toLowerCase","GameModalBadgeBody","badgeDescription","badgeKey","Image","GameModal","show","hideModal","restart","showRestart","animationStep","setAnimationStep","lastNotificationShown","defaultValue","item","getItem","getFromLocalStorage","showBadgeNotification","setBadgeNotificationShown","setOnLocalStorage","centered","onHide","description","Footer","InteractiveTutorial","TuneInType","VimeoPlayer","_containerRef$current","vimeoCode","containerRef","ref","clientWidth","frameBorder","allowFullScreen","allow","VideoPlayer","videoUrl","playcardUrl","trackingTitle","onPlay","videoRef","videoPlayerRef","videoJsOptions","autoplay","playbackRates","controls","controlBar","sources","preload","videojs","one","dispose","node","poster","promotedItemFallback","Invite","externalUrl","imageUrl","logoUrl","displayTitle","tuneIn","awardEntry","selectPromotedItem","selectHasVideoEntryAwarded","selectUserId","ModalTuneIn","showInvite","isPlayed","setIsPlayed","needToCallApi","promotedItemId","setVideoView","Video","Vimeo","BoardGravity","GameOverType","Level","columnCount","rowCount","timeInSeconds","gravity","numberOfTileTypes","pointsPerMatch","levelCompleteMessage","changingGravity","_classCallCheck","isMobile","_createClass","this","Math","levels","None","Down","Right","Left","shareCodeKey","numberWithCommas","input","toString","formatTime","seconds","minutes","floor","partInSeconds","padStart","getUserStats","gamesStarted","gamesFinished","currentStreak","levelsCompleted","totalPlayTime","highestPositionAllTime","getPageNumbers","currentPage","lastPage","startPage","endPage","Array","from","_","index","targetEndPage","targetStartPage","NextLevelModal","_levels$levelComplete","setShowTotalScore","time","completionMessage","videoEntryAwarded","setVideoEntryAwarded","timeIcon","scoreIcon","CountUp","end","start","duration","delay","separator","PauseModal","gameScene","resumeTimer","formattedTime","resume","resumeGame","backdropClassName","GameCompletedModal","GameNavIcons","Help","HelpIcon","Hint","HintIcon","Leaderboard","Mute","MuteIcon","Pause","PauseIcon","Points","PointsIcon","Shuffle","ShuffleIcon","Time","TimeIcon","Unmute","UnmuteIcon","GameButtons","pauseTimer","showTooltips","trackClick","background","borderRadius","shuffleBoard","useHint","toggleSound","pauseGame","GameOverModal","timeUp","GameNav","currentLevel","levelToShow","getConfig","getPixelRatio","devicePixelRatio","tilePadding","maxColumns","getCanvasWidth","tileSize","Phaser","AUTO","parent","scale","mode","Scale","NONE","transparent","touch","capture","gameAssetUrl","getState","load","image","spritesheet","frameWidth","frameHeight","audio","isInside","pos","board","findStraight","pos1","pos2","numberOfRows","val","filled","find_around","next","ways","maxOfColumnsOrRows","down","left","right","j","findWay","array","unshift","bx","numberOfColumns","res","arr","pick","hint","pieces","total","getLength","child","getChildren","piece","searchMatch","changingGravityOptions","Up","changingGravityIndex","board_update","afterMoveCompleteCheckValidMovesAvailable","onCompleted","onNoMovesRemaining","is_layer_empty","dropForDirection","isHorizontal","ascending","iteration1","iteration2","counter","a","shift","b","drop_all","changeState","startX","startY","self","tweens","add","targets","ease","onComplete","getRadians","degrees","PI","hideLines","lines","setVisible","gameStarted","useHintRef","shuffleBoardRef","gameOverRef","scoreOnLevelStart","playerData","hintsLeft","shufflesLeft","game_data","sound","Game","_Phaser$Scene","_inherits","_super","_createSuper","_this","call","_assertThisInitialized","startingScore","_store$getState$game","isAndroid","refresh","gameOverType","sceneConfig","autoStart","startGame","thisScene","setVolume","levelData","hint_shown","group","selected","canvasWidth","maxRows","yMargin","rowsToUse","canvasHeight","start_x","start_y_mobile","start_y_desktop","start_y","resize","canvas","setProperty","tileChoicesShuffled","shuffle","_cur","arr_x","sprite","setInteractive","displayWidth","displayHeight","sign","animationScale","setDepth","scaleX","scaleY","yoyo","line","copy_obj","obj","destroy","t","m","random","shuffle_pieces","clearTint","setTexture","play_sound","gameover","NoMoves","pointer","event","preventDefault","setTint","way","route","playSound","prev","cur","p","setPosition","setFrame","setRotation","frame","showLines","scene","mikedrop","newState","setScoreOnLevelComplete","updateHintCount","_hint","alert","show_hint","updateShuffleCount","Scene","scope","play","useCountdownTimer","onTimeUp","isPaused","setIsPaused","setSecondsRemaining","timeoutRef","tick","newTime","notificationBaseOptions","reactSwal","withReactContent","getImageUrl","badge","isLimitedEdition","badgeNotification","badges","nearlyThereNotifications","onViewBadgesClick","singleBadgeNotification","isConfirmed","slice","nearlyThereNotification","getNearlyThereHtml","html","close","useGame","gameRef","_useCountdownTimer","_gameRef$current","_gameRef$current$scen","gameOver","TimeUp","_useCountdownTimer2","setSecondsForNextLevel","getActiveLevel","saveUserToLocalStorage","totalSeconds","hints","shuffles","localStorageUser","startingConfig","setShowModal","mouse","preventDefaultWheel","bonusPoints","addTimeBonus","nextLevel","playthroughScore","playthroughSecondsRemaining","awardedBadges","showModal","_gameRef$current2","GamePage","_gameRef$current5","gameNavRef","_useGame","_useGame2","showInitialModal","setShowInitialModal","restartWithAutoStart","_gameNavRef$current","scrollTo","getBoundingClientRect","scrollY","maxWidth","overflow","CloseIcon","_gameRef$current3","_gameRef$current3$sce","_gameRef$current4","_gameRef$current4$sce","RulesPage","rowSpan","colSpan","Loader","red","images","stopOpacity","stopColor","attributeName","dur","begin","repeatCount","ProfileStat","lg","subheader1","subheader2","value2","ProfileStats","highestPositionWeekly","circlePlay","circleFinished","circleStreak","circleTick","circleClock","circleLeaderboard","LimitedEditionBadges","hasEarned","StandardBadges","imageNumbers","_toConsumableArray","ModalProfilePhoto","currentProfileImage","selectedImage","setSelectedImage","setIsLoading","imagesLoaded","setImagesLoaded","onHideModal","onLoad","clsx","FacebookButton","apiShareUrl","facebookAppId","classes","root","shareUrl","quoteParam","encodeURIComponent","redirectUrl","open","PinterestButton","shareText","pinterestUrl","PinterestIcon","TwitterButton","urlParam","twitterUrl","TwitterIcon","Share","userData","ProfilePage","showProfileImageModal","setShowProfileImageModal","isError","setIsError","profileData","setProfileData","err","iconShieldSweepstakes","limitedEditionBadges","apiPaths","Map","LeaderboardPage","leaderboardItems","setLeaderboardItems","activeLeaderboard","setActiveLeaderboard","isDisabled","setIsDisabled","_useState11","_useState12","setUserGroupCodes","initialPageViewTrackedRef","active","userScore","redirectTo","rank","isGroupMember","iconGroupMembers","SecuredRoute","component","path","Route","AnonymousRoute","CloseWindow","NotFound404","scrollToTop","useScrollToTop","pathName","isPrivate","CreateGroupForm","onGroupCreation","resetForm","_message$response","_message$response$dat","_message$response$dat2","icon","iconColor","confirmButtonText","UserGroupListItem","iconGroupRank","memberCount","PublicGroupListItem","onGroupJoinSuccess","isMember","trackJoinOrView","joinOrView","xl","GroupIndexPage","userGroups","setUserGroups","publicGroups","setPublicGroups","userGroupPromise","publicGroupPromise","Promise","all","onNewGroup","publicGroup","InviteLink","str","inviteUrl","groupName","hasCopied","setHasCopied","readOnly","CopyToClipboard","onCopy","GroupPage","setGroup","urlName","useParams","groupType","UnlockedIcon","LockedIcon","currentGroup","groupMembers","PadlockImage","GroupInvitePage","inviteProcessing","setInviteProcessing","PaginationButton","isSelected","pageNumber","ArrowLeft","GroupPublicListPage","componentMountRef","setPage","items","setItems","numberOfPages","setNumberOfPages","groupIds","setGroupIds","apiCalled","setApiCalled","TransitionDiv","posed","div","enter","exit","PageTransitions","PoseGroup","flex","Routes","Switch","exact","LeaderBoardPage","GenericRoute","PageContainer","isLanding","NavBarMobileLink","NavBarMobile","App","showErrorView","setShowErrorView","checkUserData","promises","userDto","entryPromise","sweepstakesPromise","adjustedName","results","RegExp","exec","getUrlParams","search","sessionStorage","getFromSessionStorage","saveToSessionStorage","setInviteCode","_unused3","ieClass","document","body","classList","ConnectedRouter","HallmarkHeader","reload","ErrorBoundary","_React$Component","hasError","info","setState","smoothscroll","polyfill","breakpoints","small","medium","large","xlarge","Infinity","ReactDOM","BreakpointsProvider","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.30d7277a.chunk.js","sourcesContent":["import React from 'react';\r\n\r\nfunction FacebookIcon() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default FacebookIcon;\r\n","import React from 'react';\r\n\r\nfunction IconInstagram() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IconInstagram;\r\n","import React from 'react';\r\n\r\nfunction IconPinterest() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IconPinterest;\r\n","import React from 'react';\r\n\r\nfunction IconTwitter() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IconTwitter;\r\n","import React from 'react';\r\n\r\nfunction IconYoutube() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IconYoutube;\r\n","export default __webpack_public_path__ + \"static/media/HallmarkChannelLogo.8a5e9e53.svg\";","import React from \"react\";\r\n\r\nconst AdSlot = ({ slotId, height, width, classNames }) => (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport default AdSlot;\r\n","import React, { createContext, useContext, useRef } from 'react';\r\n\r\nconst createAdManager = () => {\r\n const { networkId, serverUrl, profileId, siteSectionId } = window.config;\r\n let adManager;\r\n try {\r\n window.tv.freewheel.SDK.setLogLevel(window.tv.freewheel.SDK.LOG_LEVEL_QUIET);\r\n adManager = new window.tv.freewheel.SDK.AdManager();\r\n adManager.setNetwork(networkId);\r\n adManager.setServer(serverUrl);\r\n adManager._context.setProfile(profileId);\r\n adManager._context.setSiteSection(siteSectionId);\r\n } catch{}\r\n return adManager;\r\n};\r\n\r\nconst FreewheelContext = createContext();\r\n\r\nexport const FreewheelProvider = ({ children }) => {\r\n const urlRef = useRef();\r\n const levelRef = useRef();\r\n\r\n const adManager = createAdManager();\r\n const { enableFreewheel } = window.config;\r\n\r\n function submitRequest(url, level) {\r\n if (enableFreewheel && adManager && (urlRef.current !== url || levelRef.current !== level)) {\r\n urlRef.current = url;\r\n levelRef.current = level;\r\n // this is to ensure we send request after react re-render\r\n setTimeout(() => {\r\n adManager.newContextWithContext(adManager._context);\r\n adManager._context.submitRequest();\r\n }, 10);\r\n }\r\n }\r\n const context = {\r\n submitRequest\r\n };\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const useFreewheelContext = () => useContext(FreewheelContext);","import { useRef } from 'react';\r\nimport { useFreewheelContext } from './provider';\r\n\r\nconst useFreewheel = () => {\r\n const { submitRequest } = useFreewheelContext();\r\n const sendRequest = (url: string, level: number) => submitRequest(url, level);\r\n const sendRequestRef = useRef(sendRequest);\r\n\r\n return sendRequestRef.current;\r\n};\r\n\r\nexport default useFreewheel;\r\n","import RootState from '../../types';\r\n\r\nexport const selectActiveLevel = (state: RootState) =>\r\n state.game.levelCompleted === state.game.totalNumberOfLevels ? 1 : state.game.levelCompleted + 1;\r\nexport const selectTotalNumberOfLevels = (state: RootState) => state.game.totalNumberOfLevels;\r\nexport const selectApiCallInProgress = (state: RootState) => state.game.apiCallInProgress;\r\n","import React, { useEffect } from 'react';\r\nimport AdSlot from './AdSlot';\r\nimport { withRouter } from 'react-router-dom';\r\nimport useFreewheel from '../../infrastructure/freewheel/useFreewheel';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectActiveLevel } from '../../slices/game/selectors';\r\n\r\nconst FooterAd = ({ location, shouldDisplay, classNames }) => {\r\n const freewheelRequest = useFreewheel();\r\n const activeLevel = useSelector(selectActiveLevel);\r\n\r\n useEffect(() => {\r\n if (shouldDisplay) {\r\n freewheelRequest(location.pathname, activeLevel);\r\n }\r\n }, [location, freewheelRequest, shouldDisplay, activeLevel]);\r\n if (!shouldDisplay) {\r\n return null;\r\n }\r\n return ;\r\n};\r\n\r\nexport default withRouter(FooterAd);\r\n","import React from 'react';\r\nimport IconFacebook from '../../images/social/footer_social_facebook';\r\nimport IconInstagram from '../../images/social/footer_social_instagram';\r\nimport IconPinterest from '../../images/social/footer_social_pinterest';\r\nimport IconTwitter from '../../images/social/footer_social_twitter';\r\nimport IconYoutube from '../../images/social/footer_social_youtube';\r\nimport HallmarkChannelLogo from '../../images/HallmarkChannelLogo.svg';\r\nimport FooterAd from '../Ads/FooterAd';\r\n\r\nconst renderIcons = {\r\n facebook: IconFacebook,\r\n twitter: IconTwitter,\r\n instagram: IconInstagram,\r\n pinterest: IconPinterest,\r\n youtube: IconYoutube,\r\n};\r\n\r\nfunction SocialIcon({ link, name, isWebView }) {\r\n const Icon = renderIcons[name];\r\n\r\n return (\r\n \r\n \r\n {name}\r\n \r\n );\r\n}\r\n\r\nconst HallmarkFooter = ({ shouldDisplay, isWebView }) => {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \"Hallmark\r\n \r\n
\r\n\r\n
\r\n
\r\n
Follow Us
\r\n\r\n
    \r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
Copyright © 2024 Hallmark Media, all rights reserved
\r\n
\r\n\r\n
\r\n
\r\n
Follow Us
\r\n\r\n
    \r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default HallmarkFooter;\r\n","import React from 'react';\r\n\r\ninterface HallmarkChannelLogoProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nconst HallmarkChannelLogo: React.FC = ({ className, color }) => {\r\n return (\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n );\r\n};\r\n\r\nexport default HallmarkChannelLogo;\r\n","import React from 'react';\r\n\r\ninterface LogoProps {\r\n type: 'horizontal' | 'stacked' | 'both';\r\n colors: Array;\r\n className?: string;\r\n}\r\n\r\nconst Logo = ({ type, colors, className }: LogoProps) => {\r\n const horizontalLogo = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n );\r\n\r\n const stackedLogo = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n );\r\n\r\n return (\r\n \r\n {type !== 'stacked' && horizontalLogo}\r\n {type !== 'horizontal' && stackedLogo}\r\n \r\n );\r\n};\r\n\r\nexport default Logo;\r\n","export default __webpack_public_path__ + \"static/media/sns_logo-horizontal.368ae29c.svg\";","import { compose, setDisplayName, wrapDisplayName, withProps } from 'recompose';\r\n\r\nconst withConfig = Component => \r\n compose(\r\n setDisplayName(wrapDisplayName(Component, 'withConfig')),\r\n withProps(() => ({\r\n config: window.config\r\n }))\r\n )(Component);\r\n\r\nexport default withConfig;","import { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\n\r\nconst selector = (state: RootState) => state.isWebView.webView ? '' : '_blank';\r\n\r\nconst useLinkTarget = () => {\r\n return useSelector(selector);\r\n}\r\n\r\nexport default useLinkTarget;","import React, { useState } from 'react';\r\nimport { HallmarkChannelLogo } from '../../images/logos';\r\nimport withConfig from '../../infrastructure/config/withConfig';\r\nimport { CSSTransition } from 'react-transition-group';\r\nimport { isIE } from 'react-device-detect';\r\nimport { compose } from 'recompose';\r\nimport useLinkTarget from '../../infrastructure/isWebView/useLinkTarget';\r\n\r\nconst HallmarkHeader = ({ config: { navBarColor, navBarLink, navBarFranchise } }) => {\r\n const [navOpen, setNavOpen] = useState(false);\r\n\r\n const linkTarget = useLinkTarget();\r\n const toggleNav = () => {\r\n setNavOpen(!navOpen);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n Channel Locator\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
    \r\n
  • \r\n \r\n Schedule\r\n \r\n
  • \r\n\r\n
  • \r\n \r\n Movies\r\n \r\n
  • \r\n {/*
  • \r\n \r\n {navBarFranchise}\r\n \r\n
  • */}\r\n
  • \r\n \r\n Christmas\r\n \r\n
  • \r\n
  • \r\n \r\n Shows\r\n \r\n
  • \r\n
  • \r\n \r\n Watch Live\r\n \r\n
  • \r\n
  • \r\n \r\n Channel Locator\r\n \r\n
  • \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\nconst enhance = compose(withConfig);\r\n\r\nexport default enhance(HallmarkHeader);\r\n","const shouldDisplayL = window.innerWidth > 1280;\r\nconst shouldDisplayXL = window.innerWidth > 1798;\r\nconst shouldShowMobileNavbar = window.innerWidth < 992;\r\n\r\nexport { shouldDisplayL, shouldDisplayXL, shouldShowMobileNavbar };\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { shouldDisplayL, shouldShowMobileNavbar } from '../../infrastructure/freewheel/breakpoints';\r\nimport AdSlot from './AdSlot';\r\nimport useFreewheel from '../../infrastructure/freewheel/useFreewheel';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectActiveLevel } from '../../slices/game/selectors';\r\nimport classNames from 'classnames';\r\nimport RootState from 'types';\r\n\r\nconst AnimatedBanner = () => {\r\n const urlRef = useRef('');\r\n const levelRef = useRef(0);\r\n const bannerTimer = useRef | null>(null);\r\n const animationTimer = useRef | null>(null);\r\n const location = useLocation();\r\n const [showBannerAd, setShowBannerAd] = useState(true);\r\n const [startFadeOut, setStartFadeout] = useState(false);\r\n const freewheelRequest = useFreewheel();\r\n const activeLevel = useSelector(selectActiveLevel);\r\n const { name: username } = useSelector((state: RootState) => state.user);\r\n\r\n useEffect(() => {\r\n if (urlRef.current !== location.pathname || levelRef.current !== activeLevel) {\r\n setShowBannerAd(true);\r\n setStartFadeout(false);\r\n urlRef.current = location.pathname;\r\n levelRef.current = activeLevel;\r\n freewheelRequest(location.pathname, activeLevel);\r\n bannerTimer.current = setTimeout(() => {\r\n setShowBannerAd(false);\r\n }, 9900);\r\n animationTimer.current = setTimeout(() => {\r\n setStartFadeout(true);\r\n }, 9000);\r\n }\r\n\r\n return () => {\r\n if (bannerTimer.current) {\r\n clearTimeout(bannerTimer.current);\r\n }\r\n if (animationTimer.current) {\r\n clearTimeout(animationTimer.current);\r\n }\r\n };\r\n }, [freewheelRequest, location.pathname, activeLevel]);\r\n\r\n return showBannerAd ? (\r\n \r\n ) : null;\r\n};\r\n\r\nexport default AnimatedBanner;\r\n","export const LandingRoute = '/';\r\nexport const FormRoute = '/signup';\r\nexport const LeaderboardRoute = '/leaderboard';\r\nexport const GameRoute = '/game';\r\nexport const RulesRoute = '/rules';\r\nexport const ProfileRoute = '/profile';\r\nexport const GroupIndexRoute = '/groups';\r\nexport const GroupListPageRoute = `/group-list`;\r\n\r\nexport const UrlNameKey = 'urlPath';\r\nexport const UrlNameKeyWithColon = `:${UrlNameKey}`;\r\nexport const GroupDetailPageRoute = `/group/${UrlNameKeyWithColon}`;\r\nexport const GroupInvitePageRoute = `/group-invite/${UrlNameKeyWithColon}`;\r\n","import React, { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport AdSlot from './AdSlot';\r\nimport useFreewheel from '../../infrastructure/freewheel/useFreewheel';\r\nimport { selectActiveLevel } from '../../slices/game/selectors';\r\nimport { FormRoute, LandingRoute } from 'constants/Routes';\r\nimport classNames from 'classnames';\r\n\r\ninterface FixedAdProps {\r\n shouldDisplayL: boolean;\r\n hideAd?: boolean;\r\n}\r\n\r\nconst FixedAd: React.FC = ({ shouldDisplayL, hideAd }) => {\r\n const freewheelRequest = useFreewheel();\r\n const location = useLocation();\r\n const activeLevel = useSelector(selectActiveLevel);\r\n\r\n const { name: username } = useSelector((state: RootState) => state.user);\r\n\r\n const isNavBarHidden = ['/', '/signup'].includes(location.pathname) && !username;\r\n\r\n const isLandingPage = location.pathname === LandingRoute;\r\n const isFormPage = location.pathname === FormRoute;\r\n\r\n useEffect(() => {\r\n if (shouldDisplayL && !hideAd) {\r\n freewheelRequest(location.pathname, activeLevel);\r\n }\r\n // eslint-disable-next-line\r\n }, [location, freewheelRequest, shouldDisplayL, activeLevel]);\r\n\r\n if (!shouldDisplayL || hideAd) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FixedAd;\r\n","import RootState from '../../types';\r\n\r\nexport const selectIsCurrentSweepstake = (state: RootState) =>\r\n Boolean(state.sweepstake.currentSweepstakeName && state.sweepstake.currentSweepstakeEnd);\r\n\r\n// export const selectIsCurrentSweepstake = (state: RootState) => false;\r\n","export default __webpack_public_path__ + \"static/media/hallmark-crown-golden.7c168e26.webp\";","export default __webpack_public_path__ + \"static/media/hallmark-orange-crown.0cf35169.svg\";","import React from 'react';\r\n\r\nimport hallmarkCrownSweepstakes from '../../images/icons/hallmark-crown-golden.webp';\r\nimport hallmarkCrown from '../../images/icons/hallmark-orange-crown.svg';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectIsCurrentSweepstake } from 'slices/sweepstakes/selectors';\r\nimport classNames from 'classnames';\r\n\r\nconst HallmarkCrown = () => {\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n return (\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default HallmarkCrown;\r\n","export default __webpack_public_path__ + \"static/media/princess-logo-landing-stacked.4080ebd9.svg\";","export default __webpack_public_path__ + \"static/media/princess-logo-landing-horizontal.4077cab1.svg\";","export interface config {\r\n apiShareUrl: string;\r\n apiUrl: string;\r\n appUrl: string;\r\n crossDomainGoogleAnalyticsWebPropertyId: string;\r\n crossDomainGooglev4AnalyticsWebPropertyId: string;\r\n enableComScore: boolean;\r\n enableFreewheel: boolean;\r\n enableGoogleAnalytics: boolean;\r\n facebookAppId: string;\r\n googleAnalyticsWebPropertyId: string;\r\n navBarColor: string;\r\n navBarFranchise: string;\r\n navBarLink: string;\r\n networkId: number;\r\n profileId: string;\r\n serverUrl: string;\r\n siteSectionId: string;\r\n tweet: string;\r\n pinterestDescription: string;\r\n gameAssetUrl: string;\r\n enableShareEntries: boolean;\r\n facebookQuote: string;\r\n cookieDomain: string;\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n config: config;\r\n gtag: any;\r\n COMSCORE: any;\r\n s: any;\r\n formEntryTimeout?: ReturnType;\r\n tv: any;\r\n }\r\n}\r\n\r\nconst GetConfig = () => {\r\n return window.config;\r\n};\r\n\r\nexport default GetConfig;\r\n","export const landingPage = \"Hallmark Channel's Matching Moments - Landing Page\";\r\nexport const profilePage = \"Hallmark Channel's Matching Moments - Profile Page\";\r\nexport const formPage = \"Hallmark Channel's Matching Moments - Form Page\";\r\nexport const gameIntroModal = \"Hallmark Channel's Matching Moments - Game Intro Modal\";\r\nexport const gamePage = \"Hallmark Channel's Matching Moments - Game Screen\";\r\nexport const nextLevelModal = \"Hallmark Channel's Matching Moments - Next Level Modal\";\r\nexport const gameCompleteModal = \"Hallmark Channel's Matching Moments - Game Complete Modal\";\r\nexport const leaderboardWeeklyPage = \"Hallmark Channel's Matching Moments - Leaderboard Weekly\";\r\nexport const leaderboardOverallPage = \"Hallmark Channel's Matching Moments - Leaderboard Overall\";\r\nexport const leaderboardGroupPage = \"Hallmark Channel's Matching Moments - Leaderboard Group\";\r\nexport const gameOverTimeUpModal = \"Hallmark Channel's Matching Moments - Game Over Modal - Out of Time\";\r\nexport const returningUserModal = \"Hallmark Channel's Matching Moments - Continue/Restart Game Modal\";\r\nexport const gameOverNoMoreMovesModal = \"Hallmark Channel's Matching Moments - Game Over Modal - No More Moves\";\r\n\r\nexport const groupDetailsPage = \"Hallmark Channel's Matching Moments - Group Details Page\";\r\nexport const groupIndexPage = \"Hallmark Channel's Matching Moments - Group Index Page\";\r\nexport const groupPublicPage = \"Hallmark Channel's Matching Moments - Group Public Page \";\r\n\r\nexport const gamePausedModal = \"Hallmark Channel's Matching Moments - Game Paused Modal\";\r\nexport const gameHelpModal = \"Hallmark Channel's Matching Moments - Game Help Modal\";\r\nexport const rulesPage = \"Hallmark Channel's Matching Moments - Rules\";\r\n","import GetConfig, { config } from '../../helpers/GetConfig';\r\nimport { gameIntroModal, gamePage, returningUserModal } from '../../types/pageNameContants';\r\n\r\ninterface EventProperties {\r\n event_category: string;\r\n send_to: string;\r\n event_label?: string;\r\n}\r\nconst sendToComScore: (config: config) => void = ({ enableComScore }) => {\r\n if (enableComScore && window.COMSCORE) {\r\n window.COMSCORE.beacon({ c1: '2', c2: '8272010' });\r\n fetch('/pageview_candidate.txt');\r\n }\r\n};\r\n\r\nexport const trackEvent: (category: string, action: string, label?: string) => void = (category, action, label) => {\r\n const { enableGoogleAnalytics, googleAnalyticsWebPropertyId } = GetConfig();\r\n console.log('trackEvent', category, action, label);\r\n if (window.gtag && enableGoogleAnalytics) {\r\n const properties: EventProperties = {\r\n event_category: category,\r\n send_to: googleAnalyticsWebPropertyId,\r\n };\r\n if (label) {\r\n properties['event_label'] = label;\r\n }\r\n window.gtag('event', action, properties);\r\n }\r\n};\r\n\r\nexport const trackPageView: (pageTitle: string, pagePath: string, forcePageViewTrack?: boolean) => void = (\r\n pageTitle,\r\n pagePath,\r\n forcePageViewTrack\r\n) => {\r\n const config = GetConfig();\r\n const gaEnabled = config.enableGoogleAnalytics;\r\n sendToComScore(config);\r\n if (window.gtag && gaEnabled) {\r\n const properties = {\r\n page_title: pageTitle,\r\n page_path: pagePath,\r\n };\r\n window.gtag('config', config.googleAnalyticsWebPropertyId, properties);\r\n\r\n const crossDomainProperties = {\r\n page_title: pageTitle,\r\n page_path: `/matching-moments${pagePath}`,\r\n };\r\n window.gtag('config', config.crossDomainGoogleAnalyticsWebPropertyId, crossDomainProperties);\r\n\r\n if (\r\n forcePageViewTrack ||\r\n pageTitle === gamePage ||\r\n (pageTitle.includes('Modal') && pageTitle !== gameIntroModal && pageTitle !== returningUserModal)\r\n ) {\r\n const crossDomainGa4Properties = {\r\n page_title: pageTitle,\r\n page_location: `${config.appUrl.replace(/\\/$/, '')}${pagePath}`,\r\n send_to: config.crossDomainGooglev4AnalyticsWebPropertyId,\r\n };\r\n window.gtag('event', 'page_view', crossDomainGa4Properties);\r\n }\r\n }\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport logoStacked from 'images/loveuary2024/princess-logo-landing-stacked.svg';\r\nimport logoHorizontal from 'images/loveuary2024/princess-logo-landing-horizontal.svg';\r\nimport { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\n\r\nconst SponsorLogo = ({ type }: { type: 'stacked' | 'horizontal' }) => {\r\n const isStacked = type === 'stacked';\r\n\r\n return (\r\n
\r\n

Presented by

\r\n trackEvent('Princess Cruises Logo', 'Princess Cruises Click', 'Landing')}\r\n >\r\n \"Princess\r\n \"Princess\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SponsorLogo;\r\n","import React from 'react';\r\nimport { HallmarkChannelLogo, Logo } from '../../../images/logos';\r\n// import { Step1, Step2, Step3 } from '../../../images/icons';\r\nimport './LandingHeader.scss';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectIsCurrentSweepstake } from '../../../slices/sweepstakes/selectors';\r\nimport HallmarkCrown from '../../Shared/HallmarkCrown';\r\nimport RootState from 'types';\r\nimport SponsorLogo from './SponsorLogo';\r\n\r\ninterface LandingHeaderProps {\r\n page: 'landing' | 'signup';\r\n children: JSX.Element;\r\n}\r\n\r\nconst LandingHeader = ({ page, children }: LandingHeaderProps) => {\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n const gradientColors = ['#802595', '#802595', '#802595'];\r\n const { id: userId, acceptedRules } = useSelector((state: RootState) => state.user);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {isCurrentSweepstake ? : null}\r\n
\r\n {isCurrentSweepstake ? (\r\n
\r\n {isCurrentSweepstake ? : null}\r\n\r\n \r\n {/*

\r\n Enter and play for a chance to win each week a:\r\n

*/}\r\n

\r\n Enter for a chance to win a Cruise for Two from Princess.*\r\n

\r\n

Return Daily for Bonus Entries

\r\n
\r\n *awarded in the form of a $3,100 USD digital Princess Cruises\r\n promotional card\r\n
\r\n\r\n {children}\r\n
\r\n ) : (\r\n <>\r\n
\r\n \r\n

\r\n Enter and play to see if you can complete all of Hallmark Channel’s Matching Moments!\r\n

\r\n {children}\r\n
\r\n \r\n )}\r\n\r\n {/* {page === 'landing' && isCurrentSweepstake && (\r\n \r\n
\r\n \r\n
\r\n 10\r\n Weeks\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n 10\r\n Sweepstakes\r\n
\r\n
\r\n
\r\n \r\n
\r\n 10\r\n Prize Draws\r\n
\r\n
\r\n
\r\n )} */}\r\n \r\n );\r\n};\r\n\r\nexport default LandingHeader;\r\n","import Axios, { AxiosPromise } from 'axios';\r\nimport GetConfig from '../../helpers/GetConfig';\r\n\r\nconst CallApi: (url: string, method: string, data?: object) => AxiosPromise = (url, method, data) => {\r\n const { apiUrl } = GetConfig();\r\n\r\n const request = {\r\n method,\r\n url: `${apiUrl}${url}`,\r\n headers: {\r\n Pragma: 'no-cache',\r\n },\r\n };\r\n if (method && (method.toUpperCase() === 'POST' || method.toUpperCase() === 'PUT')) {\r\n if (data) {\r\n /* @ts-ignore */\r\n request.data = data;\r\n }\r\n /* @ts-ignore */\r\n request.headers['Content-Type'] = 'application/json';\r\n }\r\n /* @ts-ignore */\r\n return Axios(request) as AxiosPromise;\r\n};\r\n\r\nexport default CallApi;\r\n","import { LimitedEditionBadgeDto } from '../../types/UserProfile';\r\nexport const LOGIN = 'LOGIN';\r\nexport const LOGOUT = 'LOGOUT';\r\nexport const SEENMODAL = 'SEENMODAL';\r\nexport const SETENTRYCOUNT = 'SETENTRYCOUNT';\r\nexport const SETHIGHSCORE = 'SETHIGHSCORE';\r\nexport const SETPROFILEIMAGE = 'SETPROFILEIMAGE';\r\n\r\nexport interface LoginAction {\r\n type: typeof LOGIN;\r\n id: string;\r\n emailAddress: string;\r\n name: string;\r\n entryCount: number;\r\n grandPrizeCount: number;\r\n lastLevelPlayed: number;\r\n currentScore: number;\r\n highScore: number;\r\n shareCode: string;\r\n shufflesRemaining?: number;\r\n hintsRemaining?: number;\r\n newFormEntryAdded: boolean;\r\n currentSweepstakeEnd: string | null;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n nextSweepstakeStart: string | null;\r\n acceptedRules: boolean;\r\n totalSecondsRemaining: number;\r\n badgeCount: number;\r\n isNew: boolean;\r\n profileImage: number;\r\n hasVideoEntryAwarded: boolean;\r\n}\r\n\r\nexport interface SetEntryCount {\r\n type: typeof SETENTRYCOUNT;\r\n entryCount: number;\r\n grandPrizeCount: number;\r\n newFormEntryAdded: boolean;\r\n acceptedRules: boolean;\r\n currentSweepstakeEnd: string | null;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n nextSweepstakeStart: string | null;\r\n badgeCount: number;\r\n newBadgeNotification: LimitedEditionBadgeDto | null;\r\n profileImage: number;\r\n hasVideoEntryAwarded: boolean;\r\n}\r\n\r\nexport interface LogoutAction {\r\n type: typeof LOGOUT;\r\n}\r\n\r\nexport interface SeenModalAction {\r\n type: typeof SEENMODAL;\r\n}\r\n\r\nexport interface SetHighScoreAction {\r\n type: typeof SETHIGHSCORE;\r\n score: number;\r\n}\r\n\r\nexport interface SetProfileImage {\r\n type: typeof SETPROFILEIMAGE;\r\n profileImage: number;\r\n}\r\n\r\nexport type UserActionTypes =\r\n | LoginAction\r\n | LogoutAction\r\n | SeenModalAction\r\n | SetEntryCount\r\n | SetHighScoreAction\r\n | SetProfileImage;\r\n","import { LOGIN, LOGOUT, SEENMODAL, SETENTRYCOUNT, UserActionTypes, SETHIGHSCORE, SETPROFILEIMAGE } from './actionTypes';\r\nimport { UserDto, EntryCountDto } from '../../types';\r\n\r\nexport function login(user: UserDto): UserActionTypes {\r\n return { type: LOGIN, ...user };\r\n}\r\n\r\nexport function logout(): UserActionTypes {\r\n return { type: LOGOUT };\r\n}\r\n\r\nexport function viewedModal(): UserActionTypes {\r\n return { type: SEENMODAL };\r\n}\r\n\r\nexport function setEntryCount(dto: EntryCountDto): UserActionTypes {\r\n return { type: SETENTRYCOUNT, ...dto };\r\n}\r\n\r\nexport function setHighScore(score: number): UserActionTypes {\r\n return { type: SETHIGHSCORE, score };\r\n}\r\n\r\nexport function setProfileImage(profileImage: number): UserActionTypes {\r\n return { type: SETPROFILEIMAGE, profileImage };\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from 'react';\r\nimport callApi from '../../../infrastructure/api/CallApi';\r\n\r\nimport './CountdownTimer.scss';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport RootState, { EntryCountDto } from '../../../types/index';\r\nimport { setEntryCount } from '../../../slices/users/actions';\r\ninterface CountdownResponse {\r\n secondsRemaining: number;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n}\r\n\r\ninterface CountdownDetails {\r\n totalSecondsRemaining: number;\r\n days: string;\r\n hours: string;\r\n minutes: string;\r\n seconds: string;\r\n}\r\n\r\ninterface CountdownTimerProps {\r\n className?: string;\r\n}\r\n\r\nconst getSecondsRemaining: (\r\n countdownDetails: CountdownDetails | undefined,\r\n countdownResponse: CountdownResponse | undefined\r\n) => number = (countdownDetails, countdownResponse) => {\r\n if (countdownDetails) {\r\n return countdownDetails.totalSecondsRemaining;\r\n }\r\n return countdownResponse?.secondsRemaining || 0;\r\n};\r\n\r\nconst floorAndPad = (value: number) => Math.floor(value).toString().padStart(2, '0');\r\n\r\nconst second = 1;\r\nconst minute = second * 60;\r\nconst hour = minute * 60;\r\nconst day = hour * 24;\r\n\r\nconst CountdownTimer: React.FC = ({ className }) => {\r\n const [loading, setLoading] = useState(true);\r\n const [countdownResponse, setCountdownResponse] = useState();\r\n const [countdownDetails, setCountdownDetails] = useState();\r\n const userId = useSelector((state: RootState) => state.user.id);\r\n const dispatch = useDispatch();\r\n\r\n const getCountdownDetailsFromApi = () => {\r\n callApi('api/app/sweepstake-countdown/countdown', 'GET').then(({ data }) => {\r\n setCountdownResponse(data);\r\n setLoading(false);\r\n if (countdownDetails && countdownDetails.totalSecondsRemaining <= 0 && data.secondsRemaining > 0) {\r\n setCountdownDetails({\r\n ...countdownDetails,\r\n totalSecondsRemaining: data.secondsRemaining,\r\n });\r\n }\r\n });\r\n };\r\n\r\n const updateCountdown = () => {\r\n const totalSecondsRemaining = getSecondsRemaining(countdownDetails, countdownResponse);\r\n if (totalSecondsRemaining !== undefined) {\r\n if (totalSecondsRemaining <= 0) {\r\n setCountdownDetails({\r\n days: '00',\r\n hours: '00',\r\n minutes: '00',\r\n seconds: '00',\r\n totalSecondsRemaining: -1,\r\n });\r\n if (countdownResponse?.nextSweepstakeName) {\r\n getCountdownDetailsFromApi();\r\n callApi(`api/app/form-entry/enter-existing-user/${userId}`, 'POST').then(\r\n ({ data }) => {\r\n dispatch(setEntryCount(data)); \r\n }\r\n );\r\n }\r\n return;\r\n }\r\n setCountdownDetails({\r\n totalSecondsRemaining: totalSecondsRemaining - 1,\r\n days: floorAndPad(totalSecondsRemaining / day),\r\n hours: floorAndPad((totalSecondsRemaining % day) / hour),\r\n minutes: floorAndPad((totalSecondsRemaining % hour) / minute),\r\n seconds: floorAndPad((totalSecondsRemaining % minute) / second),\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getCountdownDetailsFromApi();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!countdownDetails || countdownDetails.totalSecondsRemaining >= 0) {\r\n const timeout = setTimeout(updateCountdown, 1000);\r\n return () => clearTimeout(timeout);\r\n }\r\n }, [countdownDetails, countdownResponse]);\r\n\r\n if (\r\n loading ||\r\n !countdownDetails ||\r\n !countdownResponse ||\r\n (!countdownResponse.currentSweepstakeName && !countdownResponse.nextSweepstakeName)\r\n ) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n

\r\n {countdownResponse?.nextSweepstakeName && {countdownResponse.nextSweepstakeName} Starts In }\r\n {!countdownResponse?.nextSweepstakeName && countdownResponse?.currentSweepstakeName && (\r\n {countdownResponse.currentSweepstakeName} Ends In \r\n )}\r\n

\r\n
\r\n

\r\n {countdownResponse?.nextSweepstakeName && {countdownResponse.nextSweepstakeName} Starts In }\r\n {!countdownResponse?.nextSweepstakeName && countdownResponse?.currentSweepstakeName && (\r\n {countdownResponse.currentSweepstakeName} Ends In \r\n )}\r\n

\r\n
\r\n

{countdownDetails.days}

\r\n
\r\n
\r\n

:

\r\n
\r\n
\r\n

{countdownDetails.hours}

\r\n
\r\n
\r\n

:

\r\n
\r\n
\r\n

{countdownDetails.minutes}

\r\n
\r\n
\r\n

:

\r\n
\r\n
\r\n

{countdownDetails.seconds}

\r\n
\r\n
\r\n
\r\n
\r\n

Days

\r\n
\r\n
\r\n

Hours

\r\n
\r\n
\r\n

Minutes

\r\n
\r\n
\r\n

Seconds

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CountdownTimer;\r\n","import React from 'react';\r\n\r\nconst ArrowRight = ({ className }: { className?: string }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowRight;\r\n","import React from 'react';\r\nimport { Button as BootstrapButton } from 'react-bootstrap';\r\nimport { ButtonProps } from './types';\r\nimport ArrowRight from '../../images/chex2023/icons/ArrowRight';\r\n\r\nconst Button = ({ children, isLoading, iconBefore, className, style, iconOnly, withArrow, ...props }: ButtonProps) => {\r\n return (\r\n \r\n \r\n \r\n {withArrow && iconBefore && } {children} {withArrow && !iconBefore && }\r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import { useState, useEffect } from 'react';\r\n\r\nfunction getWindowDimensions() {\r\n const { innerWidth: windowWidth, innerHeight: windowHeight } = window;\r\n return {\r\n windowWidth,\r\n windowHeight,\r\n };\r\n}\r\n\r\nexport default function useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions());\r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n}","import React from 'react';\r\n\r\ninterface ArrowLeftProps {\r\n className?: string;\r\n}\r\n\r\nconst ArrowLeft: React.FC = ({ className }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowLeft;\r\n","import React from 'react';\r\n\r\ninterface CloseProps {\r\n className?: string;\r\n}\r\n\r\nconst Close: React.FC = ({ className }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Close;\r\n","import React from \"react\";\r\n\r\ninterface FacebookProps {\r\n className?: string;\r\n}\r\n\r\nconst Facebook: React.FC = ({ className }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Facebook;\r\n","import React from \"react\";\r\n\r\ninterface PinterestProps {\r\n className?: string;\r\n}\r\n\r\nconst Pinterest: React.FC = ({ className }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Pinterest;\r\n","import React from 'react';\r\n\r\ninterface TwitterProps {\r\n className?: string;\r\n}\r\n\r\nconst Twitter: React.FC = ({ className }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Twitter;\r\n","export default __webpack_public_path__ + \"static/media/playCircle-default.642d2916.png\";","export default __webpack_public_path__ + \"static/media/leaf1.b21c6672.svg\";","export default __webpack_public_path__ + \"static/media/leaf2.66b782d5.svg\";","export default __webpack_public_path__ + \"static/media/leaf3.271f44f4.svg\";","export default __webpack_public_path__ + \"static/media/leaf4.49249bbe.svg\";","export default __webpack_public_path__ + \"static/media/leaf5.9c080d0a.svg\";","export default __webpack_public_path__ + \"static/media/leaf6.bc4e3f78.svg\";","export default __webpack_public_path__ + \"static/media/leaf7.efba0724.svg\";","export default __webpack_public_path__ + \"static/media/playCircle.43a058e2.png\";","export default __webpack_public_path__ + \"static/media/finishedCircle.7197e268.png\";","export default __webpack_public_path__ + \"static/media/circleStreak.8db1b4ec.png\";","export default __webpack_public_path__ + \"static/media/circleTick.038cde8f.png\";","export default __webpack_public_path__ + \"static/media/circleClock.652982fb.png\";","export default __webpack_public_path__ + \"static/media/circleLeaderboard.a99f03c6.png\";","export default __webpack_public_path__ + \"static/media/finishedCircle-default.af5f5f45.png\";","export default __webpack_public_path__ + \"static/media/circleStreak-default.cefa23d8.png\";","export default __webpack_public_path__ + \"static/media/circleTick-default.e0e3bd75.png\";","export default __webpack_public_path__ + \"static/media/circleClock-default.e92b8cc7.png\";","export default __webpack_public_path__ + \"static/media/circleLeaderboard-default.edf4d59e.png\";","export default __webpack_public_path__ + \"static/media/iconShield.3a010a91.svg\";","export default __webpack_public_path__ + \"static/media/groupMembers.aea53265.svg\";","export default __webpack_public_path__ + \"static/media/unlocked.0e72f0d9.svg\";","export default __webpack_public_path__ + \"static/media/groupMembersRed.3ec539f2.svg\";","export const localStorageKey = 'HallmarkMatchingMomentsAuth';\r\nexport const localStorageModalViewedKey = 'HallmarkMatchingMomentsModalViewed';\r\nexport const localStorageSavedTotalKey = 'HallmarkMatchingMomentsTotal';\r\nexport const localStorageShowStarAnimationKey = 'HallmarkMatchingMomentsShowStarAnimation';\r\nexport const localStorageLandingModalViewedKey = 'HallmarkMatchingMomentsLandingModalViewed';\r\nexport const localStorageBadgeNotificationKey = 'HallmarkMatchingMomentsLastBadgeNotifictionViewed';\r\n\r\nexport const pageNameFormPage = \"Hallmark Channel's Matching Moments - Sign up\";\r\nexport const pageNameDeedsListPage = \"Hallmark Channel's Matching Moments - Deeds List\";\r\nexport const pageNameHowItWorksPage = \"Hallmark Channel's Matching Moments - How It Works\";\r\nexport const pageNameIntroPage = \"Hallmark Channel's Matching Moments - Intro Modal\";\r\n","const GetRouteName: (pathname: string, showHelp: boolean) => string = (pathname, showHelp) => {\r\n const pathNameWithoutSlash = pathname.replace(/\\/$/, '');\r\n switch (pathNameWithoutSlash) {\r\n case '/game':\r\n return showHelp ? 'Game Help Modal' : 'Game Screen';\r\n case '/leaderboard':\r\n return 'Leaderboard';\r\n case '/rules':\r\n return 'Rules';\r\n default:\r\n return 'Landing';\r\n }\r\n};\r\n\r\nexport default GetRouteName;\r\n","const getProfileImage = (imageNumber: number) =>\r\n `https://1240369105.rsc.cdn77.org/matchingmoments/profileimages/image-${imageNumber}.png`;\r\n\r\nexport default getProfileImage;\r\n","export default __webpack_public_path__ + \"static/media/princess-cruises-nav-horizontal.668b6ab1.svg\";","export default __webpack_public_path__ + \"static/media/princess-cruises-nav-vertical.5911b0d2.svg\";","import React from 'react';\r\n\r\nconst PlayIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PlayIcon;\r\n","import React from 'react';\r\n\r\nconst LeaderboardIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LeaderboardIcon;\r\n","import React from 'react';\r\n\r\nconst GroupsIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default GroupsIcon;\r\n","import React from 'react';\r\n\r\nconst ProfileIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProfileIcon;\r\n","import React from 'react';\r\nimport PlayIcon from './icons/PlayIcon';\r\nimport LeaderboardIcon from './icons/LeaderboardIcon';\r\nimport GroupsIcon from './icons/GroupsIcon';\r\nimport ProfileIcon from './icons/ProfileIcon';\r\nimport { GameRoute, LeaderboardRoute, GroupIndexRoute, ProfileRoute } from 'constants/Routes';\r\n\r\nexport const getNavbarUrl = (title: string) => {\r\n switch (title) {\r\n case 'Play':\r\n return GameRoute;\r\n case 'Leaderboard':\r\n return LeaderboardRoute;\r\n case 'Groups':\r\n return GroupIndexRoute;\r\n case 'Profile':\r\n return ProfileRoute;\r\n default:\r\n return '/';\r\n }\r\n};\r\n\r\nexport const getNavbarIcon = (title: string) => {\r\n switch (title) {\r\n case 'Play':\r\n return ;\r\n case 'Leaderboard':\r\n return ;\r\n case 'Groups':\r\n return ;\r\n case 'Profile':\r\n return ;\r\n }\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react';\r\nimport { Link, useHistory, useLocation } from 'react-router-dom';\r\nimport { Logo } from '../../../images/logos';\r\nimport RootState from '../../../types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { CountdownTimer } from '../CountdownTimer';\r\nimport { selectIsCurrentSweepstake } from '../../../slices/sweepstakes/selectors';\r\nimport Button from '../../Layout/Button';\r\nimport './NavBar.scss';\r\nimport useWindowDimensions from '../../../infrastructure/hooks/useWindowDimensions';\r\nimport {\r\n GameRoute,\r\n GroupIndexRoute,\r\n GroupListPageRoute,\r\n LeaderboardRoute,\r\n ProfileRoute,\r\n} from '../../../constants/Routes';\r\nimport { iconShield } from '../../../images/icons';\r\nimport { localStorageKey } from '../../../constants';\r\nimport GetRouteName from '../../../helpers/GetRouteName';\r\nimport { trackEvent } from '../../../infrastructure/tracking/GoogleAnalytics';\r\nimport { logout } from '../../../slices/users/actions';\r\nimport getProfileImage from '../../../helpers/GetProfileImage';\r\nimport classNames from 'classnames';\r\nimport logoDesktop from '../../../images/loveuary2024/princess-cruises-nav-horizontal.svg';\r\nimport logoMobile from '../../../images/loveuary2024/princess-cruises-nav-vertical.svg';\r\n// import SponsorLogo from '../../SponsorLogo';\r\nimport { getNavbarUrl } from './utils';\r\n\r\nconst NavBar = () => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const showHelpModal = useSelector((state: RootState) => state.game.showHelpModal);\r\n\r\n const location = useLocation();\r\n const { windowWidth } = useWindowDimensions();\r\n const { name: username, badgeCount, profileImage } = useSelector((state: RootState) => state.user);\r\n\r\n const { entryCount, grandPrizeCount, currentSweepstakeName, nextSweepstakeName, nextSweepstakeStart } = useSelector(\r\n (state: RootState) => state.sweepstake\r\n );\r\n\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n const isNavBarHidden = ['/', '/signup'].includes(location.pathname) && !username;\r\n\r\n const onLogoutClick = () => {\r\n dispatch(logout());\r\n try {\r\n localStorage.removeItem(localStorageKey);\r\n } catch {}\r\n const label = GetRouteName(location.pathname, showHelpModal);\r\n trackEvent('Log out', 'Log out Success', label);\r\n try {\r\n if (window.formEntryTimeout) {\r\n clearTimeout(window.formEntryTimeout);\r\n }\r\n } catch {}\r\n history.push('/');\r\n };\r\n\r\n if (isNavBarHidden) {\r\n return null;\r\n }\r\n\r\n const isTest = true;\r\n\r\n if (isTest) {\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {/* */}\r\n
\r\n
\r\n \r\n \r\n \r\n {isCurrentSweepstake ? (\r\n
\r\n

Presented by

\r\n trackEvent('Princess Cruises Nav Bar', 'Princess Cruises Click', 'Navbar')}\r\n >\r\n \"Princess\r\n \r\n
\r\n ) : null}\r\n
\r\n {isCurrentSweepstake ? (\r\n
\r\n

Presented by

\r\n trackEvent('Princess Cruises Nav Bar', 'Princess Cruises Click', 'Navbar')}\r\n >\r\n \"Chex\"\r\n \r\n
\r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {username && isCurrentSweepstake ? (\r\n
\r\n
Entries
\r\n 99 ? 'text-xs' : entryCount > 9 ? 'text-sm' : 'text-base')}>\r\n {entryCount}\r\n \r\n
\r\n ) : null}\r\n\r\n {username && (\r\n <>\r\n

\r\n Welcome, {username}\r\n

\r\n \r\n {username}\r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n \"\"\r\n {badgeCount}\r\n
\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n );\r\n }\r\n return (\r\n \r\n
\r\n {username && isCurrentSweepstake && (\r\n <>\r\n
\r\n
\r\n

{entryCount}

\r\n
\r\n

\r\n {currentSweepstakeName && (\r\n <>\r\n {currentSweepstakeName}\r\n
\r\n \r\n )}\r\n Prize\r\n

\r\n
\r\n
\r\n
\r\n

{grandPrizeCount}

\r\n
\r\n

\r\n {currentSweepstakeName && (\r\n <>\r\n Grand
Prize\r\n \r\n )}\r\n

\r\n
\r\n \r\n )}\r\n {isCurrentSweepstake && (windowWidth < 576 || windowWidth >= 1200) && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n {isCurrentSweepstake && windowWidth >= 576 && windowWidth < 1200 && (\r\n \r\n )}\r\n
\r\n {username && isCurrentSweepstake && (\r\n
\r\n
\r\n
\r\n

{entryCount}

\r\n
\r\n

\r\n {currentSweepstakeName && (\r\n <>\r\n {currentSweepstakeName}\r\n
\r\n \r\n )}\r\n Prize\r\n

\r\n
\r\n
\r\n
\r\n

{grandPrizeCount}

\r\n
\r\n

\r\n {currentSweepstakeName && (\r\n <>\r\n Grand
Prize\r\n \r\n )}\r\n

\r\n
\r\n
\r\n )}\r\n\r\n
\r\n {username && (\r\n <>\r\n <>\r\n

\r\n Welcome, {username}\r\n

\r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n \r\n \r\n )}\r\n {username && (\r\n <>\r\n
\r\n \"shield\"\r\n {badgeCount}\r\n
\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nconst NavbarLink = ({ title, isCurrentRoute }: { title: string; isCurrentRoute: boolean }) => {\r\n return (\r\n \r\n {title}\r\n {isCurrentRoute &&
}\r\n \r\n );\r\n};\r\n\r\nexport default NavBar;\r\n","export default __webpack_public_path__ + \"static/media/dont-miss-out.b6f3e4de.webp\";","import React from 'react';\r\n// import { Clock } from '../../../images/icons';\r\n\r\nimport './SweepstakesCallout.scss';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../../types/index';\r\nimport dontMissOutCopy from '../../../images/loveuary2024/dont-miss-out.webp';\r\n\r\ninterface SweepstakesCalloutProps {\r\n withButton?: boolean;\r\n}\r\n\r\nconst SweepstakesCallout = ({ withButton }: SweepstakesCalloutProps) => {\r\n // const clockColorsSweepstakes = ['#0E5432', '#FFFFFF', '#EE2D24', '#D2E1D7'];\r\n // const clockColors = ['#0E5432', '#FFFFFF', '#EE2D24', '#D2E1D7', '#D2E1D7']; // TODO: do we need different colors?\r\n const landingPageText = useSelector((state: RootState) => state.gameConfig.landingPageText);\r\n\r\n return (\r\n
\r\n {/* */}\r\n
\r\n
\r\n \"Don't\r\n {landingPageText &&
}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SweepstakesCallout;\r\n","import { SetSweepstakes } from '../sweepstakes/actionTypes';\r\nimport { LoginAction, SetEntryCount } from '../users/actionTypes';\r\n\r\nexport const SETSCOREONLEVELCOMPLETE = 'SETSCOREONLEVELCOMPLETE';\r\nexport const SETSCORE = 'SETSCORE';\r\nexport const ADDTIMEBONUS = 'ADDTIMEBONUS';\r\nexport const STARTLEVEL = 'STARTLEVEL';\r\nexport const UPDATESHUFFLECOUNT = 'UPDATESHUFFLECOUNT';\r\nexport const UPDATEHINTCOUNT = 'UPDATEHINTCOUNT';\r\nexport const RESTARTGAME = 'RESTARTGAME';\r\nexport const SETNOPOSSIBLEMOVES = 'SETNOPOSSIBLEMOVES';\r\nexport const GAMEOVER = 'GAMEOVER';\r\nexport const TOGGLESOUND = 'TOGGLESOUND';\r\nexport const TOGGLEPAUSED = 'TOGGLEPAUSED';\r\nexport const LOADED = 'LOADED';\r\nexport const SHOWHELP = 'SHOWHELP';\r\nexport const SENTTOAPI = 'SENTTOAPI';\r\nexport const APICALLSTART = 'APICALLSTART';\r\nexport const APICALLEND = 'APICALLEND';\r\n\r\nexport interface SetScoreOnLevelCompleteAction {\r\n type: typeof SETSCOREONLEVELCOMPLETE;\r\n levelCompleted: number;\r\n levelScoreBeforeBonus: number;\r\n totalScoreBeforeBonus: number;\r\n}\r\n\r\nexport interface SetScore {\r\n type: typeof SETSCORE;\r\n totalScore: number;\r\n}\r\n\r\nexport interface AddTimeBonus {\r\n type: typeof ADDTIMEBONUS;\r\n secondsRemaining: number;\r\n completionTime: string;\r\n timeBonus: number;\r\n}\r\n\r\nexport interface StartLevelAction {\r\n type: typeof STARTLEVEL;\r\n}\r\n\r\nexport interface UpdateShuffleCountAction {\r\n type: typeof UPDATESHUFFLECOUNT;\r\n increment: boolean;\r\n}\r\n\r\nexport interface UpdateHintCountAction {\r\n type: typeof UPDATEHINTCOUNT;\r\n increment: boolean;\r\n}\r\n\r\nexport interface RestartGameAction {\r\n type: typeof RESTARTGAME;\r\n}\r\n\r\nexport interface SetNoPossibleMovesAction {\r\n type: typeof SETNOPOSSIBLEMOVES;\r\n}\r\n\r\nexport interface GameOverAction {\r\n type: typeof GAMEOVER;\r\n gameOverMessage: string;\r\n}\r\n\r\nexport interface ToggleSoundAction {\r\n type: typeof TOGGLESOUND;\r\n on: boolean;\r\n}\r\n\r\nexport interface TogglePausedAction {\r\n type: typeof TOGGLEPAUSED;\r\n paused: boolean;\r\n}\r\n\r\nexport interface SetLoadedAction {\r\n type: typeof LOADED;\r\n loaded: boolean;\r\n}\r\n\r\nexport interface ShowHelpAction {\r\n type: typeof SHOWHELP;\r\n showHelp: boolean;\r\n}\r\n\r\nexport interface SentToApiAction {\r\n type: typeof SENTTOAPI;\r\n}\r\n\r\nexport interface ApiCallStartAction {\r\n type: typeof APICALLSTART;\r\n}\r\n\r\nexport interface ApiCallEndAction {\r\n type: typeof APICALLEND;\r\n}\r\n\r\nexport type GameActionTypes =\r\n | SetScoreOnLevelCompleteAction\r\n | AddTimeBonus\r\n | StartLevelAction\r\n | LoginAction\r\n | SetScore\r\n | UpdateShuffleCountAction\r\n | UpdateHintCountAction\r\n | RestartGameAction\r\n | SetNoPossibleMovesAction\r\n | GameOverAction\r\n | ToggleSoundAction\r\n | TogglePausedAction\r\n | SetLoadedAction\r\n | ShowHelpAction\r\n | SentToApiAction\r\n | SetSweepstakes\r\n | SetEntryCount\r\n | ApiCallStartAction\r\n | ApiCallEndAction;\r\n","import {\r\n ADDTIMEBONUS,\r\n GAMEOVER,\r\n LOADED,\r\n RESTARTGAME,\r\n SENTTOAPI,\r\n SETNOPOSSIBLEMOVES,\r\n SETSCORE,\r\n SETSCOREONLEVELCOMPLETE,\r\n SHOWHELP,\r\n STARTLEVEL,\r\n TOGGLEPAUSED,\r\n TOGGLESOUND,\r\n UPDATEHINTCOUNT,\r\n UPDATESHUFFLECOUNT,\r\n GameActionTypes,\r\n APICALLSTART,\r\n APICALLEND,\r\n} from './actionTypes';\r\n\r\n// Called by the game once lvl is completed to save score to state - GamePage will add the time remaining after this action has completed\r\nexport function setScoreOnLevelComplete(levelScore: number, totalScore: number, level: number): GameActionTypes {\r\n return {\r\n type: SETSCOREONLEVELCOMPLETE,\r\n levelScoreBeforeBonus: levelScore,\r\n levelCompleted: level,\r\n totalScoreBeforeBonus: totalScore,\r\n };\r\n}\r\n\r\nexport function updateScoreDuringGame(totalScore: number): GameActionTypes {\r\n return { type: SETSCORE, totalScore };\r\n}\r\n\r\nexport function addTimeBonus(secondsRemaining: number, completionTime: string, timeBonus: number): GameActionTypes {\r\n return { type: ADDTIMEBONUS, secondsRemaining, timeBonus, completionTime };\r\n}\r\n\r\nexport function startLevel(): GameActionTypes {\r\n return { type: STARTLEVEL };\r\n}\r\n\r\nexport function updateShuffleCount(increment: boolean = false): GameActionTypes {\r\n return { type: UPDATESHUFFLECOUNT, increment: increment };\r\n}\r\n\r\nexport function updateHintCount(increment: boolean = false): GameActionTypes {\r\n return { type: UPDATEHINTCOUNT, increment: increment };\r\n}\r\n\r\nexport function restartGame(): GameActionTypes {\r\n return { type: RESTARTGAME };\r\n}\r\n\r\nexport function setNoPossibleMoves(): GameActionTypes {\r\n return { type: SETNOPOSSIBLEMOVES };\r\n}\r\n\r\nexport function gameOver(gameOverMessage: string): GameActionTypes {\r\n return { type: GAMEOVER, gameOverMessage };\r\n}\r\n\r\nexport function toggleSound(on: boolean): GameActionTypes {\r\n return { type: TOGGLESOUND, on };\r\n}\r\n\r\nexport function togglePaused(paused: boolean): GameActionTypes {\r\n return { type: TOGGLEPAUSED, paused };\r\n}\r\n\r\nexport function loaded(loaded: boolean = true): GameActionTypes {\r\n return { type: LOADED, loaded };\r\n}\r\n\r\nexport function showHelp(showHelp: boolean = true): GameActionTypes {\r\n return { type: SHOWHELP, showHelp };\r\n}\r\n\r\nexport function sentToApi(): GameActionTypes {\r\n return { type: SENTTOAPI };\r\n}\r\n\r\nexport function apiCallStart(): GameActionTypes {\r\n return { type: APICALLSTART };\r\n}\r\n\r\nexport function apiCallEnd(): GameActionTypes {\r\n return { type: APICALLEND };\r\n}\r\n","import React from 'react';\r\nimport useLinkTarget from '../../infrastructure/isWebView/useLinkTarget';\r\nimport { Redirect, useLocation } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { togglePaused } from '../../slices/game/actions';\r\nimport { RulesRoute, GameRoute, LandingRoute } from '../../constants/Routes';\r\nimport RootState from '../../types';\r\nimport { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\n\r\ntype SweepsDatesDictionary = {\r\n [key: string]: { startTime: string; endTime: string; startDate: string; endDate: string };\r\n};\r\n\r\nconst sweepDates: SweepsDatesDictionary = {\r\n 'Week 1': { startTime: '12:00 PM', startDate: '3/28/22', endTime: '11:59 PM', endDate: '4/3/22' },\r\n 'Week 2': { startTime: '12:00 AM', startDate: '4/4/22', endTime: '11:59 PM', endDate: '4/10/22' },\r\n 'Week 3': { startTime: '12:00 AM', startDate: '4/11/22', endTime: '11:59 PM', endDate: '4/17/22' },\r\n 'Week 4': { startTime: '12:00 AM', startDate: '4/18/22', endTime: '11:59 PM', endDate: '4/24/22' },\r\n 'Week 5': { startTime: '12:00 AM', startDate: '4/25/22', endTime: '11:59 PM', endDate: '5/1/22' },\r\n 'Week 6': { startTime: '12:00 AM', startDate: '5/2/22', endTime: '11:59 PM', endDate: '5/8/22' },\r\n};\r\n\r\nconst Disclaimer = () => {\r\n const linkTarget = useLinkTarget();\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { currentSweepstakeName } = useSelector((state: RootState) => state.sweepstake);\r\n\r\n if (!currentSweepstakeName) {\r\n return ;\r\n }\r\n\r\n if (location.pathname.includes(RulesRoute)) {\r\n return <>;\r\n }\r\n\r\n const onRulesClick = () => {\r\n if (location.pathname.includes(GameRoute)) {\r\n dispatch(togglePaused(true));\r\n }\r\n };\r\n\r\n const dates = sweepDates[currentSweepstakeName];\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

\r\n NO PURCHASE OR PAYMENT NECESSARY TO ENTER OR WIN. Open to legal residents of the 50\r\n U.S./D.C., age 21+. Void outside the 50 U.S./D.C. and where prohibited. Sweepstakes starts at 10:00:00 AM\r\n ET on 01/29/24; ends at 11:59:59 PM ET on 02/25/24. Odds of winning will depend on the number of eligible\r\n entries received for each drawing. Total ARV of all prizes: $8,245. For full Official Rules, entry periods\r\n and entry limits{' '}\r\n \r\n click here\r\n \r\n . Sponsor: Hallmark Media United States, LLC, 12700 Ventura Boulevard, Studio City, CA 91604.\r\n

\r\n

\r\n ©2024,{' '}\r\n trackEvent('Princess Cruises Disclaimer', 'Princess Cruises Click', 'Disclaimer')}\r\n >\r\n Princess Cruise Lines, Ltd., Princess®\r\n \r\n , and the Princess logo are trademarks of Princess Cruise Lines, Ltd. All rights reserved. Ships of\r\n Bermudan and British registry.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Disclaimer;\r\n","// eslint-disable-next-line import/prefer-default-export\r\nexport const ADD_IS_WEBVIEW = \"ADD_IS_WEBVIEW\";\r\n","import * as types from \"./actionTypes\";\r\n\r\nconst initialState = {};\r\n\r\nconst webViewReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.ADD_IS_WEBVIEW:\r\n return {\r\n webView: action.isWebview,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default webViewReducer;\r\n","import { LOGIN, LOGOUT, UserActionTypes, SEENMODAL, SETHIGHSCORE, SETENTRYCOUNT, SETPROFILEIMAGE } from './actionTypes';\r\nimport UserState from './UserState';\r\n\r\nconst initialState: UserState = {\r\n id: '',\r\n name: '',\r\n emailAddress: '',\r\n feed: false,\r\n hasSeenModal: false,\r\n highScore: 0,\r\n shareCode: '',\r\n newFormEntryAdded: false,\r\n hasVideoEntryAwarded: false,\r\n acceptedRules: false,\r\n badgeCount: 0,\r\n isNew: false,\r\n newBadgeNotification: null,\r\n profileImage: 0,\r\n};\r\n\r\nconst userReducer = (state = initialState, action: UserActionTypes) => {\r\n switch (action.type) {\r\n case LOGIN:\r\n return {\r\n id: action.id,\r\n name: action.name,\r\n emailAddress: action.emailAddress,\r\n hasSeenModal: true,\r\n entryCount: action.entryCount,\r\n grandPrizeCount: action.grandPrizeCount,\r\n highScore: action.highScore,\r\n shareCode: action.shareCode,\r\n newFormEntryAdded: action.newFormEntryAdded,\r\n acceptedRules: action.acceptedRules,\r\n badgeCount: action.badgeCount,\r\n isNew: action.isNew,\r\n profileImage: action.profileImage !== undefined ? action.profileImage : state.profileImage,\r\n hasVideoEntryAwarded: action.hasVideoEntryAwarded,\r\n };\r\n case LOGOUT:\r\n return {\r\n ...initialState,\r\n hasSeenModal: state.hasSeenModal,\r\n };\r\n case SEENMODAL:\r\n return {\r\n ...state,\r\n hasSeenModal: true,\r\n isNew: false,\r\n };\r\n case SETHIGHSCORE:\r\n return {\r\n ...state,\r\n highScore: action.score,\r\n };\r\n case SETENTRYCOUNT:\r\n return {\r\n ...state,\r\n badgeCount: action.badgeCount,\r\n newBadgeNotification: action.newBadgeNotification,\r\n newFormEntryAdded: action.newFormEntryAdded,\r\n acceptedRules: action.acceptedRules,\r\n profileImage: action.profileImage !== undefined ? action.profileImage : state.profileImage,\r\n hasVideoEntryAwarded: action.hasVideoEntryAwarded,\r\n };\r\n case SETPROFILEIMAGE:\r\n return {\r\n ...state,\r\n profileImage: action.profileImage,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default userReducer;\r\n","import {\r\n SETSCOREONLEVELCOMPLETE,\r\n STARTLEVEL,\r\n SETSCORE,\r\n GameActionTypes,\r\n UPDATESHUFFLECOUNT,\r\n UPDATEHINTCOUNT,\r\n RESTARTGAME,\r\n} from './actionTypes';\r\nimport { LOGIN } from '../users/actionTypes';\r\nimport GameState from './GameState';\r\nimport {\r\n ADDTIMEBONUS,\r\n SETNOPOSSIBLEMOVES,\r\n GAMEOVER,\r\n TOGGLESOUND,\r\n TOGGLEPAUSED,\r\n LOADED,\r\n SHOWHELP,\r\n SENTTOAPI,\r\n APICALLSTART,\r\n APICALLEND,\r\n} from './actionTypes';\r\n\r\nexport const startingShuffles = 7;\r\nexport const startingHints = 5;\r\n\r\nconst initialState: GameState = {\r\n awaitingBonus: false,\r\n activeScore: 0,\r\n completionTime: '',\r\n gameOverMessage: '',\r\n hintsRemaining: startingHints,\r\n isManuallyPaused: false,\r\n levelCompleted: 0,\r\n levelScore: 0,\r\n levelScoreBeforeBonus: 0,\r\n loading: true,\r\n noPossibleMoves: false,\r\n requiresSaveToApi: false,\r\n secondsRemaning: 0,\r\n showGameOverModal: false,\r\n showHelpModal: false,\r\n showNextLevelModal: false,\r\n shufflesRemaining: startingShuffles,\r\n soundOn: true,\r\n totalSecondsRemaining: 0,\r\n totalScore: 0,\r\n totalScoreBeforeBonus: 0,\r\n totalNumberOfLevels: 11,\r\n apiCallInProgress: false,\r\n};\r\n\r\nconst userReducer: (state: GameState, action: GameActionTypes) => GameState = (\r\n state = initialState,\r\n action: GameActionTypes\r\n) => {\r\n let numberOfLevels: number;\r\n switch (action.type) {\r\n case SETSCOREONLEVELCOMPLETE:\r\n return {\r\n ...state,\r\n totalScoreBeforeBonus: action.totalScoreBeforeBonus,\r\n levelScoreBeforeBonus: action.levelScoreBeforeBonus,\r\n levelCompleted: action.levelCompleted,\r\n awaitingBonus: true,\r\n };\r\n case STARTLEVEL:\r\n return {\r\n ...state,\r\n showNextLevelModal: false,\r\n };\r\n case SETSCORE:\r\n return {\r\n ...state,\r\n activeScore: action.totalScore,\r\n };\r\n case ADDTIMEBONUS:\r\n const totalScore = state.totalScoreBeforeBonus + action.timeBonus;\r\n return {\r\n ...state,\r\n totalScore: totalScore,\r\n activeScore: totalScore,\r\n levelScore: state.levelScoreBeforeBonus + action.timeBonus,\r\n secondsRemaining: action.secondsRemaining,\r\n totalSecondsRemaining: action.secondsRemaining + state.totalSecondsRemaining,\r\n completionTime: action.completionTime,\r\n showNextLevelModal: true,\r\n awaitingBonus: false,\r\n requiresSaveToApi: true,\r\n };\r\n case LOGIN:\r\n numberOfLevels = 11;\r\n return {\r\n ...state,\r\n totalScore: action.currentScore,\r\n activeScore: action.currentScore,\r\n levelCompleted: action.lastLevelPlayed,\r\n totalSecondsRemaining: action.totalSecondsRemaining || 0,\r\n hintsRemaining:\r\n action.hintsRemaining && action.lastLevelPlayed < numberOfLevels ? action.hintsRemaining : startingHints,\r\n shufflesRemaining:\r\n action.shufflesRemaining && action.lastLevelPlayed < numberOfLevels\r\n ? action.shufflesRemaining\r\n : startingShuffles,\r\n totalNumberOfLevels: numberOfLevels,\r\n };\r\n case UPDATESHUFFLECOUNT:\r\n return {\r\n ...state,\r\n shufflesRemaining: action.increment ? state.shufflesRemaining + 1 : state.shufflesRemaining - 1,\r\n noPossibleMoves: false,\r\n };\r\n case UPDATEHINTCOUNT:\r\n return {\r\n ...state,\r\n hintsRemaining: action.increment ? state.hintsRemaining + 1 : state.hintsRemaining - 1,\r\n };\r\n case SETNOPOSSIBLEMOVES:\r\n return {\r\n ...state,\r\n noPossibleMoves: true,\r\n };\r\n case GAMEOVER:\r\n return {\r\n ...state,\r\n showGameOverModal: true,\r\n gameOverMessage: action.gameOverMessage,\r\n };\r\n case TOGGLESOUND:\r\n return {\r\n ...state,\r\n soundOn: action.on,\r\n };\r\n case TOGGLEPAUSED:\r\n return {\r\n ...state,\r\n isManuallyPaused: action.paused,\r\n showHelpModal: !action.paused ? false : state.showHelpModal,\r\n };\r\n case LOADED:\r\n return {\r\n ...state,\r\n loading: !action.loaded,\r\n };\r\n case SHOWHELP:\r\n return {\r\n ...state,\r\n showHelpModal: action.showHelp,\r\n isManuallyPaused: action.showHelp && state.isManuallyPaused,\r\n };\r\n case RESTARTGAME:\r\n return { ...initialState, soundOn: state.soundOn };\r\n case SENTTOAPI:\r\n return {\r\n ...state,\r\n requiresSaveToApi: false,\r\n };\r\n case APICALLSTART:\r\n return {\r\n ...state,\r\n apiCallInProgress: true,\r\n };\r\n case APICALLEND:\r\n return {\r\n ...state,\r\n apiCallInProgress: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default userReducer;\r\n","import { LoginAction, LogoutAction, SetEntryCount } from '../users/actionTypes';\r\nexport const SETSWEEPSTAKES = 'SETSWEEPSTAKES';\r\n\r\nexport interface SetSweepstakes {\r\n type: typeof SETSWEEPSTAKES;\r\n currentSweepstakeEnd: string | null;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n nextSweepstakeStart: string | null;\r\n}\r\n\r\nexport type SweepstakesActionTypes = SetSweepstakes | LoginAction | SetEntryCount | LogoutAction;\r\n","import { LOGIN, LOGOUT, SETENTRYCOUNT, UserActionTypes } from '../users/actionTypes';\r\nimport { SETSWEEPSTAKES, SweepstakesActionTypes } from './actionTypes';\r\n\r\nimport SweepstakeState from './SweepstakeState';\r\n\r\nconst initialState: SweepstakeState = {\r\n entryCount: 0,\r\n grandPrizeCount: 0,\r\n hasVideoEntryAwarded: false,\r\n newFormEntryAdded: false,\r\n currentSweepstakeEnd: null,\r\n currentSweepstakeName: null,\r\n nextSweepstakeName: null,\r\n nextSweepstakeStart: null,\r\n};\r\n\r\nconst sweepstakeReducer = (state = initialState, action: SweepstakesActionTypes) => {\r\n switch (action.type) {\r\n case LOGIN:\r\n return {\r\n id: action.id,\r\n name: action.name,\r\n emailAddress: action.emailAddress,\r\n hasSeenModal: true,\r\n entryCount: action.entryCount,\r\n grandPrizeCount: action.grandPrizeCount,\r\n hasVideoEntryAwarded: action.hasVideoEntryAwarded,\r\n highScore: action.highScore,\r\n shareCode: action.shareCode,\r\n newFormEntryAdded: action.newFormEntryAdded,\r\n currentSweepstakeName: action.currentSweepstakeName,\r\n currentSweepstakeEnd: action.currentSweepstakeEnd,\r\n nextSweepstakeName: action.nextSweepstakeName,\r\n nextSweepstakeStart: action.nextSweepstakeStart,\r\n };\r\n case SETENTRYCOUNT:\r\n return {\r\n ...state,\r\n ...action,\r\n };\r\n case SETSWEEPSTAKES:\r\n return {\r\n ...state,\r\n currentSweepstakeEnd: action.currentSweepstakeEnd,\r\n currentSweepstakeName: action.currentSweepstakeName,\r\n nextSweepstakeName: action.nextSweepstakeName,\r\n nextSweepstakeStart: action.nextSweepstakeStart,\r\n };\r\n case LOGOUT:\r\n return {\r\n ...state,\r\n entryCount: 0,\r\n newFormEntryAdded: false,\r\n };\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default sweepstakeReducer;\r\n","export const SETINVITECODE = 'SETINVITECODE'\r\n\r\nexport interface SetInviteCodeAction {\r\n type: typeof SETINVITECODE;\r\n shareCode: string;\r\n}\r\n\r\nexport type ShareActionTypes = SetInviteCodeAction;","import ShareState from './ShareState';\r\nimport { ShareActionTypes, SETINVITECODE } from './actionTypes';\r\nconst initialState: ShareState = {\r\n shareCode: null,\r\n};\r\n\r\nconst shareReducer = (state = initialState, action: ShareActionTypes) => {\r\n switch (action.type) {\r\n case SETINVITECODE:\r\n return {\r\n shareCode: action.shareCode,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default shareReducer;\r\n","import { PromotedItemDto, TileDto } from '../../types';\r\n\r\nexport const SETCONFIG = 'SETCONFIG';\r\n\r\nexport interface SetConfigAction {\r\n type: typeof SETCONFIG;\r\n landingPageText: string;\r\n prizeTitle: string;\r\n promotedItems: PromotedItemDto[];\r\n tiles: TileDto[];\r\n}\r\n\r\nexport type GameConfigActionTypes = SetConfigAction;\r\n","import PromotionState from './PromotionState';\r\nimport { ADDTIMEBONUS } from '../game/actionTypes';\r\nimport { PromotionActionTypes } from './actionTypes';\r\nimport { SETCONFIG } from '../gameconfig/actionTypes';\r\n\r\nconst initialState: PromotionState = {\r\n promotionIndex: 0,\r\n promotedItems: [],\r\n count: 0,\r\n};\r\n\r\nconst promotionReducer = (state = initialState, action: PromotionActionTypes) => {\r\n switch (action.type) {\r\n case ADDTIMEBONUS:\r\n return {\r\n ...state,\r\n promotionIndex: state.promotionIndex < state.count - 1 ? state.promotionIndex + 1 : 0,\r\n };\r\n case SETCONFIG:\r\n const newState: PromotionState = {\r\n ...state,\r\n promotedItems: action.promotedItems,\r\n count: action.promotedItems.length,\r\n };\r\n return newState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default promotionReducer;\r\n","import GameConfigState from './GameConfigState';\r\nimport { GameConfigActionTypes, SETCONFIG } from './actionTypes';\r\n\r\nconst initialState: GameConfigState = {\r\n landingPageText: '',\r\n tiles: [],\r\n tileCount: 0,\r\n prizeTitle: '',\r\n};\r\n\r\nconst gameConfigReducer: (state: GameConfigState, action: GameConfigActionTypes) => GameConfigState = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case SETCONFIG:\r\n const newState: GameConfigState = {\r\n landingPageText: action.landingPageText,\r\n tiles: action.tiles,\r\n tileCount: action.tiles.length,\r\n prizeTitle: action.prizeTitle,\r\n };\r\n return newState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default gameConfigReducer;\r\n","export const SETCODE = 'SETCODE';\r\nexport const CLEARCODE = 'CLEARCODE';\r\n\r\nexport interface SetCodeAction {\r\n type: typeof SETCODE;\r\n code: string;\r\n}\r\n\r\nexport interface ClearCodeAction {\r\n type: typeof CLEARCODE;\r\n}\r\n\r\nexport type GroupInviteActionTypes = SetCodeAction | ClearCodeAction;\r\n","import GroupInviteState from './GroupInviteState';\r\nimport { GroupInviteActionTypes, SETCODE, CLEARCODE } from './actionTypes';\r\n\r\nconst initialState: GroupInviteState = {\r\n code: '',\r\n};\r\n\r\nconst groupInviteReducer: (state: GroupInviteState, action: GroupInviteActionTypes) => GroupInviteState = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case SETCODE:\r\n const newState: GroupInviteState = {\r\n code: action.code,\r\n };\r\n return newState;\r\n case CLEARCODE:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default groupInviteReducer;\r\n","import { combineReducers } from 'redux';\r\nimport { connectRouter } from 'connected-react-router';\r\n\r\nimport isWebViewReducer from '../isWebView/reducer';\r\nimport userReducer from '../../slices/users/reducer';\r\nimport gameReducer from '../../slices/game/reducer';\r\nimport sweepstakeReducer from '../../slices/sweepstakes/reducer';\r\nimport shareReducer from '../../slices/sharing/reducer';\r\nimport promotionReducer from '../../slices/promotion/reducer';\r\nimport gameConfigReducer from '../../slices/gameconfig/reducer';\r\n// import adReducer from '../../slices/ads/reducer';\r\nimport groupInviteReducer from '../../slices/groupinvite/reducer';\r\n\r\nconst rootReducer = (history) =>\r\n combineReducers({\r\n isWebView: isWebViewReducer,\r\n router: connectRouter(history),\r\n user: userReducer,\r\n game: gameReducer,\r\n sweepstake: sweepstakeReducer,\r\n share: shareReducer,\r\n promotion: promotionReducer,\r\n gameConfig: gameConfigReducer,\r\n groupInvite: groupInviteReducer,\r\n // ads: adReducer,\r\n });\r\n\r\nexport default rootReducer;\r\n","import { createStore, applyMiddleware, compose } from 'redux';\r\nimport { createBrowserHistory } from 'history';\r\nimport { routerMiddleware } from 'connected-react-router';\r\n\r\nimport rootReducer from './rootReducer';\r\n\r\nexport const history = createBrowserHistory();\r\n\r\nconst composeEnhancers =\r\n typeof window === 'object' &&\r\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? \r\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\r\n trace: true,\r\n }) : compose;\r\n\r\nfunction configureStore(preloadedState) {\r\n const sagaMiddleware = [];\r\n const store = createStore(\r\n rootReducer(history),\r\n preloadedState,\r\n composeEnhancers(applyMiddleware(\r\n routerMiddleware(history),\r\n ...sagaMiddleware\r\n ))\r\n );\r\n return store;\r\n}\r\n\r\nconst store = configureStore();\r\n\r\nexport default store;","export default __webpack_public_path__ + \"static/media/3d-tiles.9a29bb6e.webp\";","export default __webpack_public_path__ + \"static/media/3d-tiles-default.b5e8cf4c.webp\";","import { trackPageView } from './GoogleAnalytics';\r\n\r\nconst trackPageViewGoogle: (pageTitle: string, pagePath: string) => void = (pageTitle, pagePath) => {\r\n trackPageView(pageTitle, pagePath);\r\n};\r\n\r\nexport default trackPageViewGoogle;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport trackPageViewGoogle from '../../infrastructure/tracking';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nconst usePageView: (pageTitle: string, pagePath: string) => void = (pageTitle, pagePath) => {\r\n useEffect(() => {\r\n trackPageViewGoogle(pageTitle, pagePath);\r\n }, []);\r\n};\r\n\r\nexport default usePageView;\r\n","import * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport RootState, { UserDto } from '../../../types/index';\r\nimport { selectIsCurrentSweepstake } from '../../../slices/sweepstakes/selectors';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport Button from '../../Layout/Button';\r\nimport { trackEvent } from '../../../infrastructure/tracking/GoogleAnalytics';\r\nimport { FormFeedback } from 'reactstrap';\r\nimport useLinkTarget from '../../../infrastructure/isWebView/useLinkTarget';\r\nimport { useState } from 'react';\r\nimport callApi from '../../../infrastructure/api/CallApi';\r\nimport { localStorageKey } from '../../../constants';\r\nimport { login } from '../../../slices/users/actions';\r\nimport Swal from 'sweetalert2';\r\n\r\nconst apiUrl = 'api/app/user/agree-to-rules';\r\n\r\nconst onEnterClick = (userId: string) =>\r\n trackEvent('Enter Now ', 'Enter Now Selected', userId ? 'Logged In User' : 'Logged Out User');\r\n\r\nconst handleError = (response: any) => {\r\n let alertDescription = 'Something went wrong! Please try again.';\r\n if (response && response.data && response.data.error && response.data.error.code === 'CustomError') {\r\n alertDescription = response.data.error.message;\r\n }\r\n Swal.fire({\r\n title: 'Oops!',\r\n text: alertDescription,\r\n backdrop: false,\r\n toast: true,\r\n position: 'top-end',\r\n showConfirmButton: false,\r\n timer: 3000,\r\n timerProgressBar: true,\r\n });\r\n};\r\n\r\nconst LandingPageEnterButon: React.FC = () => {\r\n const { id: userId, acceptedRules } = useSelector((state: RootState) => state.user);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n const linkTarget = useLinkTarget();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const [formSubmissionAttempted, setFormSubmissionAttempted] = useState(false);\r\n const [acceptedRulesChecked, setAcceptedRulesChecked] = useState(false);\r\n const [ageConfirmationChecked, setAgeConfirmationChecked] = useState(false);\r\n const [acceptedSponsorChecked, setAcceptedSponsorChecked] = useState(false);\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onRulesSubmit = () => {\r\n setFormSubmissionAttempted(true);\r\n if (acceptedRulesChecked && ageConfirmationChecked) {\r\n setIsSubmitting(true);\r\n callApi(apiUrl, 'POST', {\r\n id: userId,\r\n rules: acceptedRulesChecked,\r\n cruiseSponsorOptIn: acceptedSponsorChecked,\r\n })\r\n .then(({ data }) => {\r\n dispatch(login(data));\r\n try {\r\n localStorage.setItem(localStorageKey, JSON.stringify(data));\r\n } catch {}\r\n history.push('/game');\r\n })\r\n .catch(({ response }: any) => {\r\n handleError(response);\r\n })\r\n .finally(() => setIsSubmitting(false));\r\n }\r\n };\r\n // Show if\r\n // - there's no sweeps to agree to rules for\r\n // - no user is signed in\r\n // - user is signed in but has agreed to rules\r\n if (!isCurrentSweepstake || !userId || acceptedRules) {\r\n const linkTo = userId ? '/game' : '/signup';\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n Enter now!\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default LandingPageEnterButon;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { LandingHeader, SweepstakesCallout } from './Layout';\r\nimport tiles3DSweepstakes from '../images/3d-tiles.webp';\r\nimport tiles3D from '../images/3d-tiles-default.webp';\r\nimport usePageView from '../infrastructure/hooks/usePageView';\r\nimport { landingPage } from '../types/pageNameContants';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectIsCurrentSweepstake } from '../slices/sweepstakes/selectors';\r\nimport LandingPageEnterButon from './Layout/LandingHeader/LandingPageEnterButton';\r\nimport { selectTotalNumberOfLevels } from '../slices/game/selectors';\r\nimport { trackEvent } from '../infrastructure/tracking/GoogleAnalytics';\r\nimport classNames from 'classnames';\r\nimport RootState from '../types';\r\n\r\nconst LandingPage = () => {\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n const totalNumberOfLevels = useSelector(selectTotalNumberOfLevels);\r\n const { id: userId, acceptedRules } = useSelector((state: RootState) => state.user);\r\n const prizeTitle = useSelector((state: RootState) => state.gameConfig.prizeTitle);\r\n\r\n usePageView(landingPage, '/');\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {isCurrentSweepstake ? (\r\n \r\n

Grand Prize

\r\n\r\n

\r\n Each completed round will earn you one entry into the sweepstakes for a chance to win a Cruise for Two\r\n from Princess.\r\n

\r\n {/*

\r\n Tap to connect the tiles that match. Each completed round will earn you one entry\r\n * into this week's sweepstakes to win a $500 Visa Gift Card and a Cricut®\r\n Maker Machine and other goodies from Chex™ cereal!\r\n \r\n

*/}\r\n {/*
\r\n * Maximum {totalNumberOfLevels} entries per day for game play\r\n
*/}\r\n \r\n ) : (\r\n \r\n

Tap to connect the tiles that match

\r\n

\r\n Complete all 11 rounds for a chance to be on the{' '}\r\n trackEvent('Go To Leaderboard', 'Leaderboard Button Selected', 'Landing Page')}\r\n >\r\n Matching Moments Leaderboard!\r\n \r\n

\r\n \r\n )}\r\n \r\n
\r\n \"\"\r\n
\r\n \r\n
\r\n {isCurrentSweepstake && }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LandingPage;\r\n","import * as Yup from 'yup';\r\n\r\nconst FormValidationStandardSchema = Yup.object().shape({\r\n firstName: Yup.string()\r\n .test('firstName', 'Please enter your first name.', (value) => {\r\n if (!value) return true;\r\n const valueWithoutMask = value.replace(/\\D+/g, '');\r\n return valueWithoutMask.length <= 2;\r\n })\r\n .max(20, 'Must be 20 characters or fewer.')\r\n .required('Please enter your first name.'),\r\n lastName: Yup.string()\r\n .test('lastName', 'Please enter your last name.', (value) => {\r\n if (!value) return true;\r\n const valueWithoutMask = value.replace(/\\D+/g, '');\r\n return valueWithoutMask.length <= 2;\r\n })\r\n .max(20, 'Must be 20 characters or fewer.')\r\n .required('Please enter your last name.'),\r\n emailAddress: Yup.string()\r\n .email('Please enter a valid email address.')\r\n .max(100, 'Must be 100 characters or fewer.')\r\n .required('Please enter a valid email address.'),\r\n});\r\n\r\nexport default FormValidationStandardSchema;\r\n","import * as Yup from 'yup';\r\n\r\nconst FormValidationSweepstakesSchema = Yup.object().shape({\r\n firstName: Yup.string()\r\n .test('firstName', 'Please enter your first name.', (value) => {\r\n if (!value) return true;\r\n const valueWithoutMask = value.replace(/\\D+/g, '');\r\n return valueWithoutMask.length <= 2;\r\n })\r\n .max(20, 'Must be 20 characters or fewer.')\r\n .required('Please enter your first name.'),\r\n lastName: Yup.string()\r\n .test('lastName', 'Please enter your last name.', (value) => {\r\n if (!value) return true;\r\n const valueWithoutMask = value.replace(/\\D+/g, '');\r\n return valueWithoutMask.length <= 2;\r\n })\r\n .max(20, 'Must be 20 characters or fewer.')\r\n .required('Please enter your last name.'),\r\n emailAddress: Yup.string()\r\n .email('Please enter a valid email address.')\r\n .max(100, 'Must be 100 characters or fewer.')\r\n .required('Please enter a valid email address.'),\r\n zipCode: Yup.string().required('Please enter a zip code.').max(5, 'Must be 5 characters or fewer.'),\r\n provider: Yup.string().required('Please select a provider.'),\r\n ageConfirmation: Yup.bool()\r\n .test('ageCheck', 'You must be at least 21 years of age to continue.', (value) => value === true)\r\n .required('You must be at least 21 years of age to continue.'),\r\n rules: Yup.bool()\r\n .test('rules', 'Please check this box to continue.', (value) => value === true)\r\n .required('Please check this box to continue.'),\r\n});\r\n\r\nexport default FormValidationSweepstakesSchema;\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\n\r\nimport { Input, FormFeedback } from 'reactstrap';\r\n\r\nconst TextField = (props) => {\r\n const { id, maxLength, name, type, label, placeholder } = props;\r\n\r\n const [field, meta] = useField(props);\r\n\r\n return (\r\n <>\r\n {label &&
{label}
}\r\n \r\n {meta.touched && (\r\n \r\n {meta.error}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TextField;\r\n","import Cookies from 'js-cookie';\r\n\r\nconst cookieKey = '_sweepdata';\r\nconst emailPropertyKey = 'emailAddress';\r\n\r\nconst getJsonFromCookie: () => { [key: string]: string } = () => {\r\n let cookieData: string | undefined = undefined;\r\n try {\r\n cookieData = Cookies.get(cookieKey);\r\n if (cookieData) {\r\n try {\r\n return JSON.parse(cookieData);\r\n } catch (e) {\r\n Cookies.remove(cookieKey, { domain: getDomain(), secure: true });\r\n }\r\n }\r\n } catch {}\r\n return {};\r\n};\r\n\r\nconst mergeData = (newData: { [key: string]: string }, previousData: { [key: string]: string }) => {\r\n // If email address is different then overwrite the previous data\r\n if (!previousData[emailPropertyKey] || previousData[emailPropertyKey] !== newData[emailPropertyKey]) return newData;\r\n return { ...previousData, ...newData };\r\n};\r\n\r\n// This should be called on the initial state and set on form\r\nexport const setInitialFromStateFromValuesOnCookie: (initialState: T) => T = (\r\n initialState\r\n) => {\r\n const cookieData = getJsonFromCookie();\r\n Object.keys(initialState).forEach((key) => {\r\n if (cookieData[key]) (initialState as { [key: string]: any })[key] = cookieData[key];\r\n });\r\n return initialState;\r\n};\r\n\r\n// This should be called on the submit of the form with the form data\r\nexport const setFormValuesOnCookie = (formValues: object) => {\r\n const stringsOnly = Object.entries(formValues)\r\n .filter(([_, v]) => {\r\n return typeof v === 'string';\r\n })\r\n .reduce((newObject: { [key: string]: string }, [k, v]) => {\r\n newObject[k] = v;\r\n return newObject;\r\n }, {});\r\n const existingData = getJsonFromCookie();\r\n try {\r\n Cookies.set(cookieKey, JSON.stringify(mergeData(stringsOnly, existingData)), {\r\n domain: getDomain(),\r\n expires: 365,\r\n secure: true,\r\n });\r\n } catch {}\r\n};\r\n\r\nconst getDomain = () => window.config?.cookieDomain || '.hallmarkchannel.com';\r\n","const OPTIONS = [\r\n 'Amazon',\r\n 'Apple TV',\r\n 'Cox',\r\n 'DIRECTV',\r\n 'DISH',\r\n 'FrndlyTV',\r\n 'Frontier',\r\n 'FuboTV',\r\n 'Hulu',\r\n 'LG',\r\n 'Optimum',\r\n 'Peacock',\r\n 'Philo',\r\n 'Roku',\r\n 'Samsung',\r\n 'Sling TV',\r\n 'Spectrum',\r\n 'U-verse',\r\n 'Verizon FiOS',\r\n 'Vizio',\r\n 'Xfinity',\r\n 'YouTube TV',\r\n 'Other',\r\n];\r\n\r\nconst PROVIDERS = OPTIONS.map((provider) => ({\r\n value: provider,\r\n label: provider,\r\n}));\r\n\r\nexport default PROVIDERS;\r\n","import './Layout/LandingHeader/LandingHeader.scss';\r\n\r\nimport { Field, Form, Formik } from 'formik';\r\nimport React, { useState } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport { FormFeedback } from 'reactstrap';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router';\r\nimport { localStorageKey } from '../constants';\r\nimport FormValidationStandardSchema from '../helpers/FormValidationStandardSchema';\r\nimport FormValidationSweepstakesSchema from '../helpers/FormValidationSweepstakesSchema';\r\nimport callApi from '../infrastructure/api/CallApi';\r\nimport { trackEvent } from '../infrastructure/tracking/GoogleAnalytics';\r\nimport { login } from '../slices/users/actions';\r\nimport { UserDto } from '../types';\r\nimport Button from './Layout/Button';\r\nimport TextField from './Form/TextField';\r\nimport useLinkTarget from '../infrastructure/isWebView/useLinkTarget';\r\nimport Swal from 'sweetalert2';\r\nimport RootState from '../types/index';\r\nimport { formPage } from '../types/pageNameContants';\r\nimport usePageView from '../infrastructure/hooks/usePageView';\r\nimport { selectIsCurrentSweepstake } from '../slices/sweepstakes/selectors';\r\nimport { setFormValuesOnCookie, setInitialFromStateFromValuesOnCookie } from '../sdk/FormCookie';\r\nimport { GameRoute, GroupInvitePageRoute, LandingRoute, UrlNameKeyWithColon } from 'constants/Routes';\r\nimport { HallmarkChannelLogo, Logo } from '../images/logos';\r\nimport HallmarkCrown from './Shared/HallmarkCrown';\r\nimport PROVIDERS from '../constants/providers';\r\nimport classNames from 'classnames';\r\nimport MaskedInput from 'react-text-mask';\r\nimport SponsorLogo from './Layout/LandingHeader/SponsorLogo';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst zipCodeMask = () => {\r\n const maskArray = [];\r\n for (let i = 0; i < 5; i++) {\r\n maskArray.push(/[0-9]/);\r\n }\r\n return maskArray;\r\n};\r\n\r\nconst FormPage: React.FC = () => {\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const linkTarget = useLinkTarget();\r\n const inviteCode = useSelector((state: RootState) => state.share.shareCode);\r\n const groupInviteCode = useSelector((state: RootState) => state.groupInvite.code);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n usePageView(formPage, '/signup');\r\n\r\n const onSubmit = (values: object) => {\r\n trackEvent('Entry Form', 'Entry Form Submitted');\r\n setIsSubmitting(true);\r\n\r\n const apiUrl = 'api/app/user/' + (isCurrentSweepstake ? 'enter-form' : 'enter-standard-form');\r\n callApi(apiUrl, 'POST', values)\r\n .then(({ data }) => {\r\n setFormValuesOnCookie(values);\r\n onSignUpSuccess(data);\r\n })\r\n .catch(({ response }: any) => {\r\n handleError(response);\r\n setIsSubmitting(false);\r\n });\r\n };\r\n\r\n const onSignUpSuccess = (user: UserDto) => {\r\n const eventType = user.isNew ? 'Sign Up' : 'Sign In';\r\n trackEvent(eventType, `${eventType} Successful`);\r\n dispatch(login(user));\r\n try {\r\n localStorage.setItem(localStorageKey, JSON.stringify(user));\r\n } catch {}\r\n const redirectPath = groupInviteCode\r\n ? GroupInvitePageRoute.replace(UrlNameKeyWithColon, groupInviteCode)\r\n : GameRoute;\r\n history.push(redirectPath);\r\n };\r\n\r\n const handleError = (response: any) => {\r\n let alertDescription = 'Something went wrong! Please try again.';\r\n if (response && response.data && response.data.error && response.data.error.code === 'CustomError') {\r\n alertDescription = response.data.error.message;\r\n }\r\n Swal.fire({\r\n title: 'Oops!',\r\n text: alertDescription,\r\n backdrop: false,\r\n toast: true,\r\n position: 'top-end',\r\n showConfirmButton: false,\r\n timer: 3000,\r\n timerProgressBar: true,\r\n });\r\n };\r\n\r\n const initialValues = setInitialFromStateFromValuesOnCookie({\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n crownMediaOptIn: false,\r\n ageConfirmation: false,\r\n rules: false,\r\n sponsorOptIn: false,\r\n princessCruisesSponsorOptIn: false,\r\n inviteCode,\r\n provider: '',\r\n zipCode: '',\r\n });\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n {isCurrentSweepstake ? : null}\r\n
\r\n
\r\n {/* \r\n <>\r\n

Sign up to start playing

\r\n \r\n
*/}\r\n
\r\n \r\n {isCurrentSweepstake ? : null}\r\n
\r\n \r\n
\r\n

Sign Up to Start Playing

\r\n \r\n {({ values, errors, touched }) => (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {isCurrentSweepstake ? (\r\n \r\n \r\n \r\n (\r\n
\r\n \r\n
\r\n )}\r\n />\r\n {errors.zipCode && touched.zipCode ? (\r\n

{errors.zipCode}

\r\n ) : null}\r\n {/* */}\r\n
\r\n \r\n ) : null}\r\n\r\n {isCurrentSweepstake ? (\r\n \r\n \r\n \r\n (\r\n
\r\n \r\n
\r\n )}\r\n />\r\n {errors.provider && touched.provider ? (\r\n

{errors.provider}

\r\n ) : null}\r\n
\r\n \r\n ) : null}\r\n \r\n \r\n \r\n {isCurrentSweepstake && (\r\n \r\n )}\r\n\r\n {isCurrentSweepstake && (\r\n <>\r\n \r\n \r\n )}\r\n\r\n \r\n {isCurrentSweepstake ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n Start Playing\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default FormPage;\r\n","import React from 'react';\r\nimport './Confetti.scss';\r\n\r\ninterface ConfettiProps {\r\n repeat?: boolean;\r\n}\r\n\r\nconst Confetti: React.FC = ({ repeat }) => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Confetti;\r\n","export default __webpack_public_path__ + \"static/media/game-line-2.b4a5737a.png\";","export default __webpack_public_path__ + \"static/media/game-line-3.709998c4.png\";","export default __webpack_public_path__ + \"static/media/game-line-4.b97f97a7.png\";","export default __webpack_public_path__ + \"static/media/game-line-5.07c3e704.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-0.92564639.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-1.b1f09d5a.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-2.3b0a0c68.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-3.aacc86a6.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-0-sweepstakes.e25843de.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-1-sweepstakes.91d3090d.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-2-sweepstakes.9365ec7b.png\";","export default __webpack_public_path__ + \"static/media/tutorial-step-3-sweepstakes.b2bb17d6.png\";","import classNames from 'classnames';\r\nimport { FormRoute, LandingRoute } from 'constants/Routes';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport RootState from 'types';\r\n\r\ninterface HalftoneTextureTopProps {\r\n color: string;\r\n}\r\n\r\nconst HalftoneTextureTop = ({ color }: HalftoneTextureTopProps) => {\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n const location = useLocation();\r\n\r\n const isLandingOrForm = location.pathname === LandingRoute || location.pathname === FormRoute;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HalftoneTextureTop;\r\n","export default __webpack_public_path__ + \"static/media/background-fair.3b4174a6.svg\";","export default __webpack_public_path__ + \"static/media/background-people.118da78c.svg\";","export default __webpack_public_path__ + \"static/media/background-stalls.0e48d5ee.svg\";","import GameLine1 from './game-line-1.png';\r\nimport GameLine2 from './game-line-2.png';\r\nimport GameLine3 from './game-line-3.png';\r\nimport GameLine4 from './game-line-4.png';\r\nimport GameLine5 from './game-line-5.png';\r\n\r\nimport TutorialStep0 from './tutorial-step-0.png';\r\nimport TutorialStep1 from './tutorial-step-1.png';\r\nimport TutorialStep2 from './tutorial-step-2.png';\r\nimport TutorialStep3 from './tutorial-step-3.png';\r\nimport TutorialStepSweepstakes0 from './tutorial-step-0-sweepstakes.png';\r\nimport TutorialStepSweepstakes1 from './tutorial-step-1-sweepstakes.png';\r\nimport TutorialStepSweepstakes2 from './tutorial-step-2-sweepstakes.png';\r\nimport TutorialStepSweepstakes3 from './tutorial-step-3-sweepstakes.png';\r\n\r\nimport SnsBackgroundFair from './background-fair.svg';\r\nimport SnsBackgroundPeople from './background-people.svg';\r\nimport SnsBackgroundStalls from './background-stalls.svg';\r\n\r\nexport { default as HalftoneTextureBottom } from './HalftoneTextureBottom';\r\nexport { default as HalftoneTextureTop } from './HalftoneTextureTop';\r\n\r\nexport { default as BgLeft } from './bg-left.jpg';\r\nexport { default as BgRight } from './bg-right.jpg';\r\nexport { default as BgPresent } from './background-present.png';\r\nexport { default as BgTree } from './background-tree.png';\r\nexport { default as cardLevel } from './card-level11.jpg';\r\nexport { default as cardLevelSweepstakes } from './card-level11-sweepstakes.jpg';\r\nexport { default as cardProfile } from './card-profile.jpg';\r\nexport { default as cardProfileSweepstakes } from './card-profile-sweepstakes.jpg';\r\nexport { default as cardBadge } from './card-badges.jpg';\r\nexport { default as cardBadgeSweepstakes } from './card-badges-sweepstakes.jpg';\r\nexport { default as cardLeaderboard } from './card-leaderboard.jpg';\r\nexport { default as cardLeaderboardSweepstakes } from './card-leaderboard-sweepstakes.jpg';\r\n\r\nexport { default as HintArrow } from './arrow.png';\r\nexport { default as IsometricTiles } from './isometric-tiles.png';\r\nexport { default as IsometricTilesPlum } from './isometric-tiles-plum.webp';\r\n\r\nconst GameLines = [GameLine1, GameLine2, GameLine3, GameLine4, GameLine5];\r\n\r\nexport const SNSBackground = {\r\n Fair: SnsBackgroundFair,\r\n People: SnsBackgroundPeople,\r\n Stalls: SnsBackgroundStalls,\r\n};\r\n\r\nexport const TutorialStepsSweepstakes = [\r\n TutorialStepSweepstakes0,\r\n TutorialStepSweepstakes1,\r\n TutorialStepSweepstakes2,\r\n TutorialStepSweepstakes3,\r\n];\r\nexport const TutorialSteps = [TutorialStep0, TutorialStep1, TutorialStep2, TutorialStep3];\r\n\r\nexport default GameLines;\r\n","export default __webpack_public_path__ + \"static/media/bg-left.46260d7f.jpg\";","export default __webpack_public_path__ + \"static/media/bg-right.c754de85.jpg\";","export default __webpack_public_path__ + \"static/media/background-present.eaa6c341.png\";","export default __webpack_public_path__ + \"static/media/background-tree.ed4b3620.png\";","export default __webpack_public_path__ + \"static/media/card-level11-sweepstakes.3ea519c9.jpg\";","export default __webpack_public_path__ + \"static/media/card-profile.456e3149.jpg\";","export default __webpack_public_path__ + \"static/media/card-profile-sweepstakes.5832a863.jpg\";","export default __webpack_public_path__ + \"static/media/card-badges.cfa8d16b.jpg\";","export default __webpack_public_path__ + \"static/media/card-badges-sweepstakes.cfa8d16b.jpg\";","export default __webpack_public_path__ + \"static/media/card-leaderboard.17b9e6b1.jpg\";","export default __webpack_public_path__ + \"static/media/card-leaderboard-sweepstakes.5fb5ffbe.jpg\";","export default __webpack_public_path__ + \"static/media/isometric-tiles.93de852a.png\";","export default __webpack_public_path__ + \"static/media/isometric-tiles-plum.39236108.webp\";","export default \"data:image/png;base64,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\"","import React from 'react';\r\nimport GameLines from '../../images/backgrounds';\r\n\r\nimport './Modal.scss';\r\n\r\nconst GameTileAnimation = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"\"\r\n \"\"\r\n \"\"\r\n \"\"\r\n \"\"\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default GameTileAnimation;\r\n","import React from 'react';\r\n\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Logo } from '../../images/logos';\r\nimport GameTileAnimation from './GameTileAnimation';\r\n\r\ninterface IGameModalStandardBodyProps {\r\n newEntry: boolean;\r\n isCurrentSweepstake: boolean;\r\n totalNumberOfLevels: number;\r\n}\r\n\r\nconst GameModalStandardBody: React.FC = ({\r\n newEntry,\r\n isCurrentSweepstake,\r\n totalNumberOfLevels,\r\n}) => (\r\n <>\r\n \r\n {newEntry && isCurrentSweepstake &&

You've entered!

}\r\n\r\n {isCurrentSweepstake ? (\r\n
\r\n Play Matching Moments to earn one bonus entry per level, with each level\r\n getting harder!\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n \r\n
\r\n

\r\n The goal is to remove all tiles from the puzzle board as quickly as possible!\r\n

\r\n

\r\n Tap on identical tiles to create connecting paths between them!\r\n

\r\n

\r\n Connecting paths cannot have more than 3 lines!\r\n

\r\n

\r\n Clear paths must be made using a maximum of 3 lines!\r\n

\r\n

\r\n Complete all {totalNumberOfLevels} rounds for a chance to be on the game leaderboard!\r\n

\r\n
\r\n
\r\n \r\n);\r\n\r\nexport default GameModalStandardBody;\r\n","import {\r\n repeatplayer,\r\n weekwarrior,\r\n overachiever,\r\n superspeedy,\r\n topten,\r\n weeklytop,\r\n independent,\r\n lastlevelboss,\r\n loyalplayer,\r\n centurion,\r\n teamplayer,\r\n groupchampions,\r\n groupgamers,\r\n loyalleague,\r\n leaderboardlegends,\r\n} from '../images/badges';\r\n\r\n// Standard Badges\r\nexport const standardBadgeIds = [\r\n 'RepeatPlayer',\r\n 'WeekWarrior',\r\n 'OverAchiever',\r\n 'SuperSpeedy',\r\n 'AllTimeTopTen',\r\n 'WeeklyTopFive',\r\n 'Independent',\r\n 'LastLevelBoss',\r\n 'LoyalPlayer',\r\n 'Centurion',\r\n 'TeamPlayer',\r\n 'GroupChampions',\r\n 'GroupGamers',\r\n 'LoyalLeague',\r\n 'LeaderboardLegends',\r\n] as const;\r\n\r\nexport type StandardBadgeId = (typeof standardBadgeIds)[number];\r\n\r\ntype StandardBadgeImageDictionaryMap = {\r\n [key in StandardBadgeId]: string;\r\n};\r\n\r\nexport const StandardBadgeImageDictionary: StandardBadgeImageDictionaryMap = {\r\n RepeatPlayer: repeatplayer,\r\n WeekWarrior: weekwarrior,\r\n OverAchiever: overachiever,\r\n SuperSpeedy: superspeedy,\r\n AllTimeTopTen: topten,\r\n WeeklyTopFive: weeklytop,\r\n Independent: independent,\r\n LastLevelBoss: lastlevelboss,\r\n LoyalPlayer: loyalplayer,\r\n Centurion: centurion,\r\n TeamPlayer: teamplayer,\r\n GroupChampions: groupchampions,\r\n GroupGamers: groupgamers,\r\n LoyalLeague: loyalleague,\r\n LeaderboardLegends: leaderboardlegends,\r\n};\r\n\r\n//Limited Badges\r\nexport const getLimitedEditionBadgeUrlFromKey = (key: string) =>\r\n `https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/${key.toLowerCase()}.svg`;\r\n\r\nexport interface ProfileDto extends ProfileStatsDto {\r\n badges: StandardBadgeDetailsDto[];\r\n limitedEditionBadges: LimitedEditionBadgeDetailsDto[];\r\n}\r\n\r\nexport type BadgeBaseDto = {\r\n name: string;\r\n description: string;\r\n};\r\n\r\nexport type StandardBadgeDto = BadgeBaseDto & {\r\n key: StandardBadgeId;\r\n isLimitedEdition: false;\r\n};\r\n\r\nexport type LimitedEditionBadgeDto = BadgeBaseDto & {\r\n key: string;\r\n isLimitedEdition: true;\r\n};\r\n\r\nexport interface ProfileStatsDto {\r\n gamesStarted: string;\r\n gamesFinished: string;\r\n currentStreak: string;\r\n levelsCompleted: string;\r\n totalPlayTime: string;\r\n highestPositionWeekly: string;\r\n highestPositionAllTime: string;\r\n}\r\n\r\ninterface BadgeDetailsDto {\r\n hasEarned: boolean;\r\n description: string;\r\n}\r\n\r\nexport interface LimitedEditionBadgeDetailsDto extends BadgeDetailsDto {\r\n key: string;\r\n}\r\n\r\nexport interface StandardBadgeDetailsDto extends BadgeDetailsDto {\r\n key: StandardBadgeId;\r\n}\r\n","//Limited Edition\r\nexport const springintolove = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/springintolove.svg';\r\nexport const april2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/april2022.svg';\r\nexport const may2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/may2022.svg';\r\nexport const loveclassified = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/loveclassifiedpost.svg';\r\nexport const june2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/june2022.svg';\r\nexport const summernights = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/summernights.svg';\r\nexport const july2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/july2022.svg';\r\nexport const august2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/august2022.svg';\r\nexport const fallintolove = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/fallintolove.svg';\r\nexport const september2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/september2022.svg';\r\nexport const october2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/october2022.svg';\r\nexport const november2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/november2022.svg';\r\nexport const december2022 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/december2022.svg';\r\nexport const january2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/january2023.svg';\r\nexport const february2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/february2023.svg';\r\nexport const march2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/march2023.svg';\r\nexport const april2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/april2023.svg';\r\nexport const may2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/may2023.svg';\r\nexport const june2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/june2023.svg';\r\nexport const july2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/july2023.svg';\r\nexport const august2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/august2023.svg';\r\nexport const september2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/september2023.svg';\r\nexport const october2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/october2023.svg';\r\nexport const november2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/november2023.svg';\r\nexport const december2023 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/december2023.svg';\r\nexport const january2024 = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/limited/january2024.svg';\r\n\r\n//Standard\r\nexport const repeatplayer = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/3-days.svg';\r\nexport const weekwarrior = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/5-days.svg';\r\nexport const overachiever = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/over-achiever.svg';\r\nexport const superspeedy = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/super-speedy.svg';\r\nexport const topten = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/all-time-top-10.svg';\r\nexport const weeklytop = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/weekly-top-5.svg';\r\nexport const independent = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/independent.svg';\r\nexport const lastlevelboss = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/last-level-boss.svg';\r\nexport const loyalplayer = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/loyal-player.svg';\r\nexport const centurion = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/centurion.svg';\r\n\r\nexport const teamplayer = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/teamplayer-2x.webp';\r\nexport const groupchampions =\r\n 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/group-champions-2x.webp';\r\nexport const groupgamers = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/group-gamers-2x.webp';\r\nexport const loyalleague = 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/loyal-league-2x.webp';\r\nexport const leaderboardlegends =\r\n 'https://1240369105.rsc.cdn77.org/matchingmoments/badges/standard/leaderboard-legends-2x.webp';\r\n","import React from 'react';\r\nimport { Image } from 'react-bootstrap';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { getLimitedEditionBadgeUrlFromKey } from '../../types/UserProfile';\r\n\r\ninterface IGameModalBadgeBodyProps {\r\n badgeDescription: string;\r\n badgeKey: string;\r\n}\r\n\r\nconst GameModalBadgeBody: React.FC = ({ badgeDescription, badgeKey }) => (\r\n <>\r\n \r\n

New Badge Available!

\r\n
{badgeDescription}
\r\n
\r\n \r\n \"\"\r\n \r\n \r\n);\r\n\r\nexport default GameModalBadgeBody;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Button from '../Layout/Button';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport './Modal.scss';\r\nimport RootState from '../../types';\r\nimport { useSelector } from 'react-redux';\r\nimport trackPageViewGoogle from '../../infrastructure/tracking';\r\nimport { gameIntroModal, returningUserModal } from '../../types/pageNameContants';\r\nimport { selectIsCurrentSweepstake } from '../../slices/sweepstakes/selectors';\r\nimport { getFromLocalStorage, setOnLocalStorage } from '../../helpers/LocalStorageHelper';\r\nimport { localStorageBadgeNotificationKey } from '../../constants';\r\nimport GameModalStandardBody from './GameModalStandardBody';\r\nimport GameModalBadgeBody from './GameModalBadgeBody';\r\n\r\ninterface GameModalProps {\r\n show: boolean;\r\n hideModal: () => void;\r\n restart: () => void;\r\n showRestart: boolean;\r\n}\r\n\r\nconst GameModal: React.FC = ({ show, hideModal, restart, showRestart }) => {\r\n const [animationStep, setAnimationStep] = useState(0);\r\n const { newFormEntryAdded: newEntry, newBadgeNotification, id } = useSelector((state: RootState) => state.user);\r\n const { loading, totalNumberOfLevels } = useSelector((state: RootState) => state.game);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n const lastNotificationShown = getFromLocalStorage(`${localStorageBadgeNotificationKey}${id}`);\r\n const showBadgeNotification = newBadgeNotification && lastNotificationShown !== newBadgeNotification.key;\r\n\r\n const setBadgeNotificationShown = () => {\r\n if (showBadgeNotification) {\r\n setOnLocalStorage(`${localStorageBadgeNotificationKey}${id}`, newBadgeNotification!.key);\r\n }\r\n };\r\n useEffect(() => {\r\n if (!showBadgeNotification) {\r\n const timeout = setTimeout(\r\n () => setAnimationStep(animationStep < 12 ? animationStep + 1 : 0),\r\n animationStep === 0 ? 1000 : 2000\r\n );\r\n return () => clearTimeout(timeout);\r\n }\r\n }, [animationStep]);\r\n\r\n useEffect(() => {\r\n if (show) {\r\n const pageTitle = !showRestart ? gameIntroModal : returningUserModal;\r\n const pagePath = !showRestart ? '/game/intro' : '/game/continue';\r\n trackPageViewGoogle(pageTitle, pagePath);\r\n }\r\n }, [show]);\r\n\r\n return (\r\n {\r\n hideModal();\r\n setBadgeNotificationShown();\r\n }}\r\n className={`intro-modal intro-modal-step-${animationStep}`}\r\n >\r\n {!showBadgeNotification && (\r\n \r\n )}\r\n {showBadgeNotification && (\r\n \r\n )}\r\n\r\n \r\n {showRestart ? (\r\n
\r\n {\r\n trackEvent('User Game Continued', 'Continue Button Selected', 'Returning User Game Modal');\r\n hideModal();\r\n setBadgeNotificationShown();\r\n }}\r\n disabled={loading}\r\n >\r\n Continue\r\n \r\n {\r\n trackEvent('User Game Restarted', 'Start Again Button Selected', 'Returning User Game Modal');\r\n restart();\r\n setBadgeNotificationShown();\r\n }}\r\n disabled={loading}\r\n >\r\n Start Again\r\n \r\n
\r\n ) : (\r\n {\r\n trackEvent('Play Now', 'Play Now Selected', 'Game Intro Modal');\r\n hideModal();\r\n setBadgeNotificationShown();\r\n }}\r\n disabled={loading}\r\n >\r\n Start Playing\r\n \r\n )}\r\n {isCurrentSweepstake && !showBadgeNotification && (\r\n

Up to 11 bonus entries per day for game play

\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default GameModal;\r\n","export const getFromLocalStorage = (key: string, defaultValue: string = '') => {\r\n try {\r\n const item = window.localStorage.getItem(key);\r\n return item ?? defaultValue;\r\n } catch {\r\n return defaultValue;\r\n }\r\n};\r\n\r\nexport const setOnLocalStorage = (key: string, value: string) => {\r\n try {\r\n window.localStorage.setItem(key, value);\r\n } catch {}\r\n};\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { TutorialSteps } from '../../images/backgrounds';\r\nimport { TutorialStepsSweepstakes } from '../../images/backgrounds';\r\nimport { selectIsCurrentSweepstake } from '../../slices/sweepstakes/selectors';\r\n\r\nimport './Modal.scss';\r\n\r\nconst InteractiveTutorial = () => {\r\n const [animationStep, setAnimationStep] = useState(0);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n useEffect(() => {\r\n const timeout = setTimeout(\r\n () => setAnimationStep(animationStep < 3 ? animationStep + 1 : 0),\r\n animationStep === 0 ? 1000 : 3000\r\n );\r\n return () => clearTimeout(timeout);\r\n }, [animationStep]);\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
    \r\n
  1. \r\n

    Tap on identical tiles to create connecting paths between them

    \r\n
  2. \r\n
  3. \r\n

    Connecting paths cannot have more than 3 lines

    \r\n
  4. \r\n
  5. \r\n

    Connecting paths must be unobstructed by other tiles

    \r\n
  6. \r\n
  7. \r\n

    You receive more points for completing a round faster

    \r\n
  8. \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default InteractiveTutorial;\r\n","import UserState from '../slices/users/UserState';\r\nimport GameState from '../slices/game/GameState';\r\nimport SweepstakeState from '../slices/sweepstakes/SweepstakeState';\r\nimport ShareState from '../slices/sharing/ShareState';\r\nimport PromotionState from '../slices/promotion/PromotionState';\r\nimport GameConfigState from '../slices/gameconfig/GameConfigState';\r\nimport { StandardBadgeDto, LimitedEditionBadgeDto } from './UserProfile';\r\nimport GroupInviteState from 'slices/groupinvite/GroupInviteState';\r\nimport { GroupType } from './Groups';\r\n// import AdState from '../slices/ads/AdState';\r\n\r\nexport * from './UserProfile';\r\n\r\nexport default interface RootState {\r\n game: GameState;\r\n gameConfig: GameConfigState;\r\n isWebView: { webView: boolean };\r\n promotion: PromotionState;\r\n share: ShareState;\r\n sweepstake: SweepstakeState;\r\n user: UserState;\r\n groupInvite: GroupInviteState;\r\n // ads: AdState;\r\n}\r\n\r\nexport interface TrackingPageViewProps {\r\n trackPageView: (pageTitle: string, pagePath: string) => void;\r\n}\r\n\r\nexport interface TrackingEventProps {\r\n trackEvent: (category: string, action: string, label: string) => void;\r\n}\r\n\r\nexport interface TrackingProps extends TrackingEventProps, TrackingPageViewProps {}\r\n\r\nexport interface UserBaseDto {\r\n name: string;\r\n emailAddress: string;\r\n id: string;\r\n isNew: boolean;\r\n lastLevelPlayed: number;\r\n currentScore: number;\r\n highScore: number;\r\n shareCode: string;\r\n shufflesRemaining?: number;\r\n hintsRemaining?: number;\r\n acceptedRules: boolean;\r\n totalSecondsRemaining: number;\r\n newBadgeNotification: LimitedEditionBadgeDto | null;\r\n}\r\n\r\nexport interface UserDto extends UserBaseDto {\r\n entryCount: number;\r\n grandPrizeCount: number;\r\n hasVideoEntryAwarded: boolean;\r\n newFormEntryAdded: boolean;\r\n currentSweepstakeEnd: string | null;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n nextSweepstakeStart: string | null;\r\n timeToNextEntryMs: number;\r\n badgeCount: number;\r\n profileImage: number;\r\n}\r\n\r\nexport interface EntryCountDto {\r\n newFormEntryAdded: boolean;\r\n entryCount: number;\r\n currentSweepstakeEnd: string | null;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n nextSweepstakeStart: string | null;\r\n timeToNextEntryMs: number;\r\n awardedBadges: Array;\r\n nearlyThereNotifications: Array;\r\n badgeCount: number;\r\n newBadgeNotification: LimitedEditionBadgeDto | null;\r\n profileImage: number;\r\n grandPrizeCount: number;\r\n acceptedRules: boolean;\r\n hasVideoEntryAwarded: boolean;\r\n}\r\n\r\nexport enum ShareType {\r\n Generic,\r\n MyTree,\r\n}\r\n\r\nexport enum PopUpType {\r\n Click,\r\n Feed,\r\n}\r\n\r\nexport enum TuneInType {\r\n Vimeo = 'Vimeo',\r\n Invite = 'Invite',\r\n Image = 'Image',\r\n Video = 'Video',\r\n}\r\n\r\nexport interface PromotedItemDto {\r\n imageUrl: string;\r\n logoUrl: string;\r\n title: string;\r\n displayTitle: string;\r\n tuneIn: string;\r\n type: TuneInType;\r\n vimeoCode: string;\r\n externalUrl: string;\r\n videoUrl: string;\r\n awardEntry: boolean;\r\n id: string;\r\n}\r\n\r\nexport interface TileDto {\r\n url: string;\r\n}\r\n\r\nexport interface GameConfigDto {\r\n landingPageText: string;\r\n prizeTitle: string;\r\n promotedItems: PromotedItemDto[];\r\n tiles: TileDto[];\r\n}\r\n\r\nexport interface SweepsDetailsDto {\r\n currentSweepstakeEnd: string | null;\r\n currentSweepstakeName: string | null;\r\n nextSweepstakeName: string | null;\r\n nextSweepstakeStart: string | null;\r\n}\r\n\r\nexport interface ILeaderboardItem {\r\n name: string;\r\n rank: string;\r\n score: string;\r\n profileImage?: number;\r\n groupType: GroupType;\r\n inviteCode?: string | null;\r\n isGroupMember: boolean;\r\n}\r\n","import React, { useRef } from 'react';\r\n\r\ninterface VimeoPlayerProps {\r\n vimeoCode: string;\r\n}\r\n\r\nconst VimeoPlayer: React.FC = ({ vimeoCode }) => {\r\n const containerRef = useRef(null);\r\n const src = `https://player.vimeo.com/video/${vimeoCode}`;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VimeoPlayer;\r\n","import React, { useEffect, useRef } from 'react';\r\nimport videojs, { VideoJsPlayer, VideoJsPlayerOptions } from 'video.js';\r\nimport 'video.js/dist/video-js.css';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\n\r\ninterface IVideoPlayerProps {\r\n videoUrl: string;\r\n playcardUrl: string;\r\n trackingTitle: string;\r\n label: string;\r\n onPlay?: (() => void) | null;\r\n}\r\n\r\nconst VideoPlayer: React.FC = ({ videoUrl, playcardUrl, trackingTitle, label, onPlay }) => {\r\n const videoRef = useRef(null);\r\n const videoPlayerRef = useRef(null);\r\n\r\n const videoJsOptions: VideoJsPlayerOptions = {\r\n autoplay: false,\r\n playbackRates: [1],\r\n width: 1920,\r\n height: 1080,\r\n controls: true,\r\n controlBar: false,\r\n sources: [\r\n {\r\n src: videoUrl,\r\n type: 'video/mp4',\r\n },\r\n ],\r\n preload: 'none',\r\n };\r\n\r\n useEffect(() => {\r\n function disposePlayer() {\r\n if (videoPlayerRef.current && videoPlayerRef.current.dispose) {\r\n videoPlayerRef.current.dispose();\r\n }\r\n }\r\n\r\n if (videoRef.current) {\r\n videoPlayerRef.current = videojs(videoRef.current, videoJsOptions);\r\n videoPlayerRef.current.one('play', () => {\r\n if (onPlay) onPlay();\r\n trackEvent(`Promo Video in ${label}`, 'Video Play', trackingTitle);\r\n });\r\n }\r\n\r\n return disposePlayer;\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n
\r\n (videoRef.current = node)}\r\n className=\"video-js vjs-default-skin vjs-show-big-play-button-on-pause\"\r\n controls={false}\r\n preload=\"auto\"\r\n poster={playcardUrl}\r\n data-setup='{\"fluid\": true}'\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default VideoPlayer;\r\n","import RootState, { TuneInType } from '../../types';\r\nimport { PromotedItemDto } from '../../types/index';\r\n\r\nconst promotedItemFallback: PromotedItemDto = {\r\n type: TuneInType.Invite,\r\n externalUrl: '',\r\n imageUrl: '',\r\n logoUrl: '',\r\n title: '',\r\n displayTitle: '',\r\n tuneIn: '',\r\n vimeoCode: '',\r\n videoUrl: '',\r\n awardEntry: false,\r\n id: '',\r\n};\r\nexport const selectPromotedItem = (state: RootState) =>\r\n state.promotion.count ? state.promotion.promotedItems[state.promotion.promotionIndex] : promotedItemFallback;\r\n","import RootState from '../../types';\r\n\r\nexport const selectHasVideoEntryAwarded = (state: RootState) => state.user.hasVideoEntryAwarded;\r\n\r\nexport const selectUserId = (state: RootState) => state.user.id;\r\n","import React, { useEffect, useState } from 'react';\r\nimport useLinkTarget from '../../infrastructure/isWebView/useLinkTarget';\r\nimport './TuneIn.scss';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { EntryCountDto, TuneInType } from '../../types';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport VimeoPlayer from '../Media/VimeoPlayer';\r\nimport VideoPlayer from '../Media/VideoPlayer';\r\nimport { selectPromotedItem } from '../../slices/promotion/selectors';\r\nimport CallApi from '../../infrastructure/api/CallApi';\r\nimport { setEntryCount } from '../../slices/users/actions';\r\nimport { selectHasVideoEntryAwarded, selectUserId } from '../../slices/users/selectors';\r\nimport { selectApiCallInProgress } from '../../slices/game/selectors';\r\n\r\ninterface ModalTuneInProps {\r\n showInvite?: boolean;\r\n label: string;\r\n}\r\n\r\nconst setVideoView = (promotedItemId: string, userId: string, dispatch: any) => {\r\n const model = { promotedItemId, userId };\r\n\r\n CallApi(`api/app/promoted-item/viewed`, 'POST', model)\r\n .then((response) => {\r\n if (response.data) {\r\n dispatch(setEntryCount(response.data));\r\n }\r\n })\r\n .catch((e) => console.log(e));\r\n};\r\n\r\nconst ModalTuneIn: React.FC = ({ showInvite, label }) => {\r\n const dispatch = useDispatch();\r\n const linkTarget = useLinkTarget();\r\n const hasVideoEntryAwarded = useSelector(selectHasVideoEntryAwarded);\r\n const apiCallInProgress = useSelector(selectApiCallInProgress);\r\n const userId = useSelector(selectUserId);\r\n const [isPlayed, setIsPlayed] = useState(false);\r\n\r\n const { id, type, externalUrl, imageUrl, title, displayTitle, vimeoCode, logoUrl, tuneIn, videoUrl, awardEntry } =\r\n useSelector(selectPromotedItem);\r\n\r\n const needToCallApi = isPlayed && awardEntry && hasVideoEntryAwarded === false && apiCallInProgress === false;\r\n\r\n useEffect(() => {\r\n if (needToCallApi) {\r\n setVideoView(id, userId, dispatch);\r\n }\r\n }, [dispatch, id, needToCallApi, userId]);\r\n\r\n if (type === TuneInType.Invite || showInvite) {\r\n return null;\r\n }\r\n\r\n if (type === TuneInType.Video) {\r\n return (\r\n
\r\n
\r\n
{displayTitle}
\r\n
{tuneIn}
\r\n
\r\n
\r\n setIsPlayed(true)}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (type === TuneInType.Vimeo) {\r\n return (\r\n
\r\n
\r\n
\r\n {/* \"\" */}\r\n \"\"\r\n
\r\n
{tuneIn}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n if (type === TuneInType.Image) {\r\n return (\r\n
\r\n
\r\n
{displayTitle}
\r\n\r\n
{tuneIn}
\r\n
\r\n trackEvent('Movie Tune In Selected', `Tune In Selected in ${label}`, title)}\r\n >\r\n \"\"\r\n \r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default ModalTuneIn;\r\n","import Game from './Scenes/Game';\r\n\r\nexport enum BoardGravity {\r\n None,\r\n Down,\r\n Up,\r\n Left,\r\n Right,\r\n}\r\n\r\nexport interface coord {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport enum GameOverType {\r\n TimeUp,\r\n NoMoves,\r\n}\r\n\r\nexport interface SceneConfig {\r\n level: number;\r\n windowWidth: number;\r\n totalNumberOfLevels: number;\r\n autoStart?: boolean;\r\n}\r\n\r\nexport interface BoardPosition {\r\n color: number;\r\n filled: boolean;\r\n}\r\n\r\nexport class Level {\r\n constructor(\r\n public columnCount: number,\r\n public rowCount: number,\r\n public timeInSeconds: number,\r\n public gravity: BoardGravity,\r\n public numberOfTileTypes: number,\r\n public pointsPerMatch: number,\r\n public levelCompleteMessage?: string,\r\n public changingGravity: boolean = false\r\n ) {}\r\n\r\n isMobile: boolean = false;\r\n\r\n numberOfColumns(): number {\r\n return this.isMobile ? this.rowCount : this.columnCount;\r\n }\r\n\r\n numberOfRows(): number {\r\n return this.isMobile ? this.columnCount : this.rowCount;\r\n }\r\n\r\n maxOfColumnsOrRows(): number {\r\n return Math.max(this.columnCount, this.rowCount);\r\n }\r\n}\r\n\r\nexport interface LevelList {\r\n [key: number]: Level;\r\n}\r\n\r\nexport interface PieceSprite extends Phaser.GameObjects.GameObject, Phaser.GameObjects.Sprite {\r\n color?: number;\r\n piece?: boolean;\r\n pos?: coord;\r\n}\r\n\r\nexport interface StormPhaserGame extends Phaser.Game {\r\n scene: StormGameScene;\r\n}\r\n\r\ninterface StormGameScene extends Phaser.Scenes.SceneManager {\r\n keys: StormGameKeys;\r\n}\r\n\r\ninterface StormGameKeys {\r\n Game?: Game;\r\n}\r\n","import { LevelList, Level, BoardGravity } from '../types';\r\n\r\nconst levels: LevelList = {\r\n 1: new Level(4, 3, 180, BoardGravity.None, 3, 10, 'Good job! Watch out as each level will get harder!'),\r\n 2: new Level(5, 4, 180, BoardGravity.None, 5, 20, 'Great work! The next level has even more tiles to connect!'),\r\n 3: new Level(6, 4, 180, BoardGravity.None, 6, 30, 'Congratulations! The next level has even more tiles to connect!'),\r\n 4: new Level(6, 5, 180, BoardGravity.None, 8, 40, 'Good job! Watch out as we will add in more tile variety! '),\r\n 5: new Level(6, 5, 180, BoardGravity.None, 9, 50, 'Congratulations! The next level has even more tiles to connect!'),\r\n 6: new Level(8, 4, 180, BoardGravity.None, 10, 60, 'Great work! The next level has even more tiles to connect!'),\r\n 7: new Level(8, 5, 180, BoardGravity.None, 13, 70, 'Watch out! Tiles in the next level might start moving…'),\r\n 8: new Level(\r\n 8,\r\n 5,\r\n 180,\r\n BoardGravity.Down,\r\n 14,\r\n 80,\r\n 'Great work! Tiles in the next level may start moving in a different direction…'\r\n ),\r\n 9: new Level(8, 5, 180, BoardGravity.Right, 14, 90, 'Excellent work! Here comes another direction...'),\r\n // message should not be shown if no level 11\r\n 10: new Level(\r\n 8,\r\n 5,\r\n 180,\r\n BoardGravity.Left,\r\n 14,\r\n 100,\r\n \"Amazing! You've now unlocked Level 11 - the ultimate challenge!\"\r\n ),\r\n 11: new Level(8, 6, 180, BoardGravity.None, 20, 110, undefined, true),\r\n};\r\n\r\nexport default levels;\r\n","/* eslint-disable no-useless-escape */\r\nconst shareCodeKey = 'HallmarkMatchingMomentsShareCode';\r\n\r\nexport const numberWithCommas: (input: number) => string = (input) =>\r\n input !== undefined ? input.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : '0';\r\n\r\nexport const insertItemAtIndex: (array: Array, item: T, index: number) => Array = (array, item, index) => [\r\n ...array.slice(0, index),\r\n item,\r\n ...array.slice(index),\r\n];\r\n\r\nexport const getRandomItemFromArray: (array: Array) => T = (array) => {\r\n return array[Math.floor(Math.random() * array.length)];\r\n};\r\n\r\nexport const formatTime: (seconds: number) => string = (seconds: number) => {\r\n // Minutes\r\n const minutes = Math.floor(seconds / 60);\r\n // Seconds\r\n const partInSecondsNumber = seconds % 60;\r\n // Adds left zeros to seconds\r\n const partInSeconds = partInSecondsNumber.toString().padStart(2, '0');\r\n // Returns formated time\r\n return `${minutes}:${partInSeconds}`;\r\n};\r\n\r\nexport const saveToSessionStorage = (shareCode: string) => {\r\n try {\r\n sessionStorage.setItem(shareCodeKey, shareCode);\r\n } catch (error) {}\r\n};\r\n\r\nexport const getFromSessionStorage = () => {\r\n try {\r\n const shareCode = sessionStorage.getItem(shareCodeKey);\r\n return shareCode;\r\n } catch (error) {\r\n return null;\r\n }\r\n};\r\n\r\nexport const getUrlParams = (name: string, url: string) => {\r\n const adjustedName = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n const regex = new RegExp('[?&]' + adjustedName + '(=([^&#]*)|&|#|$)');\r\n const results = regex.exec(url);\r\n if (!results || !results[2]) return null;\r\n return results[2];\r\n};\r\n\r\nexport const getUserStats = (\r\n gamesStarted: string,\r\n gamesFinished: string,\r\n currentStreak: string,\r\n levelsCompleted: string,\r\n totalPlayTime: string,\r\n highestPositionAllTime: string\r\n) => `Check Out My Game Stats!\r\n • Games Started: ${gamesStarted}\r\n • Games Finished: ${gamesFinished}\r\n • Current Streak: ${currentStreak} days\r\n • Levels Completed: ${levelsCompleted}\r\n • Total Play Time: ${totalPlayTime}mins\r\n • Highest Position: ${highestPositionAllTime}`;\r\n\r\nexport const removeTrailingSlash = (str: string) => {\r\n return str.replace(/\\/+$/, '');\r\n};\r\n\r\n// export const getPageNumbers = (currentPage: number, lastPage: number) => {\r\n// let startPage = currentPage < 5 ? 1 : currentPage - 4;\r\n// const targetEndPage = startPage + 8;\r\n// const endPage = targetEndPage > lastPage ? lastPage : targetEndPage;\r\n// let length = endPage - startPage + 1;\r\n// if (length < 9) {\r\n// const targetStartPage = endPage - 8;\r\n// startPage = targetStartPage < 1 ? 1 : targetStartPage;\r\n// length = endPage - startPage + 1;\r\n// }\r\n// return Array.from({ length }, (_, i) => i + startPage);\r\n// };\r\n\r\nexport const getPageNumbers = (currentPage: number, lastPage: number, isMobile: boolean) => {\r\n if (isMobile) {\r\n let startPage = currentPage - 1;\r\n if (currentPage === 1) startPage = 1;\r\n if (currentPage === lastPage) startPage = lastPage - 2;\r\n const endPage = startPage + 2 > lastPage ? lastPage : startPage + 2;\r\n\r\n return Array.from({ length: endPage - startPage + 1 }, (_, index) => index + startPage);\r\n } else {\r\n let startPage = currentPage < 5 ? 1 : currentPage - 4;\r\n const targetEndPage = startPage + 8;\r\n const endPage = targetEndPage > lastPage ? lastPage : targetEndPage;\r\n let length = endPage - startPage + 1;\r\n if (length < 9) {\r\n const targetStartPage = endPage - 8;\r\n startPage = targetStartPage < 1 ? 1 : targetStartPage;\r\n length = endPage - startPage + 1;\r\n }\r\n\r\n return Array.from({ length }, (_, index) => index + startPage);\r\n }\r\n};\r\n","export default __webpack_public_path__ + \"static/media/time.baa1ffd7.svg\";","export default __webpack_public_path__ + \"static/media/points.84d325d7.svg\";","import React, { useState, useEffect } from 'react';\r\nimport CountUp from 'react-countup';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Button from '../Layout/Button';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport ModalTuneIn from './ModalTuneIn';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport levels from '../../game/Helpers/levels';\r\nimport useWindowDimensions from '../../infrastructure/hooks/useWindowDimensions';\r\nimport { numberWithCommas } from '../../helpers/index';\r\nimport { selectPromotedItem } from '../../slices/promotion/selectors';\r\nimport timeIcon from '../../images/game/time.svg';\r\nimport scoreIcon from '../../images/game/points.svg';\r\n\r\ninterface NextLevelModalProps {\r\n show: boolean;\r\n hideModal: () => void;\r\n}\r\n\r\nconst NextLevelModal: React.FC = ({ show, hideModal }) => {\r\n const [showTotalScore, setShowTotalScore] = useState(false);\r\n const {\r\n totalScore: score,\r\n totalScoreBeforeBonus,\r\n completionTime: time,\r\n levelCompleted,\r\n loading,\r\n } = useSelector((state: RootState) => state.game);\r\n const { awardEntry } = useSelector(selectPromotedItem);\r\n const { hasVideoEntryAwarded } = useSelector((state: RootState) => state.user);\r\n const completionMessage = levels[levelCompleted]?.levelCompleteMessage;\r\n const { windowWidth } = useWindowDimensions();\r\n const [videoEntryAwarded, setVideoEntryAwarded] = useState(false);\r\n useEffect(() => {\r\n setVideoEntryAwarded(hasVideoEntryAwarded);\r\n\r\n if (!show || windowWidth < 768) {\r\n setShowTotalScore(false);\r\n }\r\n const timer = setTimeout(() => setShowTotalScore(true), 1800);\r\n\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n }, [show]);\r\n\r\n return (\r\n hideModal()}\r\n className=\"level-modal\"\r\n >\r\n \r\n

Level Cleared!

\r\n\r\n
\r\n
\r\n

COMPLETION TIME

\r\n
\r\n \"Time\"\r\n {time}\r\n
\r\n
\r\n\r\n
\r\n

TOTAL SCORE

\r\n
\r\n \"Time\"\r\n \r\n \r\n {/* {show && showTotalScore && ( */}\r\n \r\n {/* )} */}\r\n \r\n {/* {show && ( */}\r\n
\r\n

+{numberWithCommas(score - totalScoreBeforeBonus)}

\r\n
\r\n {/* )} */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {(!awardEntry || videoEntryAwarded) && completionMessage &&

{completionMessage}

}\r\n {awardEntry && !videoEntryAwarded && (\r\n

\r\n Watch this movie preview to earn an additional entry
\r\n into the Grand Prize and Weekly Prize this week!\r\n

\r\n )}\r\n {\r\n trackEvent('Go To Next Level', 'Next Level Selected', 'Next Level Modal');\r\n hideModal();\r\n }}\r\n disabled={loading}\r\n >\r\n Next Level\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default NextLevelModal;\r\n","import React, { useEffect } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Button from '../Layout/Button';\r\nimport ModalTuneIn from './ModalTuneIn';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types/index';\r\nimport Game from '../../game/Scenes/Game';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport trackPageViewGoogle from '../../infrastructure/tracking';\r\nimport { gamePausedModal } from '../../types/pageNameContants';\r\nimport timeIcon from '../../images/game/time.svg';\r\n\r\ninterface PauseModalProps {\r\n gameScene: Game | undefined;\r\n resumeTimer: () => void;\r\n formattedTime: string;\r\n}\r\n\r\nconst PauseModal: React.FC = ({ gameScene, resumeTimer, formattedTime }) => {\r\n const show = useSelector((state: RootState) => state.game.isManuallyPaused && !state.game.showHelpModal);\r\n const resume = () => {\r\n trackEvent('User Game Continued', 'Continue Button Selected', 'Game Paused Modal');\r\n gameScene?.resumeGame();\r\n resumeTimer();\r\n };\r\n\r\n useEffect(() => {\r\n if (show) {\r\n trackPageViewGoogle(gamePausedModal, '/game/pause');\r\n }\r\n }, [show]);\r\n\r\n return (\r\n \r\n \r\n

Time Remaining

\r\n
\r\n \"Time\"\r\n {formattedTime}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PauseModal;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Button from '../Layout/Button';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport useWindowDimensions from '../../infrastructure/hooks/useWindowDimensions';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport CountUp from 'react-countup';\r\nimport { numberWithCommas } from '../../helpers/index';\r\nimport ModalTuneIn from './ModalTuneIn';\r\nimport { selectIsCurrentSweepstake } from '../../slices/sweepstakes/selectors';\r\nimport timeIcon from '../../images/game/time.svg';\r\nimport scoreIcon from '../../images/game/points.svg';\r\n\r\ninterface GameCompletedModalProps {\r\n show: boolean;\r\n hideModal: () => void;\r\n}\r\n\r\nconst GameCompletedModal: React.FC = ({ show, hideModal }) => {\r\n const [showTotalScore, setShowTotalScore] = useState(false);\r\n const {\r\n totalScore: score,\r\n totalScoreBeforeBonus,\r\n completionTime: time,\r\n loading,\r\n } = useSelector((state: RootState) => state.game);\r\n const { windowWidth } = useWindowDimensions();\r\n\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n useEffect(() => {\r\n if (!show || windowWidth < 768) {\r\n setShowTotalScore(false);\r\n }\r\n const timer = setTimeout(() => setShowTotalScore(true), 1800);\r\n\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n }, [show]);\r\n\r\n // const imagesLoaded = useImages([SNSLogoHorizontal, SNSBackground.Fair, SNSBackground.People, SNSBackground.Stalls]);\r\n\r\n return (\r\n hideModal()}\r\n className=\"level-modal\"\r\n >\r\n \r\n

Congratulations!

\r\n
\r\n
\r\n

COMPLETION TIME

\r\n
\r\n \"Time\"\r\n {time}\r\n
\r\n
\r\n\r\n
\r\n

TOTAL SCORE

\r\n
\r\n \"Time\"\r\n \r\n \r\n {/* {show && showTotalScore && ( */}\r\n \r\n {/* )} */}\r\n \r\n {show && (\r\n
\r\n

+{numberWithCommas(score - totalScoreBeforeBonus)}

\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {isCurrentSweepstake && (\r\n

Play again tomorrow to earn even more entries, or now just for fun!

\r\n )}\r\n {\r\n trackEvent('Play Again', 'Play Again Selected', 'Game Complete Modal');\r\n hideModal();\r\n }}\r\n disabled={loading}\r\n >\r\n Play Again\r\n \r\n
\r\n \r\n {\r\n trackEvent('Go To Leaderboard', 'Leaderboard Button Selected', 'Game Complete Modal');\r\n }}\r\n >\r\n Leaderboard\r\n \r\n \r\n\r\n \r\n {\r\n trackEvent('Play Again', 'Play Again Selected', 'Game Complete Modal');\r\n hideModal();\r\n }}\r\n disabled={loading}\r\n >\r\n Profile\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default GameCompletedModal;\r\n","export default __webpack_public_path__ + \"static/media/help.d44ce895.svg\";","export default __webpack_public_path__ + \"static/media/hint.c66e3a50.svg\";","export default __webpack_public_path__ + \"static/media/leaderboard.be58060b.svg\";","export default __webpack_public_path__ + \"static/media/mute.b419e4fc.svg\";","export default __webpack_public_path__ + \"static/media/pause.f723efdf.svg\";","export default __webpack_public_path__ + \"static/media/shuffle.75f828d5.svg\";","export default __webpack_public_path__ + \"static/media/unmute.c23f8ed3.svg\";","import HelpIcon from './help.svg';\r\nimport HintIcon from './hint.svg';\r\nimport LeaderboardIcon from './leaderboard.svg';\r\nimport MuteIcon from './mute.svg';\r\nimport PauseIcon from './pause.svg';\r\nimport PointsIcon from './points.svg';\r\nimport ShuffleIcon from './shuffle.svg';\r\nimport TimeIcon from './time.svg';\r\nimport UnmuteIcon from './unmute.svg';\r\n\r\nexport const gameNavIconsColor = '#657B65';\r\n\r\nconst GameNavIcons = {\r\n Help: HelpIcon,\r\n Hint: HintIcon,\r\n Leaderboard: LeaderboardIcon,\r\n Mute: MuteIcon,\r\n Pause: PauseIcon,\r\n Points: PointsIcon,\r\n Shuffle: ShuffleIcon,\r\n Time: TimeIcon,\r\n Unmute: UnmuteIcon,\r\n};\r\nexport default GameNavIcons;\r\n","import React from 'react';\r\nimport Button from '../Layout/Button';\r\nimport GameNavIcons from '../../images/game';\r\nimport Game from '../../game/Scenes/Game';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { selectActiveLevel } from '../../slices/game/selectors';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport { showHelp } from '../../slices/game/actions';\r\n\r\ninterface GameButtonsProps {\r\n gameScene: Game | undefined;\r\n pauseTimer: () => void;\r\n showTooltips?: boolean;\r\n}\r\n\r\nconst GameButtons: React.FC = ({ gameScene, pauseTimer, showTooltips }) => {\r\n const dispatch = useDispatch();\r\n const { shufflesRemaining, hintsRemaining, noPossibleMoves, soundOn } = useSelector((state: RootState) => state.game);\r\n const activeLevel = useSelector(selectActiveLevel);\r\n const trackClick = (action: string, includeLevel: boolean = true) =>\r\n trackEvent('Game Interaction', action, includeLevel ? `Level ${activeLevel}` : undefined);\r\n\r\n const onPauseClick = () => {\r\n trackClick('Game Paused');\r\n pauseTimer();\r\n gameScene?.pauseGame();\r\n };\r\n\r\n const onHelpClick = () => {\r\n trackClick('Help Selected');\r\n dispatch(showHelp());\r\n pauseTimer();\r\n gameScene?.pauseGame();\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {\r\n trackClick('Shuffle Selected');\r\n gameScene?.shuffleBoard();\r\n }}\r\n className={`navigation-right__button navigation-button-img-${noPossibleMoves ? 'show' : 'hide'}`}\r\n variant=\"game\"\r\n disabled={shufflesRemaining === 0}\r\n >\r\n
\r\n \"Shuffle\"\r\n
\r\n\r\n RESHUFFLE\r\n\r\n
\r\n {shufflesRemaining}\r\n
\r\n \r\n\r\n {\r\n if (!noPossibleMoves) {\r\n trackClick('Hint Selected');\r\n gameScene?.useHint();\r\n }\r\n }}\r\n className=\"navigation-right__button\"\r\n variant=\"game\"\r\n disabled={noPossibleMoves || hintsRemaining === 0}\r\n >\r\n
\r\n \"Hint\"\r\n
\r\n\r\n HINT\r\n\r\n
\r\n {hintsRemaining}\r\n
\r\n \r\n\r\n {\r\n trackClick(`Game Sound Turned ${soundOn ? 'off' : 'on'}`, false);\r\n gameScene?.toggleSound();\r\n }}\r\n className=\"navigation-right__button\"\r\n variant=\"game\"\r\n >\r\n
\r\n \r\n
\r\n \r\n {soundOn ? 'SOUND OFF' : 'SOUND ON'}\r\n \r\n \r\n\r\n \r\n\r\n {/* */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default GameButtons;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Button from '../Layout/Button';\r\nimport ModalTuneIn from './ModalTuneIn';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport trackPageViewGoogle from '../../infrastructure/tracking';\r\nimport { gameOverTimeUpModal, gameOverNoMoreMovesModal } from '../../types/pageNameContants';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\n\r\ninterface GameOverModalProps {\r\n hideModal: () => void;\r\n}\r\n\r\nconst GameOverModal: React.FC = ({ hideModal }) => {\r\n const { showGameOverModal: show, gameOverMessage } = useSelector((state: RootState) => state.game);\r\n\r\n useEffect(() => {\r\n if (show) {\r\n const timeUp = gameOverMessage.includes('time');\r\n const pagePath = `/game/gameover/${timeUp ? 'timeup' : 'nomoremoves'}`;\r\n const pageTitle = timeUp ? gameOverTimeUpModal : gameOverNoMoreMovesModal;\r\n trackPageViewGoogle(pageTitle, pagePath);\r\n }\r\n }, [show]);\r\n\r\n return (\r\n hideModal()}\r\n className=\"level-modal game-over-modal\"\r\n >\r\n \r\n

Game Over

\r\n
{gameOverMessage}
\r\n
\r\n \r\n
\r\n \r\n {\r\n trackEvent('Go To Leaderboard', 'Leaderboard Button Selected', 'Game Over Modal');\r\n }}\r\n >\r\n Leaderboard\r\n \r\n \r\n {\r\n trackEvent('User Game Restarted', 'Start Again Button Selected', 'Game Over Modal');\r\n hideModal();\r\n }}\r\n >\r\n Start Again\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default GameOverModal;\r\n","import React from 'react';\r\nimport GameNavIcons from '../../images/game/index';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { selectActiveLevel } from '../../slices/game/selectors';\r\nimport { numberWithCommas } from '../../helpers/index';\r\n\r\ninterface GameNavProps {\r\n formattedTime: string;\r\n}\r\n\r\nconst GameNav: React.FC = ({ formattedTime }) => {\r\n const { activeScore, showNextLevelModal, levelCompleted, totalNumberOfLevels } = useSelector(\r\n (state: RootState) => state.game\r\n );\r\n const currentLevel = useSelector(selectActiveLevel);\r\n\r\n const levelToShow = showNextLevelModal && levelCompleted === totalNumberOfLevels ? totalNumberOfLevels : currentLevel;\r\n\r\n return (\r\n
\r\n
\r\n Level {levelToShow}\r\n
\r\n
\r\n
\r\n \"Time\"\r\n {formattedTime}\r\n
\r\n
\r\n \"Score\"\r\n {numberWithCommas(activeScore)}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default GameNav;\r\n","import Phaser from 'phaser';\r\n\r\nexport interface Config extends Phaser.Types.Core.GameConfig {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nconst getConfig: (windowWidth: number) => Config = (windowWidth) => {\r\n const getPixelRatio = () => {\r\n if (windowWidth <= 767) {\r\n return window.devicePixelRatio || 2;\r\n }\r\n if (windowWidth < 1750) {\r\n return 2;\r\n }\r\n return 1;\r\n };\r\n\r\n const tilePadding = (windowWidth > 767 ? 8 : 4) * getPixelRatio();\r\n const maxColumns = windowWidth > 767 ? 8 : 6;\r\n\r\n function getCanvasWidth() {\r\n switch (true) {\r\n // Big Screens\r\n case windowWidth >= 1550:\r\n return 900;\r\n\r\n // Desktop\r\n case windowWidth >= 1280:\r\n return windowWidth - 648;\r\n // Tablets\r\n case windowWidth >= 768:\r\n return 630;\r\n\r\n // Tablets\r\n case windowWidth >= 450:\r\n return 400;\r\n // Small phones\r\n default:\r\n return windowWidth - 10;\r\n }\r\n }\r\n\r\n const tileSize = ((getCanvasWidth() - tilePadding * (maxColumns - 1)) / maxColumns) * getPixelRatio();\r\n\r\n return {\r\n width: getCanvasWidth() + tileSize * 2,\r\n height: 200,\r\n devicePixelRatio: getPixelRatio(),\r\n tileSize: tileSize,\r\n tilePadding: tilePadding,\r\n type: Phaser.AUTO,\r\n parent: 'phaser-game',\r\n scale: {\r\n mode: Phaser.Scale.NONE,\r\n },\r\n render: {\r\n transparent: true,\r\n },\r\n input: {\r\n touch: {\r\n capture: true,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport default getConfig;\r\n","import Game from '../Scenes/Game';\r\nimport GetConfig from '../../helpers/GetConfig';\r\nimport store from '../../infrastructure/redux/configureStore';\r\nimport RootState from '../../types';\r\n\r\nconst preload = (game: Game) => {\r\n const { gameAssetUrl } = GetConfig();\r\n\r\n const { tiles } = (store.getState() as RootState).gameConfig;\r\n game.load.image('sign', `${gameAssetUrl}sign.png`);\r\n game.load.spritesheet('lines', `${gameAssetUrl}linesyellow.png`, { frameWidth: 108, frameHeight: 108 });\r\n for (let i = 0; i < tiles.length; i++) {\r\n game.load.image(`obj${i + 1}`, tiles[i].url);\r\n }\r\n game.load.audio('click', `${gameAssetUrl}click.mp3`);\r\n game.load.audio('connected', `${gameAssetUrl}connected.mp3`);\r\n game.load.audio('itemclick', `${gameAssetUrl}itemclick.mp3`);\r\n game.load.audio('gameover', `${gameAssetUrl}gameover.mp3`);\r\n game.load.audio('nomatch', `${gameAssetUrl}nomatch.mp3`);\r\n game.load.audio('completed', `${gameAssetUrl}completed.mp3`);\r\n game.load.audio('hint', `${gameAssetUrl}hint.mp3`);\r\n game.load.audio('shuffle', `${gameAssetUrl}shuffle.mp3`);\r\n};\r\n\r\nexport default preload;\r\n","import { BoardPosition, coord, Level } from '../types';\r\n\r\nexport const isInside: (pos: coord, board: Array>) => boolean = (pos, board) =>\r\n pos.x >= 0 && pos.y >= 0 && pos.x < board[0].length && pos.y < board.length;\r\n\r\nexport const findStraight: (\r\n to: coord,\r\n pos1: coord,\r\n pos2: coord,\r\n board: Array>,\r\n numberOfRows: number\r\n) => boolean = (to, pos1, pos2, board, numberOfRows) => {\r\n for (let i = 1; i <= numberOfRows; i++) {\r\n let val = {\r\n x: pos1.x + to.x * i,\r\n y: pos1.y + to.y * i,\r\n };\r\n if (isInside(val, board)) {\r\n if (board[val.y][val.x].filled) {\r\n if (val.x === pos2.x && val.y === pos2.y) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst find_around: (\r\n to: coord,\r\n pos1: coord,\r\n pos2: coord,\r\n board: Array>,\r\n level: Level,\r\n next?: boolean\r\n) => Array | null = (\r\n to: coord,\r\n pos1: coord,\r\n pos2: coord,\r\n board: Array>,\r\n level: Level,\r\n next: boolean = false\r\n) => {\r\n let ways = [];\r\n for (let i = 1; i <= level.maxOfColumnsOrRows(); i++) {\r\n let val = {\r\n x: pos1.x + to.x * i,\r\n y: pos1.y + to.y * i,\r\n };\r\n if (isInside(val, board)) {\r\n if (board[val.y][val.x].filled) {\r\n if (!board[val.y][val.x]) {\r\n //return false;\r\n }\r\n if (val.x === pos2.x && val.y === pos2.y) {\r\n ways.push(val);\r\n return ways;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n ways.push(val);\r\n if (next) {\r\n if (to.x === 1 || to.x === -1) {\r\n let top = find_around({ x: 0, y: -1 }, val, pos2, board, level);\r\n if (top) {\r\n for (let i = 0; i < top.length; i++) {\r\n ways.push(top[i]);\r\n }\r\n return ways;\r\n }\r\n let down = find_around({ x: 0, y: 1 }, val, pos2, board, level);\r\n if (down) {\r\n for (let i = 0; i < down.length; i++) {\r\n ways.push(down[i]);\r\n }\r\n return ways;\r\n }\r\n } else {\r\n let left = find_around({ x: -1, y: 0 }, val, pos2, board, level);\r\n if (left) {\r\n for (let i = 0; i < left.length; i++) {\r\n ways.push(left[i]);\r\n }\r\n return ways;\r\n }\r\n let right = find_around({ x: 1, y: 0 }, val, pos2, board, level);\r\n if (right) {\r\n for (let i = 0; i < right.length; i++) {\r\n ways.push(right[i]);\r\n }\r\n return ways;\r\n }\r\n }\r\n } else {\r\n if (to.x === 1 || to.x === -1) {\r\n if (findStraight({ x: 0, y: 1 }, val, pos2, board, level.maxOfColumnsOrRows())) {\r\n for (let j = val.y + 1; j < pos2.y + 1; j++) {\r\n ways.push({ x: val.x, y: j });\r\n }\r\n return ways;\r\n } else if (findStraight({ x: 0, y: -1 }, val, pos2, board, level.maxOfColumnsOrRows())) {\r\n for (let j = val.y - 1; j > pos2.y - 1; j--) {\r\n ways.push({ x: val.x, y: j });\r\n }\r\n return ways;\r\n }\r\n } else {\r\n if (findStraight({ x: 1, y: 0 }, val, pos2, board, level.maxOfColumnsOrRows())) {\r\n for (let j = val.x + 1; j < pos2.x + 1; j++) {\r\n ways.push({ x: j, y: val.y });\r\n }\r\n return ways;\r\n } else if (findStraight({ x: -1, y: 0 }, val, pos2, board, level.maxOfColumnsOrRows())) {\r\n for (let j = val.x - 1; j > pos2.x - 1; j--) {\r\n ways.push({ x: j, y: val.y });\r\n }\r\n return ways;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const findWay = (pos1: coord, pos2: coord, array: Array>, level: Level) => {\r\n let board = JSON.parse(JSON.stringify(array)); //Framed board from array\r\n for (let y = 0; y < level.numberOfRows(); y++) {\r\n board[y].unshift({ filled: false });\r\n board[y].push({ filled: false });\r\n }\r\n let bx = [];\r\n for (let x = 0; x < level.numberOfColumns() + 2; x++) {\r\n bx.push({ filled: false });\r\n }\r\n board.push(bx);\r\n board.unshift(bx);\r\n pos1.x++;\r\n pos1.y++;\r\n pos2.x++;\r\n pos2.y++;\r\n let ways = [];\r\n for (let i = 0; i < 4; i++) {\r\n let to = { x: -1, y: 0 };\r\n if (i === 1) {\r\n to = { x: 1, y: 0 };\r\n } else if (i === 2) {\r\n to = { x: 0, y: -1 };\r\n } else if (i === 3) {\r\n to = { x: 0, y: 1 };\r\n }\r\n let res = find_around(to, pos1, pos2, board, level, true);\r\n if (res) {\r\n let arr = [];\r\n res.unshift(pos1);\r\n for (let i = 0; i < res.length; i++) {\r\n arr.push({ x: res[i].x - 1, y: res[i].y - 1 });\r\n }\r\n ways.push(arr);\r\n }\r\n }\r\n let pick = null;\r\n let max = 999;\r\n for (let i = 0; i < ways.length; i++) {\r\n if (ways[i].length < max) {\r\n max = ways[i].length;\r\n pick = ways[i];\r\n }\r\n }\r\n\r\n pos1.x--;\r\n pos1.y--;\r\n pos2.x--;\r\n pos2.y--;\r\n return pick;\r\n};\r\n\r\nexport const is_layer_empty = (board: Array>, level: Level) => {\r\n for (let y = 0; y < level.numberOfRows(); y++) {\r\n for (let x = 0; x < level.numberOfColumns(); x++) {\r\n if (board[y][x].filled) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n","import { coord, Level, PieceSprite, BoardPosition } from '../types';\r\nimport { findWay } from './gameLogic';\r\n\r\nexport const hint: (\r\n array: Array>,\r\n level: Level,\r\n pieces: Phaser.GameObjects.Group\r\n) => Array | null = (array: Array>, level: Level, pieces: Phaser.GameObjects.Group) => {\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren() as PieceSprite[];\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i];\r\n let src = searchMatch(piece.pos!, array, level);\r\n if (src) {\r\n return [piece.pos!, src];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const searchMatch: (pos: coord, array: any, level: Level) => coord | null = (\r\n pos: coord,\r\n array: any,\r\n level: Level\r\n) => {\r\n let color = array[pos.y][pos.x].color;\r\n for (let y = 0; y < level.numberOfRows(); y++) {\r\n for (let x = 0; x < level.numberOfColumns(); x++) {\r\n if (y === pos.y && x === pos.x) {\r\n //\r\n } else if (array[y][x].filled) {\r\n //array[y][x].available\r\n if (array[y][x].color === color) {\r\n let way = findWay(pos, { x: x, y: y }, array, level);\r\n if (way) {\r\n return { x: x, y: y };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n","import { PieceSprite, BoardGravity, Level, BoardPosition } from '../types';\r\nimport { hint } from './possibleMoves';\r\nimport { is_layer_empty } from './gameLogic';\r\n\r\nconst changingGravityOptions = [BoardGravity.Left, BoardGravity.Right, BoardGravity.Up, BoardGravity.Down];\r\nlet changingGravityIndex = changingGravityOptions.length - 1;\r\nexport const board_update = (level: Level, array: any, pieces: Phaser.GameObjects.Group) => {\r\n for (let y = 0; y < level.numberOfRows(); y++) {\r\n for (let x = 0; x < level.numberOfColumns(); x++) {\r\n array[y][x].filled = false;\r\n array[y][x].color = 0;\r\n array[y][x].to = null;\r\n }\r\n }\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren() as PieceSprite[];\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i];\r\n array[piece.pos!.y][piece.pos!.x].filled = true;\r\n array[piece.pos!.y][piece.pos!.x].color = piece.color;\r\n }\r\n};\r\n\r\nconst afterMoveCompleteCheckValidMovesAvailable = (\r\n array: Array>,\r\n level: Level,\r\n pieces: Phaser.GameObjects.Group,\r\n onCompleted: () => void,\r\n onNoMovesRemaining: () => void\r\n) => {\r\n if (!hint(array, level, pieces)) {\r\n //No possible match\r\n if (is_layer_empty(array, level)) {\r\n onCompleted();\r\n } else {\r\n onNoMovesRemaining();\r\n }\r\n }\r\n};\r\n\r\nexport const drop = (\r\n level: Level,\r\n array: any,\r\n changeState: (newState: string) => void,\r\n pieces: Phaser.GameObjects.Group,\r\n startX: number,\r\n startY: number,\r\n tilePadding: number,\r\n size: any,\r\n scene: Phaser.Scene,\r\n onCompleted: () => void,\r\n onNoMovesRemaining: () => void,\r\n) => {\r\n let to = level.gravity;\r\n if (level.changingGravity) {\r\n changingGravityIndex = (changingGravityIndex + 1) % changingGravityOptions.length;\r\n to = changingGravityOptions[changingGravityIndex];\r\n }\r\n const isHorizontal = to === BoardGravity.Left || to === BoardGravity.Right;\r\n const ascending = to === BoardGravity.Up || to === BoardGravity.Left;\r\n const counter = to === BoardGravity.None ? 0 : dropForDirection(array, isHorizontal, ascending, level);\r\n if (counter) {\r\n drop_all(\r\n counter,\r\n changeState,\r\n pieces,\r\n array,\r\n startX,\r\n startY,\r\n tilePadding,\r\n size,\r\n scene,\r\n level,\r\n onCompleted,\r\n onNoMovesRemaining\r\n );\r\n } else {\r\n changeState('play');\r\n afterMoveCompleteCheckValidMovesAvailable(array, level, pieces, onCompleted, onNoMovesRemaining);\r\n }\r\n};\r\n\r\nconst dropForDirection = (array: any, isHorizontal: boolean, ascending: boolean, level: Level) => {\r\n const iteration1 = isHorizontal ? level.numberOfRows() : level.numberOfColumns();\r\n const iteration2 = isHorizontal ? level.numberOfColumns() : level.numberOfRows();\r\n let counter = 0;\r\n for (let a = 0; a < iteration1; a++) {\r\n let shift = 0;\r\n for (let b = ascending ? 0 : iteration2 - 1; ascending ? b < iteration2 : b >= 0; ascending ? (b += 1) : (b -= 1)) {\r\n if (!array[isHorizontal ? a : b][isHorizontal ? b : a].filled) {\r\n shift = ascending ? shift - 1 : shift + 1;\r\n } else {\r\n if (shift !== 0) {\r\n counter++;\r\n }\r\n array[isHorizontal ? a : b][isHorizontal ? b : a].to = {\r\n x: isHorizontal ? shift : 0,\r\n y: isHorizontal ? 0 : shift,\r\n };\r\n }\r\n }\r\n }\r\n return counter;\r\n};\r\n\r\nconst drop_all = (\r\n counter: number,\r\n changeState: (newState: string) => void,\r\n pieces: Phaser.GameObjects.Group,\r\n array: any,\r\n startX: number,\r\n startY: number,\r\n tilePadding: number,\r\n size: any,\r\n self: Phaser.Scene,\r\n level: Level,\r\n onCompleted: () => void,\r\n onNoMovesRemaining: () => void\r\n) => {\r\n changeState('drop');\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren() as PieceSprite[];\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i];\r\n let arr = array[piece.pos!.y][piece.pos!.x];\r\n if (arr.to.x !== 0 || arr.to.y !== 0) {\r\n piece.pos!.x += arr.to.x;\r\n piece.pos!.y += arr.to.y;\r\n let target = {\r\n x: startX + size.width * piece.pos!.x + tilePadding * piece.pos!.x,\r\n y: startY + size.height * piece.pos!.y + tilePadding * piece.pos!.y,\r\n };\r\n self.tweens.add({\r\n targets: piece,\r\n x: target.x,\r\n y: target.y,\r\n duration: 200,\r\n ease: 'Linear',\r\n // eslint-disable-next-line no-loop-func\r\n onComplete: () => {\r\n counter--;\r\n if (counter === 0) {\r\n changeState('play');\r\n board_update(level, array, pieces);\r\n afterMoveCompleteCheckValidMovesAvailable(array, level, pieces, onCompleted, onNoMovesRemaining);\r\n }\r\n },\r\n });\r\n }\r\n }\r\n};\r\n","import { coord } from '../types';\r\n\r\nconst getRadians = (degrees: number) => degrees * (Math.PI / 180);\r\n\r\nexport const hideLines = (lines: Phaser.GameObjects.Group) => {\r\n let child = lines.getChildren() as Array;\r\n let total = lines.getLength();\r\n for (let i = 0; i < total; i++) {\r\n child[i].setVisible(false);\r\n }\r\n};\r\n\r\nexport const showLines = (\r\n route: Array,\r\n lines: Phaser.GameObjects.Group,\r\n startX: number,\r\n startY: number,\r\n size: any,\r\n tilePadding: number,\r\n playSound: () => void\r\n) => {\r\n playSound();\r\n hideLines(lines);\r\n let line = lines.getChildren();\r\n let prev;\r\n let cur;\r\n for (let i = 0; i < route.length; i++) {\r\n let p = line[i] as Phaser.GameObjects.Sprite;\r\n p.setVisible(true);\r\n p.setPosition(\r\n startX + size.width * route[i].x + tilePadding * route[i].x,\r\n startY + size.height * route[i].y + tilePadding * route[i].y\r\n );\r\n p.displayWidth = size.width + tilePadding;\r\n p.displayHeight = size.height + tilePadding;\r\n\r\n if (i < route.length - 1) {\r\n //Next\r\n //\r\n }\r\n if (i === 0) {\r\n //First\r\n if (route[i].x === route[i + 1].x) {\r\n if (route[i].y > route[i + 1].y) {\r\n cur = 'up';\r\n } else {\r\n cur = 'down';\r\n }\r\n } else {\r\n if (route[i].x > route[i + 1].x) {\r\n cur = 'left';\r\n } else {\r\n cur = 'right';\r\n }\r\n }\r\n } else if (i < route.length - 1) {\r\n //Lines\r\n if (route[i].x === route[i + 1].x) {\r\n if (route[i].y > route[i + 1].y) {\r\n //UP\r\n cur = 'up';\r\n if (prev === 'up') {\r\n p.setFrame(1);\r\n } else if (prev === 'down') {\r\n //cur = 'down';\r\n } else if (prev === 'left') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(180));\r\n } else if (prev === 'right') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(90));\r\n }\r\n } else {\r\n //DOWN\r\n cur = 'down';\r\n if (prev === 'up') {\r\n //p.setFrame(1);\r\n } else if (prev === 'down') {\r\n p.setFrame(1);\r\n //cur = 'down';\r\n } else if (prev === 'left') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(270));\r\n } else if (prev === 'right') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(0));\r\n }\r\n }\r\n } else {\r\n if (route[i].x > route[i + 1].x) {\r\n //LEFT\r\n cur = 'left';\r\n if (prev === 'up') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(0));\r\n } else if (prev === 'down') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(90));\r\n } else if (prev === 'left') {\r\n p.setFrame(1);\r\n } else if (prev === 'right') {\r\n //p.setFrame(1);\r\n }\r\n } else {\r\n //RIGHT\r\n cur = 'right';\r\n if (prev === 'up') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(270));\r\n } else if (prev === 'down') {\r\n p.setFrame(2);\r\n p.setRotation(getRadians(180));\r\n } else if (prev === 'left') {\r\n //p.setFrame(1);\r\n } else if (prev === 'right') {\r\n p.setFrame(1);\r\n }\r\n }\r\n }\r\n }\r\n if (i === route.length - 1) {\r\n //Last\r\n if (route[i].x === route[i - 1].x) {\r\n if (route[i].y > route[i - 1].y) {\r\n cur = 'up';\r\n } else {\r\n cur = 'down';\r\n }\r\n } else {\r\n if (route[i].x > route[i - 1].x) {\r\n cur = 'left';\r\n } else {\r\n cur = 'right';\r\n }\r\n }\r\n p.setFrame(0);\r\n }\r\n //Set rotation\r\n // @ts-ignore\r\n if (p.frame.name === 0) {\r\n if (cur === 'up') {\r\n p.setRotation(getRadians(270));\r\n } else if (cur === 'down') {\r\n p.setRotation(getRadians(90));\r\n } else if (cur === 'left') {\r\n p.setRotation(getRadians(180));\r\n } else if (cur === 'right') {\r\n p.setRotation(getRadians(0));\r\n }\r\n // @ts-ignore\r\n } else if (p.frame.name === 1) {\r\n if (cur === 'up' || cur === 'down') {\r\n p.setRotation(getRadians(90));\r\n } else {\r\n p.setRotation(getRadians(0));\r\n }\r\n }\r\n prev = cur;\r\n }\r\n};\r\n","// @ts-nocheck\r\nimport GetConfig from '../Settings/config';\r\nimport store from '../../infrastructure/redux/configureStore';\r\nimport {\r\n setScoreOnLevelComplete,\r\n updateScoreDuringGame,\r\n updateShuffleCount,\r\n updateHintCount,\r\n loaded,\r\n} from '../../slices/game/actions';\r\nimport preload from '../Helpers/preload';\r\nimport { coord, SceneConfig, PieceSprite, GameOverType } from '../types';\r\nimport { findWay } from '../Functions/gameLogic';\r\nimport { hint } from '../Functions/possibleMoves';\r\nimport levels from '../Helpers/levels';\r\nimport { drop as mikedrop } from '../Functions/boardMovement';\r\nimport { showLines, hideLines } from '../Functions/lineDrawing';\r\nimport { setNoPossibleMoves, gameOver, toggleSound, togglePaused } from '../../slices/game/actions';\r\nimport { startingHints, startingShuffles } from '../../slices/game/reducer';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport { isAndroid } from 'react-device-detect';\r\n\r\nlet state = 'wait';\r\nlet gameStarted = false;\r\nlet useHintRef = () => {};\r\nlet shuffleBoardRef = () => {};\r\nlet gameOverRef = () => {};\r\nlet scoreOnLevelStart = 0;\r\n\r\nconst playerData = {\r\n hintsLeft: startingHints,\r\n shufflesLeft: startingShuffles,\r\n score: 0,\r\n};\r\nvar game_data = {\r\n sound: true,\r\n};\r\n\r\nexport default class Game extends Phaser.Scene {\r\n constructor() {\r\n super('Game');\r\n }\r\n public startGame(startingScore: number) {\r\n state = 'play';\r\n gameStarted = true;\r\n playerData.score = startingScore;\r\n scoreOnLevelStart = startingScore;\r\n const { hintsRemaining, shufflesRemaining } = store.getState().game;\r\n playerData.hintsLeft = hintsRemaining;\r\n playerData.shufflesLeft = shufflesRemaining;\r\n if (isAndroid) {\r\n this.scale.refresh();\r\n }\r\n }\r\n\r\n public shuffleBoard() {\r\n shuffleBoardRef();\r\n }\r\n public pauseGame() {\r\n state = 'paused';\r\n store.dispatch(togglePaused(true));\r\n }\r\n public resumeGame() {\r\n state = 'play';\r\n store.dispatch(togglePaused(false));\r\n }\r\n public useHint() {\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n useHintRef();\r\n }\r\n public toggleSound() {\r\n game_data.sound = !game_data.sound;\r\n store.dispatch(toggleSound(game_data.sound));\r\n }\r\n public gameOver(gameOverType: GameOverType) {\r\n state = 'gameover1';\r\n gameOverRef(gameOverType);\r\n }\r\n preload = () => preload(this);\r\n\r\n create(sceneConfig: SceneConfig) {\r\n if (sceneConfig.autoStart) {\r\n this.startGame(0);\r\n }\r\n const thisScene = this;\r\n thisScene.sound.setVolume(0.2);\r\n\r\n playerData.score = 0;\r\n const config = GetConfig(sceneConfig.windowWidth);\r\n const levelData = levels[sceneConfig.level];\r\n levelData.isMobile = sceneConfig.windowWidth < 768;\r\n let numberOfColumns = levelData.numberOfColumns();\r\n let numberOfRows = levelData.numberOfRows();\r\n const { pointsPerMatch } = levelData;\r\n state = gameStarted ? 'play' : state;\r\n let self = this;\r\n let hint_shown: Array;\r\n let pieces = this.add.group();\r\n let lines = this.add.group();\r\n let selected = 0;\r\n const { tileSize, tilePadding, devicePixelRatio } = config;\r\n const canvasWidth = devicePixelRatio * config.width;\r\n\r\n let maxColumns = sceneConfig.windowWidth > 767 ? 8 : 6;\r\n let maxRows = sceneConfig.windowWidth > 767 ? 6 : 8;\r\n\r\n let size = {\r\n width: tileSize,\r\n height: tileSize,\r\n };\r\n // Centering the tiles\r\n const yMargin = (sceneConfig.windowWidth > 767 ? 60 : 80) * devicePixelRatio;\r\n const rowsToUse = sceneConfig.windowWidth > 767 ? maxRows : numberOfRows;\r\n const canvasHeight = rowsToUse * tileSize + tilePadding * (rowsToUse - 1) + yMargin * 2;\r\n\r\n let start_x =\r\n (canvasWidth - size.width * numberOfColumns) / 2 + size.width / 2 - (tilePadding * (maxColumns - 1)) / 2;\r\n let start_y_mobile = tileSize / 2 + yMargin;\r\n let start_y_desktop =\r\n (canvasHeight - size.height * numberOfRows) / 2 + size.height / 2 - (tilePadding * (numberOfRows - 1)) / 2;\r\n const start_y = sceneConfig.windowWidth > 767 ? start_y_desktop : start_y_mobile;\r\n let array = [];\r\n\r\n thisScene.scale.resize(canvasWidth, canvasHeight);\r\n thisScene.scale.canvas.style.setProperty('width', `${config.width}px`);\r\n thisScene.scale.canvas.style.setProperty('height', `${canvasHeight / devicePixelRatio}px`);\r\n\r\n //Generate pieces from data\r\n let colors = [];\r\n const { tileCount } = store.getState().gameConfig;\r\n const tileChoicesShuffled = shuffle(Array.from({ length: tileCount }, (_, i) => i + 1));\r\n let _cur = 0;\r\n for (let i = 0; i < (numberOfRows * numberOfColumns) / 2; i++) {\r\n if (_cur >= levelData.numberOfTileTypes) {\r\n _cur = 0;\r\n }\r\n colors.push(tileChoicesShuffled[_cur]);\r\n _cur++;\r\n }\r\n colors = colors.concat(colors);\r\n shuffle(colors);\r\n let index = 0;\r\n for (let y = 0; y < numberOfRows; y++) {\r\n let arr_x = [];\r\n for (let x = 0; x < numberOfColumns; x++) {\r\n let color = colors[index];\r\n let data = {\r\n color: color,\r\n filled: false,\r\n };\r\n data.filled = true;\r\n const piece: PieceSprite = this.add\r\n .sprite(\r\n start_x + size.width * x + tilePadding * x,\r\n start_y + size.height * y + tilePadding * y,\r\n 'obj' + color\r\n )\r\n .setInteractive();\r\n // Set the image size to match the tile\r\n piece.displayWidth = size.width;\r\n piece.displayHeight = size.height;\r\n piece.color = color;\r\n piece.piece = true;\r\n piece.pos = {\r\n x: x,\r\n y: y,\r\n };\r\n pieces.add(piece);\r\n index++;\r\n arr_x.push(data);\r\n }\r\n array.push(arr_x);\r\n }\r\n\r\n //START UI\r\n // this.add.sprite(config.width/2,0,'header').setOrigin(0.5, 0);\r\n let sign = this.add.sprite(180, 180, 'sign');\r\n sign.displayWidth = size.width;\r\n sign.displayHeight = size.width;\r\n const animationScale = 1.1 * sign.scale;\r\n sign.setDepth(100);\r\n sign.setVisible(false);\r\n this.tweens.add({\r\n targets: sign,\r\n scaleX: animationScale,\r\n scaleY: animationScale,\r\n ease: 'Linear',\r\n duration: 250,\r\n yoyo: true,\r\n repeat: -1,\r\n });\r\n //END UI\r\n for (let i = 0; i < 25; i++) {\r\n let line = this.add.sprite(0, 0, 'lines');\r\n line.setDepth(100);\r\n line.setVisible(false);\r\n lines.add(line);\r\n }\r\n\r\n this.input.on('pointerup', (pointer) => {\r\n pointer.event.preventDefault();\r\n });\r\n\r\n this.input.on(\r\n 'gameobjectdown',\r\n (pointer, obj) => {\r\n if (obj.piece) {\r\n if (hint_shown) {\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren() as PieceSprite[];\r\n if (true) {\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i]!;\r\n if (\r\n (piece.pos!.x === hint_shown[0].x && piece.pos!.y === hint_shown[0].y) ||\r\n (piece.pos!.x === hint_shown[1].x && piece.pos!.y === hint_shown[1].y)\r\n ) {\r\n // piece.available\r\n piece.clearTint();\r\n }\r\n }\r\n }\r\n hint_shown = null;\r\n }\r\n if (!selected) {\r\n if (state === 'play') {\r\n //obj.available\r\n play_sound('itemclick', self);\r\n selected = obj;\r\n obj.setTint(0xe5bbd9);\r\n sign.setVisible(true);\r\n sign.setPosition(obj.x, obj.y);\r\n }\r\n } else {\r\n if (state === 'play') {\r\n // obj.available\r\n play_sound('itemclick', self);\r\n // eslint-disable-next-line eqeqeq\r\n if (obj.pos.x != selected.pos.x || obj.pos.y != selected.pos.y) {\r\n obj.setTint(0xe5bbd9);\r\n if (array[obj.pos.y][obj.pos.x].color === array[selected.pos.y][selected.pos.x].color) {\r\n let way = findWay(selected.pos, obj.pos, array, levelData);\r\n if (way) {\r\n playerData.score += pointsPerMatch;\r\n store.dispatch(updateScoreDuringGame(playerData.score));\r\n trackEvent('Game Interaction', 'Successful Match Made', `Level ${sceneConfig.level}`);\r\n state = 'wait1';\r\n sign.setVisible(false);\r\n showLines(way, lines, start_x, start_y, size, tilePadding, () => play_sound('connected', self));\r\n array[obj.pos.y][obj.pos.x].filled = false;\r\n array[selected.pos.y][selected.pos.x].filled = false;\r\n setTimeout(() => {\r\n state = 'wait';\r\n copy_obj(obj.x, obj.y, obj.color);\r\n copy_obj(selected.x, selected.y, selected.color);\r\n obj.destroy(true, true);\r\n selected.destroy(true, true);\r\n selected = null;\r\n setTimeout(() => {\r\n mikedrop(\r\n levelData,\r\n array,\r\n (newState) => {\r\n state = newState;\r\n },\r\n pieces,\r\n start_x,\r\n start_y,\r\n tilePadding,\r\n size,\r\n self,\r\n () => completed(),\r\n () => {\r\n if (playerData.shufflesLeft > 0) {\r\n store.dispatch(setNoPossibleMoves());\r\n play_sound('nomatch', self);\r\n } else {\r\n state = 'gameover1';\r\n setTimeout(() => gameover(GameOverType.NoMoves), 500);\r\n }\r\n }\r\n );\r\n }, 100);\r\n hideLines(lines);\r\n }, 300);\r\n } else {\r\n selected.clearTint();\r\n selected = obj;\r\n sign.setPosition(obj.x, obj.y);\r\n trackEvent('Game Interaction', 'Unsuccessful Match Made', `Level ${sceneConfig.level}`);\r\n }\r\n } else {\r\n selected.clearTint();\r\n selected = obj;\r\n sign.setPosition(obj.x, obj.y);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n this\r\n );\r\n if (!hint(array, levelData, pieces)) {\r\n this.scene.start('game');\r\n }\r\n //\r\n function copy_obj(x, y, color) {\r\n let obj = self.add.sprite(x, y, 'obj' + color);\r\n obj.displayWidth = size.width;\r\n obj.displayHeight = size.width;\r\n\r\n self.tweens.add({\r\n targets: obj,\r\n scaleY: 0,\r\n scaleX: 0,\r\n duration: 150,\r\n ease: 'Linear',\r\n onComplete: () => {\r\n obj.destroy(true, true);\r\n },\r\n });\r\n }\r\n function shuffle(arr) {\r\n let m = arr.length,\r\n t,\r\n i;\r\n // While there remain elements to shuffle…\r\n while (m) {\r\n // Pick a remaining element…\r\n i = Math.floor(Math.random() * m--);\r\n // And swap it with the current element.\r\n t = arr[m];\r\n arr[m] = arr[i];\r\n arr[i] = t;\r\n }\r\n return arr;\r\n }\r\n function shuffle_pieces() {\r\n if (selected) {\r\n selected.clearTint();\r\n selected = null;\r\n }\r\n let arr = [];\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren();\r\n for (let y = 0; y < numberOfRows; y++) {\r\n for (let x = 0; x < numberOfColumns; x++) {\r\n if (array[y][x].filled) {\r\n arr.push(array[y][x].color);\r\n }\r\n }\r\n }\r\n shuffle(arr);\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i];\r\n piece.color = arr[i];\r\n piece.setTexture('obj' + piece.color);\r\n }\r\n board_update();\r\n if (!hint(array, levelData, pieces)) {\r\n shuffle_pieces();\r\n } else {\r\n setTimeout(() => {\r\n play_sound('shuffle', self);\r\n }, 200);\r\n }\r\n }\r\n function show_hint(array, levelData, pieces) {\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren();\r\n let _hint = hint(array, levelData, pieces);\r\n if (_hint) {\r\n hint_shown = _hint;\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i];\r\n if (\r\n (piece.pos.x === _hint[0].x && piece.pos.y === _hint[0].y) ||\r\n (piece.pos.x === _hint[1].x && piece.pos.y === _hint[1].y)\r\n ) {\r\n // piece.available\r\n piece.setTint(0xe5bbd9);\r\n }\r\n }\r\n } else {\r\n alert('err');\r\n }\r\n setTimeout(() => {\r\n play_sound('hint', self);\r\n }, 200);\r\n }\r\n\r\n function board_update() {\r\n for (let y = 0; y < numberOfRows; y++) {\r\n for (let x = 0; x < numberOfColumns; x++) {\r\n array[y][x].filled = false;\r\n array[y][x].color = 0;\r\n array[y][x].to = null;\r\n }\r\n }\r\n let total = pieces.getLength();\r\n let child = pieces.getChildren();\r\n for (let i = 0; i < total; i++) {\r\n let piece = child[i];\r\n array[piece.pos.y][piece.pos.x].filled = true;\r\n array[piece.pos.y][piece.pos.x].color = piece.color;\r\n }\r\n }\r\n function completed() {\r\n state = 'bonus';\r\n gameStarted = false;\r\n store.dispatch(\r\n setScoreOnLevelComplete(playerData.score - scoreOnLevelStart, playerData.score, sceneConfig.level)\r\n );\r\n play_sound('completed', self);\r\n if (sceneConfig.level < sceneConfig.totalNumberOfLevels) {\r\n thisScene.scene.start('Game', {\r\n level: sceneConfig.level + 1,\r\n windowWidth: window.innerWidth,\r\n startingScore: sceneConfig.level < sceneConfig.totalNumberOfLevels ? playerData.score : 0,\r\n totalNumberOfLevels: sceneConfig.totalNumberOfLevels,\r\n });\r\n }\r\n }\r\n function gameover(gameOverType: GameOverType) {\r\n store.dispatch(gameOver(gameOverType === GameOverType.NoMoves ? 'No more moves!' : 'Out of time!'));\r\n play_sound('gameover', self);\r\n state = 'gameover';\r\n }\r\n gameOverRef = gameover;\r\n\r\n const useHint = () => {\r\n if (state === 'play' && playerData.hintsLeft > 0) {\r\n playerData.hintsLeft--;\r\n store.dispatch(updateHintCount());\r\n show_hint(array, levelData, pieces);\r\n if (playerData.hintsLeft === 0) {\r\n // obj.alpha = 0.5;\r\n }\r\n }\r\n };\r\n const shuffleBoard = () => {\r\n if (state === 'play' && playerData.shufflesLeft > 0) {\r\n playerData.shufflesLeft--;\r\n store.dispatch(updateShuffleCount());\r\n shuffle_pieces();\r\n }\r\n };\r\n useHintRef = useHint;\r\n shuffleBoardRef = shuffleBoard;\r\n\r\n store.dispatch(loaded());\r\n }\r\n}\r\nfunction play_sound(id, scope) {\r\n if (game_data.sound) {\r\n scope.sound.play(id);\r\n }\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { useEffect, useState, useRef } from 'react';\r\nimport { formatTime } from '../../helpers/index';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types/index';\r\n\r\nconst useCountdownTimer: (\r\n onTimeUp: () => void\r\n) => [\r\n number,\r\n string,\r\n React.Dispatch>,\r\n boolean,\r\n React.Dispatch>\r\n] = (onTimeUp) => {\r\n const [isPaused, setIsPaused] = useState(true);\r\n\r\n const [secondsRemaining, setSecondsRemaining] = useState(0);\r\n const timeoutRef = useRef | null>(null);\r\n\r\n const isManuallyPaused = useSelector((state: RootState) => state.game.isManuallyPaused);\r\n\r\n const tick = () => {\r\n if (!isPaused) {\r\n const newTime = secondsRemaining - 1;\r\n setSecondsRemaining(newTime);\r\n if (newTime === 0) {\r\n onTimeUp();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (secondsRemaining > 0 && !isPaused) {\r\n timeoutRef.current = setTimeout(tick, 1000);\r\n }\r\n }, [secondsRemaining]);\r\n\r\n useEffect(() => {\r\n if (isPaused) {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n } else {\r\n tick();\r\n }\r\n }, [isPaused]);\r\n\r\n useEffect(() => {\r\n if (isManuallyPaused && !isPaused) {\r\n setIsPaused(true);\r\n }\r\n }, [isManuallyPaused]);\r\n\r\n return [secondsRemaining, formatTime(secondsRemaining), setSecondsRemaining, isPaused, setIsPaused];\r\n};\r\n\r\nexport default useCountdownTimer;\r\n","import { SweetAlertOptions } from 'sweetalert2';\r\n\r\nconst notificationTime = 8000;\r\n\r\nexport const notificationBaseOptions: SweetAlertOptions = {\r\n backdrop: true,\r\n toast: true,\r\n position: 'top-end',\r\n timer: notificationTime,\r\n timerProgressBar: true,\r\n showConfirmButton: false,\r\n};\r\n","import Swal from 'sweetalert2';\r\nimport { StandardBadgeDto, BadgeBaseDto, LimitedEditionBadgeDto } from '../types/index';\r\nimport { StandardBadgeImageDictionary, getLimitedEditionBadgeUrlFromKey } from '../types/UserProfile';\r\nimport { trackEvent } from '../infrastructure/tracking/GoogleAnalytics';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport React from 'react';\r\nimport { Image } from 'react-bootstrap';\r\nimport { notificationBaseOptions } from './NotificationOptions';\r\n\r\nconst reactSwal = withReactContent(Swal);\r\n\r\nconst getImageUrl = (badge: StandardBadgeDto | LimitedEditionBadgeDto) =>\r\n badge.isLimitedEdition ? getLimitedEditionBadgeUrlFromKey(badge.key) : StandardBadgeImageDictionary[badge.key];\r\n\r\nexport const badgeNotification = (\r\n badges: Array,\r\n nearlyThereNotifications: Array,\r\n onViewBadgesClick: () => void\r\n) => {\r\n if (badges.length) {\r\n const badge = badges[0];\r\n singleBadgeNotification(getImageUrl(badge), onViewBadgesClick).then((response) => {\r\n if (response.isConfirmed) {\r\n trackEvent('Go To ProfilePage', 'View Standard Badges Selected', 'Badge Notification Modal');\r\n onViewBadgesClick();\r\n }\r\n badgeNotification(badges.slice(1, badges.length), nearlyThereNotifications, onViewBadgesClick);\r\n });\r\n } else if (nearlyThereNotifications.length) {\r\n const badge = nearlyThereNotifications[0];\r\n nearlyThereNotification(getImageUrl(badge), badge, onViewBadgesClick).then((response) => {\r\n if (response.isConfirmed) {\r\n trackEvent('Go To ProfilePage', 'View Limited Badges Selected', 'Badge Notification Modal');\r\n onViewBadgesClick();\r\n }\r\n badgeNotification([], nearlyThereNotifications.slice(1, nearlyThereNotifications.length), onViewBadgesClick);\r\n });\r\n }\r\n};\r\n\r\nconst getNearlyThereHtml = (\r\n image: string,\r\n onViewBadgesClick: () => void,\r\n description: string = 'You earned a badge'\r\n) => (\r\n <>\r\n \r\n
\r\n

{description}

\r\n
\r\n \r\n
\r\n
\r\n \r\n);\r\n\r\nconst singleBadgeNotification = (image: string, onViewBadgesClick: () => void) => {\r\n return reactSwal.fire({\r\n ...notificationBaseOptions,\r\n html: getNearlyThereHtml(image, () => {\r\n onViewBadgesClick();\r\n reactSwal.close();\r\n }),\r\n });\r\n};\r\n\r\nconst nearlyThereNotification = (image: string, badge: BadgeBaseDto, onViewBadgesClick: () => void) => {\r\n return reactSwal.fire({\r\n ...notificationBaseOptions,\r\n html: getNearlyThereHtml(\r\n image,\r\n () => {\r\n onViewBadgesClick();\r\n reactSwal.close();\r\n },\r\n badge.description\r\n ),\r\n });\r\n};\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport RootState, { UserBaseDto } from '../../types/index';\r\nimport useWindowDimensions from './useWindowDimensions';\r\nimport { SceneConfig, GameOverType } from '../../game/types';\r\nimport Game from '../../game/Scenes/Game';\r\nimport levels from '../../game/Helpers/levels';\r\nimport { formatTime } from '../../helpers/index';\r\nimport {\r\n addTimeBonus,\r\n restartGame,\r\n loaded,\r\n showHelp,\r\n sentToApi,\r\n apiCallEnd,\r\n apiCallStart,\r\n} from '../../slices/game/actions';\r\nimport { setEntryCount } from '../../slices/users/actions';\r\nimport { localStorageKey } from '../../constants';\r\nimport useCountdownTimer from './useCountdownTimer';\r\nimport callApi from '../../infrastructure/api/CallApi';\r\nimport getConfig, { Config } from '../../game/Settings/config';\r\nimport { EntryCountDto } from '../../types/index';\r\nimport trackPageViewGoogle from '../../infrastructure/tracking';\r\nimport { gameCompleteModal, nextLevelModal } from '../../types/pageNameContants';\r\nimport { trackEvent } from '../tracking/GoogleAnalytics';\r\nimport { startingHints, startingShuffles } from '../../slices/game/reducer';\r\nimport { badgeNotification } from '../../helpers/BadgeNotification';\r\nimport { useHistory } from 'react-router';\r\nimport { ProfileRoute } from '../../constants/Routes';\r\n\r\ninterface StormPhaserGame extends Phaser.Game {\r\n scene: StormGameScene;\r\n}\r\n\r\ninterface StormGameScene extends Phaser.Scenes.SceneManager {\r\n keys: StormGameKeys;\r\n}\r\n\r\ninterface StormGameKeys {\r\n Game?: Game;\r\n}\r\n\r\nconst useGame: (\r\n gameRef: React.MutableRefObject\r\n) => [\r\n Config,\r\n string,\r\n boolean,\r\n React.Dispatch>,\r\n React.Dispatch>,\r\n () => void\r\n] = (gameRef) => {\r\n const dispatch = useDispatch();\r\n const [secondsRemaining, formattedTime, setSecondsForNextLevel, isPaused, setIsPaused] = useCountdownTimer(() =>\r\n gameRef.current?.scene.keys.Game?.gameOver(GameOverType.TimeUp)\r\n );\r\n\r\n const {\r\n levelCompleted,\r\n showNextLevelModal,\r\n totalScore,\r\n totalSecondsRemaining,\r\n levelScore,\r\n shufflesRemaining,\r\n hintsRemaining,\r\n awaitingBonus,\r\n showGameOverModal,\r\n requiresSaveToApi,\r\n totalNumberOfLevels,\r\n } = useSelector((state: RootState) => state.game);\r\n const user = useSelector((state: RootState) => state.user);\r\n const { windowWidth } = useWindowDimensions();\r\n const config = getConfig(windowWidth);\r\n const history = useHistory();\r\n const getActiveLevel = () => (levelCompleted === totalNumberOfLevels ? 1 : levelCompleted + 1);\r\n\r\n const saveUserToLocalStorage = (\r\n score?: number,\r\n level?: number,\r\n totalSeconds?: number,\r\n hints?: number,\r\n shuffles?: number\r\n ) => {\r\n try {\r\n const localStorageUser: UserBaseDto = {\r\n ...user,\r\n currentScore: score === undefined ? totalScore : score,\r\n totalSecondsRemaining: totalSeconds === undefined ? totalSecondsRemaining : totalSeconds,\r\n lastLevelPlayed: level === undefined ? levelCompleted : level,\r\n isNew: false,\r\n hintsRemaining: hints === undefined ? hintsRemaining : hints,\r\n shufflesRemaining: shuffles === undefined ? shufflesRemaining : shuffles,\r\n newBadgeNotification: null,\r\n };\r\n localStorage.setItem(localStorageKey, JSON.stringify(localStorageUser));\r\n } catch {}\r\n };\r\n // On initial mount create the game\r\n useEffect(() => {\r\n gameRef.current = new Phaser.Game(config);\r\n gameRef.current.scene.add('Game', Game);\r\n const startingConfig: SceneConfig = {\r\n level: getActiveLevel(),\r\n windowWidth,\r\n totalNumberOfLevels,\r\n };\r\n gameRef.current.scene.start('Game', startingConfig);\r\n setSecondsForNextLevel(levels[getActiveLevel()].timeInSeconds);\r\n if (showGameOverModal || showNextLevelModal) {\r\n setShowModal(false);\r\n }\r\n gameRef.current.input.mouse.preventDefaultWheel = false;\r\n gameRef.current.input.touch.capture = false;\r\n return () => {\r\n gameRef.current && gameRef.current.destroy(true);\r\n dispatch(loaded(false));\r\n dispatch(showHelp(false));\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (showGameOverModal) {\r\n if (!isPaused) {\r\n setIsPaused(true);\r\n }\r\n callApi(`api/app/user/game-over/${user.id}`, 'POST', {});\r\n saveUserToLocalStorage(0, 0, 0, startingHints, startingShuffles);\r\n }\r\n }, [showGameOverModal]);\r\n\r\n // On level completed add time remaining bonus\r\n useEffect(() => {\r\n if (awaitingBonus) {\r\n setIsPaused(true);\r\n const completionTime = levels[levelCompleted].timeInSeconds - secondsRemaining;\r\n const bonusPoints = secondsRemaining * levelCompleted;\r\n dispatch(addTimeBonus(secondsRemaining, formatTime(completionTime), bonusPoints));\r\n }\r\n }, [awaitingBonus]);\r\n\r\n // After adding time bonus - update timer for next level and call api with level completion\r\n useEffect(() => {\r\n if (showNextLevelModal) {\r\n if (requiresSaveToApi) {\r\n const nextLevel = levels[getActiveLevel()];\r\n setSecondsForNextLevel(nextLevel.timeInSeconds);\r\n dispatch(sentToApi());\r\n dispatch(apiCallStart());\r\n callApi('api/app/game-round/completed-round', 'POST', {\r\n userId: user.id,\r\n secondsRemaining,\r\n score: levelScore,\r\n level: levelCompleted,\r\n playthroughScore: totalScore,\r\n playthroughSecondsRemaining: totalSecondsRemaining,\r\n hintsRemaining: hintsRemaining,\r\n shufflesRemaining: shufflesRemaining,\r\n })\r\n .then(({ data }) => {\r\n dispatch(setEntryCount(data));\r\n dispatch(apiCallEnd());\r\n badgeNotification(data.awardedBadges, data.nearlyThereNotifications, () => history.push(ProfileRoute));\r\n })\r\n .catch(() => {\r\n dispatch(apiCallEnd());\r\n });\r\n saveUserToLocalStorage();\r\n }\r\n if (levelCompleted === totalNumberOfLevels) {\r\n trackPageViewGoogle(gameCompleteModal, '/game/complete');\r\n if (requiresSaveToApi) {\r\n trackEvent('Game Interaction', 'Final Game Round Complete');\r\n }\r\n } else {\r\n trackPageViewGoogle(nextLevelModal, '/game/nextlevel');\r\n if (requiresSaveToApi) {\r\n trackEvent('Game Interaction', 'Game Level Complete', `'Level ${levelCompleted}`);\r\n }\r\n }\r\n }\r\n }, [showNextLevelModal]);\r\n\r\n const [showModal, setShowModal] = useState(true);\r\n\r\n const restartWithAutoStart = () => {\r\n dispatch(restartGame());\r\n setSecondsForNextLevel(levels[1].timeInSeconds);\r\n const startingConfig: SceneConfig = {\r\n level: 1,\r\n windowWidth,\r\n totalNumberOfLevels,\r\n autoStart: true,\r\n };\r\n gameRef.current?.scene.start('Game', startingConfig);\r\n setIsPaused(false);\r\n setShowModal(false);\r\n };\r\n\r\n return [config, formattedTime, showModal, setShowModal, setIsPaused, restartWithAutoStart];\r\n};\r\n\r\nexport default useGame;\r\n","import React, { useRef, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Button from './Layout/Button';\r\nimport { GameModal, PauseModal, NextLevelModal, Confetti } from './Modals';\r\nimport RootState from '../types/index';\r\nimport { startLevel } from '../slices/game/actions';\r\nimport GameCompletedModal from './Modals/GameCompletedModal';\r\nimport GameButtons from './Game/GameButtons';\r\nimport GameOverModal from './Modals/GameOverModal';\r\nimport GameNav from './Game/GameNav';\r\nimport { CloseIcon } from '../images/icons';\r\nimport { selectActiveLevel } from '../slices/game/selectors';\r\nimport useGame from '../infrastructure/hooks/useGame';\r\nimport { StormPhaserGame } from '../game/types';\r\nimport { trackEvent } from '../infrastructure/tracking/GoogleAnalytics';\r\nimport trackPageViewGoogle from '../infrastructure/tracking';\r\nimport { gamePage, gameHelpModal } from '../types/pageNameContants';\r\nimport { InteractiveTutorial } from './Modals';\r\n\r\nconst GamePage = () => {\r\n const gameRef = useRef();\r\n const gameNavRef = useRef(null);\r\n const dispatch = useDispatch();\r\n const activeLevel = useSelector(selectActiveLevel);\r\n const {\r\n showNextLevelModal,\r\n levelCompleted,\r\n totalScore,\r\n showGameOverModal,\r\n isManuallyPaused,\r\n showHelpModal,\r\n totalNumberOfLevels,\r\n } = useSelector((state: RootState) => state.game);\r\n\r\n const showHelp = isManuallyPaused && showHelpModal;\r\n\r\n const [config, formattedTime, showInitialModal, setShowInitialModal, setIsPaused, restartWithAutoStart] =\r\n useGame(gameRef);\r\n\r\n useEffect(() => {\r\n if (!showNextLevelModal && !showInitialModal) {\r\n const scrollTo = (gameNavRef.current?.getBoundingClientRect().top || 0) + window.scrollY;\r\n window.scrollTo(0, scrollTo);\r\n }\r\n }, [showNextLevelModal, showInitialModal]);\r\n\r\n useEffect(() => {\r\n if (!showNextLevelModal && !showInitialModal && !showGameOverModal && !isManuallyPaused) {\r\n trackPageViewGoogle(gamePage, '/game');\r\n }\r\n }, [showNextLevelModal, showInitialModal, showGameOverModal, isManuallyPaused]);\r\n\r\n useEffect(() => {\r\n if (showHelp) {\r\n trackPageViewGoogle(gameHelpModal, '/game/help');\r\n }\r\n }, [showHelp]);\r\n\r\n const resume = () => {\r\n trackEvent('Exit Tutorial', 'Exit Tutorial Selected', 'Game Help Modal');\r\n gameRef.current?.scene.keys.Game?.resumeGame();\r\n setIsPaused(false);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n \r\n
\r\n setIsPaused(true)}\r\n showTooltips={showHelp}\r\n />\r\n
\r\n \r\n
\r\n {showHelp && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n 1}\r\n restart={restartWithAutoStart}\r\n hideModal={() => {\r\n gameRef.current?.scene.keys.Game?.startGame(activeLevel > 1 ? totalScore : 0);\r\n setIsPaused(false);\r\n setShowInitialModal(false);\r\n }}\r\n />\r\n {\r\n dispatch(startLevel());\r\n gameRef.current?.scene.keys.Game?.startGame(activeLevel > 1 ? totalScore : 0);\r\n setIsPaused(false);\r\n }}\r\n />\r\n \r\n \r\n setIsPaused(false)}\r\n formattedTime={formattedTime}\r\n />\r\n {showNextLevelModal && }\r\n \r\n );\r\n};\r\n\r\nexport default GamePage;\r\n","import React from 'react';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { useSelector } from 'react-redux';\r\nimport { Redirect } from 'react-router';\r\nimport usePageView from '../infrastructure/hooks/usePageView';\r\nimport RootState from '../types';\r\nimport { rulesPage } from '../types/pageNameContants';\r\nimport { LandingRoute } from '../constants/Routes';\r\nimport useLinkTarget from '../infrastructure/isWebView/useLinkTarget';\r\nimport { Link } from 'react-router-dom';\r\n\r\ntype SweepsDatesDictionary = {\r\n [key: string]: { start: string; end: string };\r\n};\r\n\r\nconst sweepDates: SweepsDatesDictionary = {\r\n 'Week 1': { start: '6:00 AM ET on October 20, 2022', end: '11:59 PM ET on October 28, 2022' },\r\n 'Week 2': { start: '12:00 AM ET on October 29, 2022', end: '11:59 PM ET on November 4, 2022' },\r\n 'Week 3': { start: '12:00 AM ET on November 5, 2022', end: '11:59 PM ET on November 11, 2022' },\r\n 'Week 4': { start: '12:00 AM ET on November 12, 2022', end: '11:59 PM ET on November 18, 2022' },\r\n 'Week 5': { start: '12:00 AM ET on November 19, 2022', end: '11:59 PM ET on November 25, 2022' },\r\n 'Week 6': { start: '12:00 AM ET on November 26, 2022', end: '11:59 PM ET on December 2, 2022' },\r\n 'Week 7': { start: '12:00 AM ET on December 3, 2022', end: '11:59 PM ET on December 9, 2022' },\r\n 'Week 8': { start: '12:00 AM ET on December 10, 2022', end: '11:59 PM ET on December 16, 2022' },\r\n 'Week 9': { start: '12:00 AM ET on December 17, 2022', end: '11:59 PM ET on December 23, 2022' },\r\n 'Week 10': { start: '12:00 AM ET on December 24, 2022', end: '6:00 AM ET on January 1, 2023' },\r\n};\r\n\r\nconst RulesPage = () => {\r\n usePageView(rulesPage, '/rules');\r\n const linkTarget = useLinkTarget();\r\n\r\n const { currentSweepstakeName } = useSelector((state: RootState) => state.sweepstake);\r\n\r\n if (!currentSweepstakeName) {\r\n return ;\r\n }\r\n\r\n const dates = sweepDates[currentSweepstakeName];\r\n return (\r\n \r\n \r\n \r\n

\r\n HALLMARK CHANNEL’S LOVEUARY MATCHING MOMENTS SWEEPSTAKES\r\n
\r\n OFFICIAL RULES\r\n

\r\n

\r\n \r\n NO PURCHASE NECESSARY TO ENTER OR WIN. MAKING A PURCHASE WILL NOT IMPROVE YOUR CHANCES OF WINNING.\r\n \r\n

\r\n

\r\n \r\n ALL DISPUTES WILL BE RESOLVED SOLELY BY BINDING ARBITRATION AND ENTRANTS WAIVE THE ABILITY TO BRING CLAIMS\r\n IN A CLASS ACTION FORMAT.\r\n \r\n

\r\n\r\n

\r\n SWEEPSTAKES ENTRY PERIODS: Hallmark Channel’s Loveuary Matching Moments Sweepstakes (the\r\n “Sweepstakes”) begins at 10:00:00 AM Eastern Time (“ET”) on Monday, January 29, 2024 and ends at 11:59:59 PM\r\n ET on Sunday, February 25, 2024 (the “Sweepstakes Period”). Within the Sweepstakes Period, there are four\r\n (4) entry periods (each, an “Entry Period”). Each Entry Period will have a corresponding random drawing for\r\n the prize(s) listed as defined in the “Entry Periods & Drawings Schedule” below. At the end of the\r\n Sweepstakes Period, one (1) random drawing will be conducted from among all eligible entries received\r\n throughout the Sweepstakes Period to determine one (1) Grand Prize winner (the “Grand Prize Drawing”).\r\n Entries must be received during an Entry Period to be eligible for that Entry Period’s drawing and prize.\r\n Non-winning entries for an Entry Period will not roll over to subsequent Entry Periods. Sponsor’s computer\r\n is the official timekeeping device for this Sweepstakes.\r\n

\r\n\r\n
\r\n ENTRY PERIODS & DRAWINGS SCHEDULE\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Entry Period # \r\n ENTRY PERIODS
All eligible entries must be received between:{' '}\r\n
Drawing Date: on or around:# of Prizes per Entry PeriodEntry Period Prize Available to be won:
Entry Period Start:\r\n Entry Period End:
11:59:59 PM ET on:\r\n
110:00:00 AM ET on 01/29/2402/04/2402/07/241Period 1 Prize
212:00:00 AM ET on 02/05/2402/11/2402/14/241Period 2 Prize
312:00:00 AM ET on 02/12/2402/18/2402/21/245Period 3 Prize
412:00:00 AM ET on 02/19/2402/25/2402/28/245Period 4 Prize
\r\n\r\n

\r\n ELIGIBILITY: The Sweepstakes is open to legal residents of the 50 United States, including\r\n the District of Columbia, who are age 21 or older at the time of entry. Void in Puerto Rico, Guam, the U.S.\r\n Virgin Islands, outside the U.S., and wherever else prohibited by law. Employees of Hallmark Media United\r\n States LLC (the \"Sponsor\"), US Sweepstakes & Fulfillment Company (the “Sweepstakes Administrator”), Princess\r\n Cruise Lines, Ltd. and their respective subsidiaries, affiliates, advertising and promotion agencies, and\r\n the immediate family members (spouses, parents, children, and siblings and their spouses) of, and/or those\r\n living in the same household of each, are not eligible to enter. Sweepstakes is subject to all applicable\r\n federal, state and local laws and regulations.\r\n

\r\n\r\n

\r\n HOW TO ENTER: There are three (3) methods of earning entries:\r\n

\r\n\r\n

\r\n Method #1 – Registration Entry: During an Entry Period, participants\r\n must visit https://matchingmoments.hallmarkchannel.com/ (the “Website”),\r\n follow the instructions to read and accept these Official Rules, the{' '}\r\n \r\n Terms of Use\r\n {' '}\r\n and{' '}\r\n \r\n Privacy Policy\r\n {' '}\r\n and click the Enter Now button, then complete the entry form in its entirety and click the Start Playing\r\n button to register for the Sweepstakes (the “Registration”) and receive one (1) entry into the drawing for\r\n that Entry Period and one (1) entry into the Grand Prize Drawing (the “Registration Entry”).{' '}\r\n Limit: One (1) Registration Entry per person throughout the Sweepstakes Period.\r\n

\r\n\r\n

\r\n Method #2 – Returning User Entry: For any day following the day a\r\n participant completes a Registration, participant may return to the Website to automatically receive one (1)\r\n entry into the drawing for that Entry Period and one (1) entry into the Grand Prize drawing (the “Returning\r\n User Entry”). Limit: One (1) Returning User Entry per person per day. IMPORTANT:\r\n Participants must be logged in to his/her account to earn Returning User Entries. Entries are limited by\r\n email address so in order to earn his/her Returning User Entry, Participants must be logged with the email\r\n address they used to register for the Sweepstakes. Logged out Participants must log into the Website by\r\n completing the entry form again using the same email address they initially registered with in order to\r\n receive his/her Returning User Entry\r\n

\r\n\r\n

\r\n Method #3 – Game Entry: During an Entry Period, participants may return to the Website and\r\n play the Matching Moments game (the “Game”) per the onscreen instructions. For each level completed in the\r\n Game, participant will earn one (1) additional entry into the drawing for that Entry Period and one (1)\r\n entry into the Grand Prize Drawing (the “Game Entry”).{' '}\r\n \r\n Limit: Eleven (11) Game Entries per person per day regardless of the number of levels completed.\r\n {' '}\r\n IMPORTANT: Participants must be logged in to his/her account to earn Game Entries.\r\n

\r\n\r\n

\r\n Entrants will have the opportunity to earn additional entries into the Grand Prize drawing (each, a “Bonus\r\n Entry”) by watching the movie preview displayed after the first level entrant completes in the Game (each, a\r\n “Preview”) in its entirety to earn one (1) additional entry into the drawing for that Entry Period and one\r\n (1) additional entry into the Grand Prize Drawing (the “Bonus Entry”). IMPORTANT: Participants must be\r\n logged in to his/her account to earn Bonus Entries.{' '}\r\n Limit: One (1) Bonus Entry per person per Entry Period.\r\n

\r\n\r\n

\r\n Registration Entry, Returning User Entry, Game Entry and Bonus Entry collectively referred to herein as\r\n “Entry” or “Entries”.\r\n

\r\n\r\n

\r\n Entrants are subject to all notices posted online including but not limited to the Sponsor’s Privacy Policy,\r\n which can be found at{' '}\r\n \r\n Privacy Policy\r\n \r\n . All entries become the property of the Sponsor and will not be acknowledged or returned.\r\n

\r\n\r\n

\r\n PRIZES/APPROXIMATE RETAIL VALUE (“ARV”)/ODDS:\r\n

\r\n\r\n

\r\n Grand Prize: There is one (1) Grand Prize available to be won. Grand Prize includes one (1)\r\n $3,100 Princess Cruises promotional card that may be used towards a 4- to 7-day domestic cruise to Alaska,\r\n California Coast/Mexico, Caribbean or Europe for up to two people on a Princess Cruise and $2,100 awarded in\r\n the form of a check winner may use towards transportation to/from the point of embarkment/disembarkment for\r\n cruises, lodging or any other expenses. Cruises are subject to availability. Promotional card may not be\r\n used toward transportation to/from the point of embarkment/disembarkment for cruises. Winner and his/her\r\n guest are solely responsible for coordinating transportation. Promotional card expires March 31, 2025 and\r\n any cruise booked using such card must be completed by such date. If for any reason, a winner does not use\r\n their promotional card by March 31, 2025, then such promotional card shall be void and the winner will\r\n forfeit their right to the prize. The difference between cruise, travel, and all other costs, fees and\r\n expenses and the promotional card shall be the sole responsibility of the winner.{' '}\r\n The ARV of the Grand Prize is: $5,200.\r\n

\r\n\r\n

\r\n Period 1 Prize: There is one (1) Period 1 Prize available to be won. Period 1 Prize\r\n includes:\r\n

\r\n\r\n
    \r\n
  • One (1) Jane Austen Penguin House Clothbound set of 7 books;
  • \r\n
  • \r\n One (1) Paging Mr. Darcy prop package including one (1) tea pot set with cups and saucers, one (1) copy of\r\n the book Prize and Prejudice and one (1) hand fan; and\r\n
  • \r\n
  • One (1) package of Bissinger’s chocolates.
  • \r\n
  • \r\n ARV of the Period 1 Prize is $325.\r\n
  • \r\n
\r\n\r\n

\r\n Period 2 Prize: There is one (1) Period 2 Prize available to be won. Period 2 Prize\r\n includes:\r\n

\r\n\r\n
    \r\n
  • One (1) Jane Austen Penguin House Clothbound set of 7 books;
  • \r\n
  • One (1) Little Free Library kit (includes assembled library structure and post); and
  • \r\n
  • One (1) package of Bissinger’s chocolates.
  • \r\n
  • \r\n ARV of the Period 2 Prize is $525.\r\n
  • \r\n
\r\n\r\n

\r\n Period 3 Prizes: There are five (5) Period 3 Prizes available to be won. Each Period 3\r\n Prize includes:\r\n

\r\n\r\n
    \r\n
  • One (1) Jane Austen-themed accessory pouch;
  • \r\n
  • One (1) Jane Austen book design handbag;
  • \r\n
  • One (1) Pride and Prejudice-themed scarf; and
  • \r\n
  • One (1) package of Bissinger’s chocolates.
  • \r\n
  • \r\n ARV of the Period 3 Prize is $202 each.\r\n
  • \r\n
\r\n\r\n

\r\n Period 4 Prizes: There are five (5) Period 4 Prizes available to be won. Each Period 4\r\n Prize includes:\r\n

\r\n\r\n
    \r\n
  • One (1) 2024 Mahogany calendar;
  • \r\n
  • One (1) Self Love is the Assignment journal;
  • \r\n
  • One (1) Valentine’s Day Love Assortment, pack of 4 cards;
  • \r\n
  • One (1) Valentine’s Day Morning Afternoon, Night Assortment, pack of 3 cards;
  • \r\n
  • One (1) package of Bissinger’s chocolates;
  • \r\n
  • One (1) Sense and Sensibility 3 teacups and saucers; and
  • \r\n
  • One (1) Know Your Own Happiness scented candle.
  • \r\n
  • \r\n ARV of the Period 4 Prize is $237 each.\r\n
  • \r\n
\r\n\r\n

\r\n The total ARV of all prizes available to be won: $8,245.\r\n

\r\n\r\n

\r\n Prizes may differ from what is depicted in Sweepstakes advertising or the Website. There is a limit of one\r\n (1) prize per person per Entry Period. An individual who is a winner of a prize during Entry Periods 1-4 is\r\n still eligible to win the Grand Prize. Odds of winning will depend upon the total number of eligible entries\r\n received for each drawing.\r\n

\r\n\r\n

\r\n RANDOM DRAWING: The potential Period 1–4 Prize winners will be selected in a series of\r\n random drawings from among all eligible entries received within the corresponding Entry Period on or about\r\n the corresponding Random Drawing Date indicated in the Entry Periods & Drawings Schedule in the “Sweepstakes\r\n Entry Periods” section of these Official Rules.{' '}\r\n

\r\n\r\n

\r\n The potential Grand Prize will be selected in a random drawing on or about{' '}\r\n Wednesday, February 28, 2024 from among all eligible entries received for the Grand Prize\r\n Drawing during the entire Sweepstakes Period.\r\n

\r\n\r\n

\r\n All drawings will be conducted by the Sweepstakes Administrator, an independent representative of the\r\n Sponsor whose decisions are final.\r\n

\r\n\r\n

\r\n WINNER NOTIFICATION & VERIFICATION: Potential Grand Prize winner will be notified via email\r\n and will be required to sign and return, within seven (7) days of notification, an Affidavit of Eligibility,\r\n a Liability Waiver, an IRS W-9 Form and where allowable, a Publicity Release (collectively, \"the Releases\").\r\n These Releases will require the winner to furnish his/her Social Security Number for the sole purpose of tax\r\n reporting, as required by law. Noncompliance will result in disqualification and an alternate winner may be\r\n selected.\r\n

\r\n\r\n

\r\n Potential Period 1-4 Prize winners will be notified by email and required to confirm their mailing address\r\n within 48 hours via return email. Noncompliance will result in disqualification and an alternate winner may\r\n be selected.\r\n

\r\n\r\n

\r\n \r\n Prizes will be awarded within approximately 45 days after the winner is verified.\r\n \r\n

\r\n\r\n

\r\n If a prize notification or prize is returned as undeliverable, or if winner is found to be ineligible or not\r\n in compliance with these Official Rules that winner will be disqualified, and the prize may be awarded to an\r\n alternate winner in a separate random drawing. If Sponsor is unable to determine and verify a potential\r\n winner after repeated alternate drawings or if Sponsor fails to receive a sufficient number of entries to\r\n correspond to the number of prizes available to be awarded, Sponsor reserves the right to not award such\r\n prize(s).\r\n

\r\n\r\n

\r\n PRIZE CONDITIONS: Prizes are not redeemable for cash, assignable, transferable and may not\r\n be substituted except at Sponsor’s sole discretion. Sponsor reserves the right to substitute a prize of\r\n equal or greater value at its discretion. Any other incidental expenses on prize not specified herein are\r\n the winner’s sole responsibility.\r\n

\r\n\r\n

\r\n Princess Cruises promotional cards are subject to Princess Cruises’ terms and conditions (including the\r\n passage contract) and may be used towards cruise fares, which only includes regular onboard meals and\r\n entertainment, applicable government fees and taxes. Winner can select dates of the cruise, which will be\r\n subject to the Released Parties’ approval, and may be subject to certain restrictions and blackout dates,\r\n but must be used by the expiration date listed above. No alternative travel dates will be made available.\r\n \r\n TRANSPORTATION TO AND FROM THE POINT OF EMBARKMENT/DISEMBARKMENT FOR CRUISES IS NOT INCLUDED.\r\n {' '}\r\n No additional transportation or lodging accommodations will be provided by the Released Parties. Each\r\n winner’s guest (if applicable) must be 21 years of age or older as of the date of cruise departure unless\r\n the winner is the guest’s parent and/or legal guardian. Any guests who are minors in his or her state of\r\n residence must be accompanied at all times during the cruise (including, but not limited to, cruise\r\n activities, excursions and all other cruise-related events) by his/her parent or legal guardian. Released\r\n Parties are not responsible for any delay or cancellation, delays, diversions, or substitution of the prize\r\n or any portion of the prize due to unforeseen circumstances, or those outside of Sponsor’s control. In the\r\n event of delay or cancellation, the prize, or portion thereof, will not be awarded, and Sponsor will not\r\n provide any compensation or substitution for that portion of the prize.\r\n

\r\n\r\n

\r\n Winner is responsible for satisfying all conditions of travel including reviewing the COVID19 and related\r\n policy issues on the Princess Cruise website. Prize will be fulfilled by the Sponsor’s designated agent.\r\n

\r\n\r\n

\r\n All expenses and incidental travel costs not covered by the promotional card are the sole responsibility of\r\n the winner.\r\n

\r\n\r\n

\r\n Prepaid cards are not redeemable for cash and will not be replaced if lost or stolen. Prepaid card usage is\r\n subject to the issuing company’s complete terms and conditions, including expiration dates.\r\n

\r\n\r\n

\r\n \r\n Winner is responsible for all federal, state, local and income taxes associated with winning prize. Grand\r\n Prize winner will be required to furnish his/her Social Security Number for the sole purpose of\r\n preparation of tax forms as required by law.\r\n {' '}\r\n Except where prohibited by law, entry and acceptance of prize constitute permission for the Sponsor to use\r\n winner's name, prize won, hometown, likeness, video recordings, photographs, and statements for purposes of\r\n advertising, promotion and publicity (including online posting) in any and all media now or hereafter known\r\n throughout the world in perpetuity, without additional compensation, notification or permission. Sponsor may\r\n request that winners share with Sponsor a photograph of the winner with his/her prize or as otherwise\r\n requested, and/or a statement to use as mentioned herein. Providing such photograph or statement does not\r\n guarantee its use by Sponsor.\r\n

\r\n\r\n

\r\n Prizes are awarded “as is” with no warranty or guarantee, either express or implied by Sponsor. Winners\r\n acknowledge that the Sponsor and all other businesses affiliated with this Sweepstakes and their agents do\r\n not make, nor are in any manner responsible for any warranty, representations, expressed or implied, in fact\r\n or in law, relative to the quality, conditions, fitness or merchantability of any aspect of the prize being\r\n offered, except that each merchandise prize shall be subject to its manufacturer’s standard warranty (if\r\n any). Once the prize has been delivered to the winner’s provided address, the prize is considered awarded.\r\n

\r\n\r\n

\r\n GENERAL: Although subsequent attempts to enter during a given Entry Period may be received,\r\n only the first complete entry received from a particular entrant will be eligible; subsequent attempts by\r\n the same person to enter, including entries submitted with an alternate email address, will be disqualified.\r\n

\r\n\r\n

\r\n Participating entrants agree to these Official Rules and the decisions of the Sponsor and the Sweepstakes\r\n Administrator, and release the Sponsor, the Sweepstakes Administrator, Princess Cruise Lines, Ltd., and\r\n their affiliated companies, and all other businesses involved in this Sweepstakes, as well as the employees,\r\n officers, directors and agents of each (collectively, the “Released Parties”), from all claims and liability\r\n relating to their participation in the Sweepstakes, and the acceptance and use/misuse of the prize offered.\r\n Participating entrants assume all liability for and Released Parties shall be held harmless against any\r\n liability for any injury, losses or damages of any kind to persons, including personal injury or death, or\r\n injury to property caused or claimed to be caused in whole or in part, directly or indirectly, by\r\n participation in this Sweepstakes, acceptance, possession, or use/misuse of the prize, or any claims based\r\n on publicity rights, defamation or invasion of privacy, or merchandise delivery. Sponsor is not responsible\r\n for any typographical or other error in the printing of the offer, administration of the Sweepstakes or in\r\n the announcement of the prize.\r\n

\r\n\r\n

\r\n In the event of a dispute over the identity of an entrant, entry will be deemed submitted by the \"Authorized\r\n Account Holder\" of the e-mail address submitted at time of entry. Authorized Account Holder means the\r\n natural person who is assigned to an e-mail address by an Internet access provider, online service provider,\r\n or other organization that is responsible for assigning e-mail addresses for the domain associated with the\r\n submitted e-mail address. Sponsor may ask any entrant or potential winner to provide Sponsor with proof, to\r\n Sponsor’s satisfaction, that such party is the authorized account holder of the email address associated\r\n with the entry. Entry materials/data that have been tampered with or altered, or mass entries or entries\r\n generated by a script, macro or use of automated devices are void. The Released Parties are not responsible\r\n for: (i) lost, late, misdirected, damaged or illegible entries; or (ii) error, omission, interruption,\r\n deletion, defect, delay in operations or transmission, theft or destruction or unauthorized access to or\r\n alterations of entry materials, or for technical, network, telephone equipment, electronic, computer,\r\n hardware or software malfunctions of any kind, or inaccurate transmission of or failure to receive entry\r\n information by Sponsor on account of technical problems or traffic congestion on the Internet or at any web\r\n site or any combination thereof; or (iii) any injury or damage to entrant's or any other person's computer\r\n related to or resulting from participating in the Sweepstakes. By participating in the Sweepstakes, entrant\r\n (i) agrees to be bound by these Official Rules, including all eligibility requirements, and (ii) agree to be\r\n bound by the decisions of Sponsor and the Sweepstakes Administrator, which are final and binding in all\r\n matters relating to the Sweepstakes. Failure to comply with these Official Rules may result in\r\n disqualification from the Sweepstakes.\r\n

\r\n\r\n

\r\n Sponsor reserves the right to cancel, suspend and/or modify the Sweepstakes, or any part of it, if any\r\n fraud, technical failures or any factor beyond Sponsor’s reasonable control impairs the integrity or proper\r\n functioning of the Sweepstakes, as determined by Sponsor. If, for any reason, the Sweepstakes cannot be run\r\n as planned, Sponsor may disqualify any suspect entries or individuals from the Sweepstakes and any\r\n sweepstakes it sponsors and (a) suspend the Sweepstakes and modify the Sweepstakes to address the\r\n impairment, then resume the Sweepstakes in a manner that best conforms to the spirit of these Official\r\n Rules; and/or (b) award prizes at random from among the eligible, non-suspect entries received up to the\r\n time of the impairment.\r\n

\r\n\r\n

\r\n THE RELEASED PARTIES ARE NOT RESPONSIBLE IF THIS SWEEPSTAKES CANNOT BE ADMINISTERED OR CONDUCTED OR ANY\r\n PRIZE CANNOT BE AWARDED DUE TO CANCELLATIONS, DELAYS, OR INTERRUPTIONS RESULTING OR ARISING FROM ACTS OF\r\n GOD, WAR, OR TERRORISM, CIVIL UNREST, STRIKES, SUPPLY SHORTAGES, NATURAL DISASTERS, WEATHER, EPIDEMICS,\r\n COMPLIANCE WITH ANY LAW OR ORDER OF A GOVERNMENTAL AUTHORITY, OR ANY OTHER SIMILAR ACT, EVENT, OR OCCURRENCE\r\n BEYOND THE REASONABLE CONTROL OF THE SPONSOR. BY PARTICIPATING IN THIS SWEEPSTAKES, PARTICIPANT AGREES THAT\r\n THE RELEASED PARTIES WILL NOT BE RESPONSIBLE OR LIABLE FOR ANY INJURIES, DAMAGES, OR LOSSES OF ANY KIND,\r\n INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES TO PERSONS, INCLUDING DEATH, OR\r\n TO PROPERTY ARISING OUT OF ACCESS TO AND USE OF ANY WEBSITE ASSOCIATED WITH THIS SWEEPSTAKES OR THE\r\n DOWNLOADING FROM AND/OR PRINTING MATERIAL DOWNLOADED FROM SUCH SITE, AS APPLICABLE. FURTHER, SPONSOR SHALL\r\n NOT BE RESPONSIBLE FOR ANY CANCELLATIONS, DELAYS, DIVERSIONS, CHANGES IN SERVICE OR ACCOMMODATIONS OR\r\n SUBSTITUTIONS, OR FOR ANY ACTS OR OMISSIONS BY ANY THIRD PARTIES BEYOND ITS REASONABLE CONTROL, INCLUDING\r\n AIR CARRIER(S) AND OTHER TRANSPORTATION COMPANIES; LODGING, RESTAURANT OR OTHER HOSPITALITY PROVIDERS;\r\n ENTERTAINMENT PROVIDERS, VENUES OR ARTISTS; OR OTHER THIRD PARTY PROVIDERS SUPPLYING ANY SERVICES OR\r\n COMPONENTS OF THE PRIZE(S) TO WINNERS AND/OR THEIR GUESTS, OR FOR ANY RESULTING INJURIES, INCLUDING MONEY\r\n DAMAGES, COSTS AND EXPENSES, PROPERTY DAMAGES, PERSONAL INJURIES OR DEATH RESULTING THEREFROM.\r\n

\r\n\r\n

\r\n LEGAL WARNING: ANY ATTEMPT BY AN INDIVIDUAL, WHETHER OR NOT AN ENTRANT, TO DAMAGE, DESTROY,\r\n TAMPER OR VANDALIZE THIS WEB SITE OR INTERFERE WITH THE OPERATION OF THE SWEEPSTAKES, IS A VIOLATION OF\r\n CRIMINAL AND CIVIL LAWS AND SPONSOR RESERVES THE RIGHT TO SEEK DAMAGES AND DILIGENTLY PURSUE ALL REMEDIES\r\n AGAINST ANY SUCH INDIVIDUAL TO THE FULLEST EXTENT PERMITTED BY LAW.\r\n

\r\n\r\n

\r\n GOVERNING LAW AND LIMITATION OF LIABILITY: All issues and questions concerning the\r\n construction, validity, interpretation and enforceability of these Official Rules or the rights and\r\n obligations of entrants, Sponsor or the Released Parties in connection with the Sweepstakes will be governed\r\n by and construed in accordance with the internal laws of the State of California, without giving effect to\r\n any choice of law or conflict of law rules or provisions that would cause the application of any other laws.\r\n

\r\n\r\n

\r\n BY ENTERING THE SWEEPSTAKES, ENTRANT AGREES THAT TO THE EXTENT PERMITTED BY APPLICABLE LAW: (A) ANY AND ALL\r\n DISPUTES, CLAIMS AND CAUSES OF ACTION ARISING OUT OF OR CONNECTED WITH THE SWEEPSTAKES, OR ANY PRIZE\r\n AWARDED, WILL BE RESOLVED INDIVIDUALLY, WITHOUT RESORT TO ANY FORM OF CLASS ACTION;\r\n

\r\n\r\n

\r\n (B) ANY AND ALL CLAIMS, JUDGMENTS AND AWARDS WILL BE LIMITED TO ACTUAL THIRD-PARTY, OUT-OF-POCKET COSTS\r\n INCURRED (IF ANY) NOT TO EXCEED TEN DOLLARS ($10.00), BUT IN NO EVENT WILL ATTORNEYS’ FEES BE AWARDED OR\r\n RECOVERABLE; (C) UNDER NO CIRCUMSTANCES WILL ANY ENTRANT BE PERMITTED TO OBTAIN ANY AWARD FOR, AND ENTRANT\r\n HEREBY KNOWINGLY AND EXPRESSLY WAIVES ALL RIGHTS TO SEEK, PUNITIVE, INCIDENTAL, CONSEQUENTIAL OR SPECIAL\r\n DAMAGES, LOST PROFITS AND/OR ANY OTHER DAMAGES, OTHER THAN ACTUAL OUT OF POCKET EXPENSES NOT TO EXCEED TEN\r\n DOLLARS ($10.00), AND/OR ANY RIGHTS TO HAVE DAMAGES MULTIPLIED OR OTHERWISE INCREASED; AND (D) ENTRANTS’\r\n REMEDIES ARE LIMITED TO A CLAIM FOR MONEY DAMAGES (IF ANY) AND ENTRANT IRREVOCABLY WAIVES ANY RIGHT TO SEEK\r\n INJUNCTIVE OR EQUITABLE RELIEF. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATIONS OR EXCLUSION OF LIABILITY,\r\n SO THE ABOVE MAY NOT APPLY TO YOU.\r\n

\r\n\r\n

\r\n DISPUTES: The parties hereto each agree to finally settle all disputes only through\r\n arbitration; provided, however, the Released Parties shall be entitled to seek injunctive or equitable\r\n relief in the state and federal courts in Los Angeles County, CA and any other court with jurisdiction over\r\n the parties. In arbitration, there is no judge or jury and review is limited. The arbitrator’s decision and\r\n award is final and binding, with limited exceptions, and judgment on the award may be entered in any court\r\n with jurisdiction. The parties agree that, except as set forth above, any claim, suit, action or proceeding\r\n arising out of or relating to this Sweepstakes shall be resolved solely by binding arbitration before a sole\r\n arbitrator under the streamlined Arbitration Rules Procedures of JAMS Inc. (“JAMS”) or any successor to\r\n JAMS. In the event JAMS is unwilling or unable to set a hearing date within fourteen (14) days of the filing\r\n of a “Demand for Arbitration”, then either party can elect to have the arbitration administered by the\r\n American Arbitration Association (“AAA”) or any other mutually agreeable arbitration administration service.\r\n If an in-person hearing is required, then it will take place in Studio City, CA. The federal or state law\r\n that applies to these Official Rules will also apply during the arbitration. Disputes will be arbitrated\r\n only on an individual basis and will not be consolidated with any other proceedings that involve any claims\r\n or controversy of another party, including any class actions; provided, however, if for any reason any court\r\n or arbitrator holds that this restriction is unconscionable or unenforceable, then the agreement to\r\n arbitrate doesn’t apply and the dispute must be brought in a court of competent jurisdiction in Studio City,\r\n CA. Sponsor agrees to pay the administrative and arbitrator’s fees in order to conduct the arbitration (but\r\n specifically excluding any travel or other costs of entrant to attend the arbitration hearing). Either party\r\n may, notwithstanding this provision, bring qualifying claims in small claims court.\r\n

\r\n\r\n

\r\n PRIVACY: As a condition of entering the Sweepstakes, each entrant gives consent for Sponsor to obtain and\r\n deliver his or her name, address and other information to third parties, including Sweepstakes\r\n Administrator, for the purpose of administering this Sweepstakes and to comply with applicable laws,\r\n regulations and rules, including, without limitation, the storing of your personal information for purposes\r\n of complying with state record retention requirements. Any information entrant provides to Sponsor may be\r\n used to communicate with entrant in relation to this Sweepstakes or on a Sweepstakes winner’s list. Personal\r\n information collected from entrants are subject to the Sponsor which can be found at{' '}\r\n \r\n https://www.hallmarkchannel.com/privacy-policy\r\n \r\n .\r\n

\r\n\r\n

\r\n OFFICIAL RULES REQUEST: To request a copy of the Official Rules, see{' '}\r\n \r\n https://matchingmoments.hallmarkchannel.com/\r\n {' '}\r\n or send a self-addressed, stamped envelope by February 28, 2024, to: Hallmark Channel’s Loveuary Matching\r\n Moments Sweepstakes Official Rules Request, PO Box 654, Social Circle, GA\r\n 30025-0654.\r\n

\r\n\r\n

\r\n WINNER CONFIRMATION REQUEST: For a written confirmation of the winner (available after\r\n 02/28/24 or once all winners are confirmed), send a stamped, self-addressed envelope (no later than\r\n 03/28/24), to: Hallmark Channel’s Loveuary Matching Moments Sweepstakes{' '}\r\n Winner Confirmation Request, PO Box 654, Social Circle, GA 30025-0654.\r\n

\r\n\r\n

\r\n SPONSOR: Hallmark Media United States, LLC, 12700 Ventura Boulevard, Studio City, CA 91604.\r\n

\r\n\r\n

\r\n SWEEPSTAKES ADMINISTRATOR: US Sweepstakes & Fulfillment Company, 625 Panorama Trail, Suite\r\n 2100, Rochester, NY 14625. 1-800-620-6044\r\n

\r\n\r\n

\r\n Void outside the US, in Guam, the U.S. Virgin Islands and wherever else prohibited by law.\r\n

\r\n\r\n

\r\n All trademarks used herein are the property of their respective owners in the United States and abroad. All\r\n rights reserved.\r\n

\r\n\r\n

\r\n Princess Cruise Lines, Ltd. is a prize provider and is not responsible for sponsoring or administrating this\r\n Sweepstakes in any way. All questions or concerns shall be directed to Sponsor and not to Princess Cruise\r\n Lines, Ltd.\r\n

\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RulesPage;\r\n","import React from 'react';\r\nimport { isIE } from 'react-device-detect';\r\n\r\ninterface LoaderProps {\r\n images?: boolean;\r\n red?: boolean;\r\n}\r\n\r\nconst Loader: React.FC = ({ red, images }) => {\r\n return isIE ? (\r\n
\r\n ) : (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import * as React from 'react';\r\nimport { Col } from 'react-bootstrap';\r\n\r\ntype ProfileStatProps = {\r\n title: string;\r\n image: string;\r\n value: string;\r\n};\r\n\r\ntype ProfileSingleStatProps = ProfileStatProps & {\r\n type: 'SINGLE';\r\n};\r\n\r\ntype ProfileDualStatProps = ProfileStatProps & {\r\n subheader1: string;\r\n subheader2: string;\r\n value2: string;\r\n type: 'DOUBLE';\r\n};\r\n\r\nconst ProfileStat: React.FunctionComponent = (props) => {\r\n const { title, image, value } = props;\r\n\r\n return (\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n

{title}

\r\n {props.type === 'DOUBLE' ? (\r\n
\r\n
\r\n
{props.subheader1}
\r\n

{value}

\r\n
\r\n
\r\n
\r\n
{props.subheader2}
\r\n

{props.value2}

\r\n
\r\n
\r\n ) : (\r\n

{value}

\r\n )}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ProfileStat;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React from 'react';\r\nimport { Row } from 'react-bootstrap';\r\nimport ProfileStat from './ProfileStat';\r\nimport {\r\n circlePlay,\r\n circleFinished,\r\n circleStreak,\r\n circleTick,\r\n circleClock,\r\n circleLeaderboard,\r\n} from '../../images/icons';\r\nimport { ProfileStatsDto } from '../../types/UserProfile';\r\n\r\nconst ProfileStats: React.FC = ({\r\n gamesStarted,\r\n gamesFinished,\r\n currentStreak,\r\n levelsCompleted,\r\n totalPlayTime,\r\n highestPositionWeekly,\r\n highestPositionAllTime,\r\n}) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProfileStats;\r\n","import React from 'react';\r\nimport { Image, Row } from 'react-bootstrap';\r\nimport { LimitedEditionBadgeDetailsDto, getLimitedEditionBadgeUrlFromKey } from '../../types/UserProfile';\r\n\r\ninterface ILimitedEditionBadgesProps {\r\n badges: Array;\r\n}\r\n\r\nconst LimitedEditionBadges: React.FC = ({ badges }) => {\r\n return (\r\n
\r\n

Limited Edition Badges

\r\n \r\n {badges.map((badge) => (\r\n \r\n
\r\n \r\n

{badge.description}

\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LimitedEditionBadges;\r\n","import React from 'react';\r\nimport { Row } from 'react-bootstrap';\r\nimport { Image } from 'react-bootstrap';\r\n\r\nimport { StandardBadgeImageDictionary, StandardBadgeDetailsDto } from '../../types/UserProfile';\r\n\r\ninterface IStandardBadgesProps {\r\n badges: Array;\r\n}\r\nconst StandardBadges: React.FC = ({ badges }) => {\r\n return (\r\n
\r\n

Badges

\r\n \r\n {badges.map((badge) => (\r\n \r\n
\r\n \r\n

{badge.description}

\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default StandardBadges;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Modal, Row, Col, Image, Container } from 'react-bootstrap';\r\nimport Button from '../Layout/Button';\r\nimport clsx from 'clsx';\r\nimport getProfileImage from '../../helpers/GetProfileImage';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport RootState from '../../types/index';\r\nimport { setProfileImage } from '../../slices/users/actions';\r\nimport callApi from '../../infrastructure/api/CallApi';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport Loader from '../Loader';\r\n\r\nconst apiUrl = 'api/app/user/update-profile-image';\r\n\r\ninterface IModalProfilePhotoProps {\r\n show: boolean;\r\n hideModal: () => void;\r\n}\r\n\r\n// @ts-ignore\r\nconst imageNumbers: Array = [...Array(12).keys()];\r\n\r\nconst ModalProfilePhoto: React.FC = ({ show, hideModal }) => {\r\n const { id, profileImage: currentProfileImage } = useSelector((state: RootState) => state.user);\r\n const [selectedImage, setSelectedImage] = useState(currentProfileImage);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [imagesLoaded, setImagesLoaded] = useState(0);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onHideModal = () => {\r\n trackEvent('Profile Image', 'Profile Image Modal Hidden');\r\n hideModal();\r\n };\r\n\r\n useEffect(() => {\r\n if (show) {\r\n setSelectedImage(currentProfileImage);\r\n trackEvent('Profile Image', 'Profile Image Modal Shown');\r\n const timer = setTimeout(() => setIsLoading(false), 8000);\r\n return () => clearTimeout(timer);\r\n }\r\n }, [show]);\r\n\r\n useEffect(() => {\r\n if (imagesLoaded === imageNumbers.length) {\r\n setIsLoading(false);\r\n }\r\n }, [imagesLoaded]);\r\n\r\n const onConfirm = () => {\r\n if (currentProfileImage !== selectedImage) {\r\n dispatch(setProfileImage(selectedImage));\r\n callApi(apiUrl, 'POST', { id, profileImage: selectedImage });\r\n trackEvent('Profile Image', 'New Profile Image Confirmed');\r\n }\r\n onHideModal();\r\n };\r\n\r\n return (\r\n \r\n \r\n Update Profile Picture\r\n \r\n \r\n \r\n \r\n \r\n {isLoading && }\r\n {imageNumbers.map((x) => (\r\n setSelectedImage(x)}>\r\n {\r\n setImagesLoaded(imagesLoaded + 1);\r\n }}\r\n alt=\"\"\r\n className={clsx('img-fluid', selectedImage === x && 'selected', isLoading ? 'd-none' : 'd-block')}\r\n />\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ModalProfilePhoto;\r\n","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { FacebookIcon } from '../../images/icons';\r\nimport GetConfig from '../../helpers/GetConfig';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { getUserStats } from '../../helpers';\r\n\r\ninterface FacebookButtonProps {\r\n gamesStarted: string;\r\n gamesFinished: string;\r\n currentStreak: string;\r\n levelsCompleted: string;\r\n totalPlayTime: string;\r\n highestPositionAllTime: string;\r\n}\r\n\r\nconst FacebookButton: React.FC = ({\r\n gamesStarted,\r\n gamesFinished,\r\n currentStreak,\r\n levelsCompleted,\r\n totalPlayTime,\r\n highestPositionAllTime,\r\n}) => {\r\n const isWebView = useSelector((state: RootState) => state.isWebView.webView);\r\n const shareCode = useSelector((state: RootState) => state.user.shareCode);\r\n\r\n const { appUrl, apiShareUrl, facebookAppId } = GetConfig();\r\n\r\n const share = () => {\r\n const shareUrl = `${apiShareUrl}share/${shareCode}`;\r\n const quoteParam = `"e=${encodeURIComponent(\r\n getUserStats(gamesStarted, gamesFinished, currentStreak, levelsCompleted, totalPlayTime, highestPositionAllTime)\r\n )}`;\r\n\r\n const redirectUrl = `http://www.facebook.com/dialog/share?app_id=${facebookAppId}&display=popup&href=${shareUrl}${quoteParam}`;\r\n trackEvent('Share', 'Share Selected', 'Facebook');\r\n if (isWebView) {\r\n window.location.href = `${redirectUrl}&redirect_uri=${appUrl}?hmc=1`;\r\n } else {\r\n window.open(\r\n `${redirectUrl}&redirect_uri=${appUrl}closewindow`,\r\n 'FacebookShare',\r\n 'location=0,status=0,width=800,height=650'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FacebookButton;\r\n","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { PinterestIcon } from '../../images/icons';\r\nimport GetConfig from '../../helpers/GetConfig';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { getUserStats } from '../../helpers';\r\n\r\ninterface PinterestButtonProps {\r\n gamesStarted: string;\r\n gamesFinished: string;\r\n currentStreak: string;\r\n levelsCompleted: string;\r\n totalPlayTime: string;\r\n highestPositionAllTime: string;\r\n}\r\n\r\nconst PinterestButton: React.FC = ({\r\n gamesStarted,\r\n gamesFinished,\r\n currentStreak,\r\n levelsCompleted,\r\n totalPlayTime,\r\n highestPositionAllTime,\r\n}) => {\r\n const isWebView = useSelector((state: RootState) => state.isWebView.webView);\r\n const { apiShareUrl } = GetConfig();\r\n const shareCode = useSelector((state: RootState) => state.user.shareCode);\r\n\r\n const share = () => {\r\n const shareUrl = `${apiShareUrl}share/${shareCode}`;\r\n const shareText = getUserStats(\r\n gamesStarted,\r\n gamesFinished,\r\n currentStreak,\r\n levelsCompleted,\r\n totalPlayTime,\r\n highestPositionAllTime\r\n );\r\n const pinterestUrl = `http://www.pinterest.com/pin/create/button?url=${shareUrl}&description=${encodeURIComponent(\r\n shareText\r\n )}`;\r\n trackEvent('Share', 'Share Selected', 'Pinterest');\r\n if (isWebView) {\r\n window.location.href = pinterestUrl;\r\n } else {\r\n window.open(pinterestUrl, 'PinIt', 'location=0,status=0,width=800,height=650');\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PinterestButton;\r\n","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { TwitterIcon } from '../../images/icons';\r\nimport GetConfig from '../../helpers/GetConfig';\r\nimport { trackEvent } from '../../infrastructure/tracking/GoogleAnalytics';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { getUserStats } from '../../helpers';\r\n\r\ninterface TwitterButtonProps {\r\n gamesStarted: string;\r\n gamesFinished: string;\r\n currentStreak: string;\r\n levelsCompleted: string;\r\n totalPlayTime: string;\r\n highestPositionAllTime: string;\r\n}\r\n\r\nconst TwitterButton: React.FC = ({\r\n gamesStarted,\r\n gamesFinished,\r\n currentStreak,\r\n levelsCompleted,\r\n totalPlayTime,\r\n highestPositionAllTime,\r\n}) => {\r\n const isWebView = useSelector((state: RootState) => state.isWebView.webView);\r\n const shareCode = useSelector((state: RootState) => state.user.shareCode);\r\n\r\n const { apiShareUrl } = GetConfig();\r\n\r\n const share = () => {\r\n const shareUrl = `${apiShareUrl}share/${shareCode}`;\r\n const shareText = getUserStats(\r\n gamesStarted,\r\n gamesFinished,\r\n currentStreak,\r\n levelsCompleted,\r\n totalPlayTime,\r\n highestPositionAllTime\r\n );\r\n\r\n const urlParam = shareUrl ? `&url=${shareUrl}` : '';\r\n const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(shareText)}${urlParam}`;\r\n trackEvent('Share', 'Share Selected', 'Twitter');\r\n if (isWebView) {\r\n window.location.href = twitterUrl;\r\n } else {\r\n window.open(twitterUrl, 'Tweet', 'location=0,status=0,width=800,height=650');\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TwitterButton;\r\n","import React from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport { ProfileDto } from '../types';\r\nimport FacebookButton from './Sharing/FacebookButton';\r\nimport PinterestButton from './Sharing/PinterestButton';\r\nimport TwitterButton from './Sharing/TwitterButton';\r\n\r\ninterface IShareProps {\r\n userData: ProfileDto;\r\n}\r\nconst Share: React.FC = ({ userData }) => {\r\n return (\r\n \r\n \r\n Share Your Progress\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\nexport default Share;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Container } from 'react-bootstrap';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport Loader from './Loader';\r\nimport { Link } from 'react-router-dom';\r\nimport Button from '../components/Layout/Button';\r\nimport { LeaderboardRoute } from '../constants/Routes';\r\nimport callApi from '../infrastructure/api/CallApi';\r\nimport usePageView from '../infrastructure/hooks/usePageView';\r\nimport { profilePage } from '../types/pageNameContants';\r\nimport { trackEvent } from '../infrastructure/tracking/GoogleAnalytics';\r\nimport RootState from '../types/index';\r\nimport ProfileStats from '../components/Profile/ProfileStats';\r\nimport LimitedEditionBadges from './Profile/LimitedEditionBadges';\r\nimport StandardBadges from './Profile/StandardBadges';\r\nimport { ProfileDto } from '../types/index';\r\nimport { localStorageKey } from '../constants';\r\nimport { logout } from '../slices/users/actions';\r\nimport GetRouteName from '../helpers/GetRouteName';\r\n\r\nimport { useHistory } from 'react-router';\r\nimport ModalProfilePhoto from './Modals/ModalProfilePhoto';\r\nimport getProfileImage from '../helpers/GetProfileImage';\r\nimport { selectIsCurrentSweepstake } from '../slices/sweepstakes/selectors';\r\nimport { iconShield, iconShieldSweepstakes } from '../images/icons';\r\nimport tiles3DSweepstakes from '../images/3d-tiles.webp';\r\nimport tiles3D from '../images/3d-tiles-default.webp';\r\nimport Share from './Share';\r\n\r\nconst ProfilePage = () => {\r\n const [showProfileImageModal, setShowProfileImageModal] = useState(false);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isError, setIsError] = useState(false);\r\n const [profileData, setProfileData] = useState(null);\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const showHelpModal = useSelector((state: RootState) => state.game.showHelpModal);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n usePageView(profilePage, '/profile');\r\n\r\n const { name: username, id: userId, profileImage, badgeCount } = useSelector((state: RootState) => state.user);\r\n\r\n const onLogoutClick = () => {\r\n dispatch(logout());\r\n try {\r\n localStorage.removeItem(localStorageKey);\r\n } catch {}\r\n const label = GetRouteName(location.pathname, showHelpModal);\r\n trackEvent('Log out', 'Log out Success', label);\r\n try {\r\n if (window.formEntryTimeout) {\r\n clearTimeout(window.formEntryTimeout);\r\n }\r\n } catch {}\r\n history.push('/');\r\n };\r\n\r\n useEffect(() => {\r\n callApi(`api/app/profile/profile`, 'POST', { userId })\r\n .then(({ data }) => {\r\n setProfileData(data);\r\n setIsLoading(false);\r\n })\r\n .catch((err) => {\r\n setIsError(true);\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n
\r\n

Your Profile

\r\n
\r\n
\r\n
\r\n {username && (\r\n
\r\n
setShowProfileImageModal(true)}>\r\n \"\"\r\n
\r\n
\r\n
\r\n \r\n {badgeCount}\r\n
\r\n
{username}
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n trackEvent('Go To Leaderboard', 'Leaderboard Button Selected', 'ProfilePage')}\r\n >\r\n Show Leaderboard\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n {isError && (\r\n
\r\n

Something went wrong. Please try again.

\r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n setShowProfileImageModal(false)} />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProfilePage;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Container, Image } from 'react-bootstrap';\r\nimport Button from './Layout/Button';\r\nimport Loader from './Loader';\r\nimport CallApi from '../infrastructure/api/CallApi';\r\nimport usePageView from '../infrastructure/hooks/usePageView';\r\nimport { leaderboardWeeklyPage, leaderboardOverallPage, leaderboardGroupPage } from '../types/pageNameContants';\r\nimport { trackEvent, trackPageView } from '../infrastructure/tracking/GoogleAnalytics';\r\nimport RootState, { ILeaderboardItem } from '../types/index';\r\nimport classNames from 'classnames';\r\nimport getProfileImage from '../helpers/GetProfileImage';\r\nimport { GroupDetailPageRoute, UrlNameKeyWithColon } from 'constants/Routes';\r\nimport { iconGroupMembers } from '../images/icons';\r\n\r\ntype LeaderboardType = 'overall' | 'weekly' | 'group';\r\n\r\nconst apiPaths: Map = new Map([\r\n ['overall', ''],\r\n ['weekly', 'weekly-'],\r\n ['group', 'group-'],\r\n]);\r\nconst LeaderboardPage = () => {\r\n const history = useHistory();\r\n const [leaderboardItems, setLeaderboardItems] = useState>([]);\r\n const [activeLeaderboard, setActiveLeaderboard] = useState<'overall' | 'weekly' | 'group'>('weekly');\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isDisabled, setIsDisabled] = useState(true);\r\n const [isError, setIsError] = useState(false);\r\n const [userGroupCodes, setUserGroupCodes] = useState>([]);\r\n const initialPageViewTrackedRef = useRef(false);\r\n\r\n usePageView(leaderboardWeeklyPage, '/leaderboard');\r\n\r\n const user = useSelector((state: RootState) => state.user);\r\n\r\n useEffect(() => {\r\n if (user?.id) {\r\n CallApi>(`api/app/group/user-group-invite-codes/${user.id}`, 'GET').then(({ data }) => {\r\n setUserGroupCodes(data);\r\n });\r\n }\r\n }, [user]);\r\n\r\n useEffect(() => {\r\n setIsDisabled(true);\r\n CallApi>(\r\n `api/app/leaderboard/${apiPaths.get(activeLeaderboard)}leaderboard/${\r\n activeLeaderboard !== 'group' ? user.id : ''\r\n }`,\r\n 'GET'\r\n )\r\n .then(({ data }) => {\r\n setLeaderboardItems(data);\r\n setIsLoading(false);\r\n setIsDisabled(false);\r\n })\r\n .catch(() => {\r\n setIsError(true);\r\n setIsLoading(false);\r\n });\r\n\r\n const pageName =\r\n activeLeaderboard === 'group'\r\n ? leaderboardGroupPage\r\n : activeLeaderboard === 'overall'\r\n ? leaderboardOverallPage\r\n : leaderboardWeeklyPage;\r\n trackPageView(pageName, '/leaderboard', initialPageViewTrackedRef.current);\r\n\r\n initialPageViewTrackedRef.current = true;\r\n }, [activeLeaderboard]);\r\n\r\n return (\r\n
\r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n
\r\n {\r\n if (activeLeaderboard === 'group') {\r\n setActiveLeaderboard('weekly');\r\n trackEvent('Individual', 'Individual Selected', 'Leaderboard');\r\n }\r\n }}\r\n >\r\n Individual\r\n \r\n {\r\n if (activeLeaderboard !== 'group') {\r\n setActiveLeaderboard('group');\r\n trackEvent('Group', 'Group Selected', 'Leaderboard');\r\n }\r\n }}\r\n >\r\n Group\r\n \r\n
\r\n
\r\n {activeLeaderboard !== 'group' && (\r\n <>\r\n {\r\n setActiveLeaderboard('weekly');\r\n trackEvent('Weekly', 'Weekly Selected', 'Leaderboard');\r\n }}\r\n disabled={isDisabled}\r\n >\r\n Weekly\r\n \r\n {\r\n setActiveLeaderboard('overall');\r\n trackEvent('Overall', 'Overall Selected', 'Leaderboard');\r\n }}\r\n disabled={isDisabled}\r\n >\r\n Overall\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n

Leaderboard

\r\n
\r\n\r\n
\r\n
\r\n {activeLeaderboard !== 'group' && (\r\n <>\r\n {\r\n setActiveLeaderboard('weekly');\r\n trackEvent('Weekly', 'Weekly Selected', 'Leaderboard');\r\n }}\r\n disabled={isDisabled}\r\n >\r\n Weekly\r\n \r\n {\r\n setActiveLeaderboard('overall');\r\n trackEvent('Overall', 'Overall Selected', 'Leaderboard');\r\n }}\r\n disabled={isDisabled}\r\n >\r\n Overall\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n {isError && (\r\n
\r\n

Something went wrong. Please try again.

\r\n
\r\n )}\r\n {leaderboardItems && (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {leaderboardItems.map((userScore) => (\r\n {\r\n const redirectTo = userScore.inviteCode\r\n ? GroupDetailPageRoute.replace(UrlNameKeyWithColon, userScore.inviteCode)\r\n : null;\r\n if (redirectTo) {\r\n history.push(redirectTo);\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n

Rank

\r\n
\r\n

Name

\r\n
\r\n {activeLeaderboard !== 'group' && (\r\n <>\r\n

Group Member

\r\n

\r\n \r\n )}\r\n
\r\n

Points

\r\n
\r\n

{userScore.rank}

\r\n
\r\n {userScore.profileImage !== undefined ? (\r\n \r\n ) : null}\r\n

{userScore.name}

\r\n
\r\n {userScore.isGroupMember && activeLeaderboard !== 'group' ? (\r\n \"Profile\"\r\n ) : null}\r\n \r\n

{userScore.score}

\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LeaderboardPage;\r\n","import React from 'react';\r\nimport { Route, Redirect, RouteProps } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { selectIsCurrentSweepstake } from '../../slices/sweepstakes/selectors';\r\n\r\ninterface SecuredRouteProps extends RouteProps {\r\n component: any;\r\n}\r\n\r\nconst SecuredRoute: React.FC = ({ component: Component, path }) => {\r\n const { id: userId, acceptedRules } = useSelector((state: RootState) => state.user);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n return (\r\n {\r\n // If logged in and no sweeps or user has accepted sweeps rules - continue to game component\r\n if (userId && (!isCurrentSweepstake || acceptedRules)) {\r\n return ;\r\n }\r\n // If no user logged in return to sign up page\r\n // Otherwise return to landing page where the checkbox will be displayed\r\n return ;\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default SecuredRoute;\r\n","import React from 'react';\r\nimport { Route, Redirect, RouteProps } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../types';\r\nimport { selectIsCurrentSweepstake } from '../../slices/sweepstakes/selectors';\r\n\r\ninterface AnonymousRouteProps extends RouteProps {\r\n component: any;\r\n}\r\n\r\nconst AnonymousRoute: React.FC = ({ component: Component }) => {\r\n const { id: userId, acceptedRules } = useSelector((state: RootState) => state.user);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n return (\r\n {\r\n // If not logged in - return form\r\n if (!userId) {\r\n return ;\r\n }\r\n // If no sweepstakes or user accepted rules = go to game\r\n // Otherwise return to landing page where the checkbox will be displayed\r\n return ;\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default AnonymousRoute;","const CloseWindow = () => {\r\n window.close();\r\n return (null);\r\n };\r\n \r\n export default CloseWindow;","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Container, Button } from 'react-bootstrap';\r\n\r\nconst NotFound404 = () => (\r\n \r\n
\r\n \r\n
Oops, looks like we can't find the page you were looking for.
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default NotFound404;\r\n","import { useEffect } from 'react';\r\n\r\nconst scrollToTop = () => window.scrollTo(0, 0);\r\n\r\nconst useScrollToTop: (pathName: string) => void = pathName => {\r\n useEffect(scrollToTop, [pathName]);\r\n}\r\n\r\nexport default useScrollToTop;","import Swal from 'sweetalert2';\r\nimport { notificationBaseOptions } from './NotificationOptions';\r\nimport withReactContent from 'sweetalert2-react-content';\r\n\r\nconst reactSwal = withReactContent(Swal);\r\n\r\nexport const inappropriateLanguageNotification = () => {\r\n return reactSwal.fire({\r\n ...notificationBaseOptions,\r\n icon: 'error',\r\n iconColor: '#FF0000',\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n html: 'Sorry, your group name contains inappropriate language.',\r\n });\r\n};\r\n","import React, { useState } from 'react';\r\nimport { FormikHelpers, Form, Formik, Field } from 'formik';\r\nimport TextField from '../Form/TextField';\r\nimport Button from '../Layout/Button';\r\nimport callApi from 'infrastructure/api/CallApi';\r\nimport { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\nimport { IGroupBaseModel } from 'types/Groups';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from 'types';\r\nimport { inappropriateLanguageNotification } from 'helpers/GroupNotification';\r\n\r\ninterface ICreateGroupFormProps {\r\n onGroupCreation: (group: any) => void;\r\n}\r\n\r\ninterface IGroupInputModel {\r\n name: string;\r\n isPrivate: boolean;\r\n}\r\n\r\nconst initialValues: IGroupInputModel = {\r\n name: '',\r\n isPrivate: false,\r\n};\r\n\r\nconst CreateGroupForm: React.FC = ({ onGroupCreation }) => {\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n\r\n const onSubmit = (values: IGroupInputModel, { resetForm }: FormikHelpers) => {\r\n if (!isSubmitting) {\r\n setIsSubmitting(true);\r\n callApi('api/app/group', 'POST', { ...values, userId })\r\n .then(({ data }) => {\r\n onGroupCreation(data);\r\n resetForm();\r\n trackEvent('Group Created', 'Group Created Success', 'Group Index Page');\r\n })\r\n .catch((message) => {\r\n if (message?.response?.data?.error?.message === 'Sorry, your group name contains inappropriate language.') {\r\n inappropriateLanguageNotification();\r\n }\r\n trackEvent('Group Created', 'Group Created Failure', 'Group Index Page');\r\n })\r\n .finally(() => setIsSubmitting(false));\r\n }\r\n };\r\n\r\n return (\r\n \r\n {({ values }) => (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n trackEvent('Group Created', 'Group Created Click', 'Group Index Page')}\r\n >\r\n Add New Group\r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default CreateGroupForm;\r\n","export default __webpack_public_path__ + \"static/media/groupRank.3c05f665.svg\";","import React from 'react';\r\nimport Button from '../Layout/Button';\r\nimport { Link } from 'react-router-dom';\r\n// import { trackEventData } from 'infrastructure/tracking/GoogleAnalytics';\r\n// import EventTrackingData from 'constants/EventTracking';\r\n// import { iconDelete, iconLeave, iconView } from 'images/groups';\r\nimport iconGroupRank from 'images/icons/groupRank.svg';\r\n// import GetConfig from 'helpers/GetConfig';\r\nimport classNames from 'classnames';\r\nimport { IGroupBaseModel } from 'types/Groups';\r\n// import { groupIndexPage } from 'types/pageNameContants';\r\n// import { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\n\r\ninterface IUserGroupListItemProps {\r\n group: IGroupBaseModel;\r\n index: number;\r\n}\r\n\r\nconst UserGroupListItem: React.FunctionComponent = ({ index, group }) => {\r\n return (\r\n
\r\n
\r\n
{group.name}
\r\n
\r\n
\r\n
\r\n
\r\n \"Group\r\n {group.memberCount}\r\n
\r\n
\r\n \r\n trackEventData(EventTrackingData.ViewButtonClick)}\r\n >\r\n View\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default UserGroupListItem;\r\n","import { IGroupBaseModel } from 'types/Groups';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport Button from 'components/Layout/Button';\r\nimport React, { useState } from 'react';\r\nimport callApi from 'infrastructure/api/CallApi';\r\nimport { iconGroupMembers } from 'images/icons';\r\nimport { numberWithCommas } from 'helpers';\r\nimport { Link } from 'react-router-dom';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from 'types';\r\nimport { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\n\r\ninterface IPublicGroupListItemProps {\r\n group: IGroupBaseModel;\r\n onGroupJoinSuccess: (group: IGroupBaseModel) => void;\r\n isMember: boolean;\r\n}\r\n\r\nconst PublicGroupListItem: React.FC = ({ group, onGroupJoinSuccess, isMember }) => {\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const location = useLocation();\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n const isPublicListPage = location.pathname.includes('group-list');\r\n const label = isPublicListPage ? 'Public Group List Page' : 'Group Index Page';\r\n\r\n const trackJoinOrView = (joinOrView: string) => {\r\n const category = joinOrView === 'join' ? 'Join group' : 'View group';\r\n const action = category + ' click';\r\n trackEvent(category, action, label);\r\n };\r\n\r\n const onJoinClick = () => {\r\n trackJoinOrView('join');\r\n if (!isSubmitting && !isMember) {\r\n setIsSubmitting(true);\r\n callApi('api/app/group/join', 'POST', {\r\n userId,\r\n inviteCode: group.inviteCode,\r\n })\r\n .then(({ data }) => {\r\n onGroupJoinSuccess(data);\r\n trackEvent('Join Group', 'Join Group Success', label);\r\n })\r\n .finally(() => setIsSubmitting(false));\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n
{group.name}
\r\n
\r\n \"icon-group\"\r\n {numberWithCommas(group.memberCount)}\r\n
\r\n \r\n \r\n trackJoinOrView('view')}>\r\n \r\n \r\n \r\n {!isMember && (\r\n \r\n \r\n Join\r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default PublicGroupListItem;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport Loader from './Loader';\r\nimport CreateGroupForm from './Groups/CreateGroupForm';\r\nimport { IGroupBaseModel } from 'types/Groups';\r\nimport UserGroupListItem from './Groups/UserGroupListItem';\r\nimport callApi from 'infrastructure/api/CallApi';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from 'types';\r\nimport { Link } from 'react-router-dom';\r\nimport Button from 'components/Layout/Button';\r\nimport { GroupIndexRoute, GroupListPageRoute, ProfileRoute } from 'constants/Routes';\r\nimport PublicGroupListItem from './Groups/PublicGroupListItem';\r\nimport { badgeNotification } from 'helpers/BadgeNotification';\r\nimport { useHistory } from 'react-router';\r\nimport { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\nimport { groupIndexPage } from 'types/pageNameContants';\r\nimport usePageView from 'infrastructure/hooks/usePageView';\r\n\r\nconst GroupIndexPage = () => {\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [userGroups, setUserGroups] = useState>([]);\r\n const [publicGroups, setPublicGroups] = useState>([]);\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n const history = useHistory();\r\n usePageView(groupIndexPage, GroupIndexRoute);\r\n\r\n useEffect(() => {\r\n const userGroupPromise = callApi>(`api/app/group/users-groups/${userId}`, 'GET');\r\n const publicGroupPromise = callApi>('api/app/group/public-short-list', 'GET');\r\n\r\n Promise.all([userGroupPromise, publicGroupPromise]).then(([{ data: userGroups }, { data: publicGroups }]) => {\r\n setUserGroups(userGroups);\r\n setPublicGroups(publicGroups);\r\n setIsLoading(false);\r\n });\r\n }, [userId]);\r\n\r\n const onNewGroup = (group: IGroupBaseModel) => {\r\n if (group.awardedBadges.length > 0) {\r\n // notify user of new badge\r\n badgeNotification(group.awardedBadges, [], () => history.push(ProfileRoute));\r\n }\r\n\r\n setUserGroups([...userGroups, group]);\r\n\r\n setPublicGroups(\r\n publicGroups.map((publicGroup) => {\r\n if (publicGroup.id === group.id) {\r\n return {\r\n ...publicGroup,\r\n memberCount: publicGroup.memberCount + 1,\r\n };\r\n }\r\n return publicGroup;\r\n })\r\n );\r\n };\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n

Play with your friends and other Hallmark viewers!

\r\n {userGroups.length > 0 && (\r\n <>\r\n

Your Groups

\r\n
\r\n \r\n
\r\n {userGroups.map((group, index) => (\r\n \r\n ))}\r\n
\r\n \r\n
\r\n \r\n )}\r\n \r\n \r\n

Create a Group

\r\n \r\n \r\n
\r\n\r\n \r\n \r\n {/* FOR SEO PURPOSES THIS SHOULD BE A DIFFERENT HEADER VALUE */}\r\n

Public Groups

\r\n \r\n
\r\n \r\n {publicGroups.map((x) => (\r\n y.id).includes(x.id)}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n trackEvent('View All Groups', 'View All Groups Click', 'Group Index Page')}\r\n >\r\n View All\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default GroupIndexPage;\r\n","export default __webpack_public_path__ + \"static/media/locked.2373ec59.svg\";","export default __webpack_public_path__ + \"static/media/padlock-image.bcb9e916.webp\";","import React, { useState } from 'react';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\nimport Button from 'components/Layout/Button';\r\nimport GetConfig from '../../helpers/GetConfig';\r\nimport { removeTrailingSlash } from 'helpers';\r\nimport { trackEvent } from 'infrastructure/tracking/GoogleAnalytics';\r\n\r\ninterface IInviteLinkProps {\r\n inviteCode: string;\r\n groupName: string;\r\n}\r\n\r\nconst { appUrl } = GetConfig();\r\n\r\nconst InviteLink: React.FC = ({ inviteCode, groupName }) => {\r\n const inviteUrl = `${removeTrailingSlash(appUrl)}/group-invite/${inviteCode}`;\r\n const [hasCopied, setHasCopied] = useState(false);\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {\r\n setHasCopied(true);\r\n }}\r\n >\r\n trackEvent('Copy link', 'Copy link click', 'Group Page ' + inviteCode)}\r\n >\r\n {hasCopied ? <>Copied : <>Copy Link}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default InviteLink;\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { Col, Container, Row, Image } from 'react-bootstrap';\r\nimport Button from 'components/Layout/Button';\r\nimport RootState from 'types';\r\nimport { Link, useHistory, useParams } from 'react-router-dom';\r\nimport { GroupIndexRoute, UrlNameKey } from 'constants/Routes';\r\nimport UnlockedIcon from 'images/icons/unlocked.svg';\r\nimport LockedIcon from 'images/icons/locked.svg';\r\nimport iconGroupRank from 'images/icons/groupRank.svg';\r\nimport PadlockImage from 'images/icons/padlock-image.webp';\r\nimport callApi from 'infrastructure/api/CallApi';\r\nimport { useSelector } from 'react-redux';\r\nimport { IGroupBaseModel, IGroupModel } from 'types/Groups';\r\nimport Loader from './Loader';\r\nimport getProfileImage from 'helpers/GetProfileImage';\r\nimport InviteLink from './Groups/InviteLink';\r\nimport { groupDetailsPage } from 'types/pageNameContants';\r\nimport { trackEvent, trackPageView } from 'infrastructure/tracking/GoogleAnalytics';\r\n\r\nconst GroupPage: React.FC = () => {\r\n const [group, setGroup] = useState(null);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const urlName = useParams<{ [UrlNameKey]: string }>()[UrlNameKey]!;\r\n const showMobileContent = false;\r\n const history = useHistory();\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n\r\n useEffect(() => {\r\n callApi(`api/app/group?userId=${userId}&inviteCode=${urlName}`, 'GET').then(({ data }) => {\r\n setGroup(data);\r\n trackPageView(groupDetailsPage, `/group/${urlName}`);\r\n if (data?.groupType === 'private' && !data?.isMember) {\r\n history.replace(GroupIndexRoute);\r\n }\r\n });\r\n }, []);\r\n\r\n const onJoinClick = () => {\r\n if (!group || group.isMember || isSubmitting) {\r\n return;\r\n }\r\n setIsSubmitting(true);\r\n callApi('api/app/group/join', 'POST', {\r\n userId,\r\n inviteCode: group.inviteCode,\r\n })\r\n .then(() => {\r\n trackEvent('Join Group', 'Join Group Success', 'Group Page ' + group.inviteCode);\r\n setGroup((currentGroup) => (currentGroup !== null ? { ...currentGroup, isMember: true } : null));\r\n callApi(`api/app/group?userId=${userId}&inviteCode=${urlName}`, 'GET').then(({ data }) => {\r\n setGroup(data);\r\n });\r\n })\r\n .finally(() => setIsSubmitting(false));\r\n };\r\n\r\n if (!group) {\r\n return ;\r\n }\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n trackEvent('Back to groups', 'Back to groups click', 'Groups Page ' + urlName)}\r\n >\r\n {showMobileContent ? 'Back' : 'Back to groups'}\r\n \r\n \r\n \r\n \r\n

{group.name}

\r\n \r\n \r\n
\r\n
\r\n {group.groupType === 'public' ? (\r\n <>\r\n \r\n Public Group\r\n \r\n ) : (\r\n <>\r\n \r\n Private Group\r\n \r\n )}\r\n
\r\n {!group.isMember && (\r\n \r\n )}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {group.isMember && (\r\n \r\n {' '}\r\n \r\n \r\n

\r\n {showMobileContent\r\n ? 'Copy the below link and invite friends to your group!'\r\n : 'Share the below link to invite friends to your group!'}\r\n

\r\n \r\n
\r\n \r\n \r\n
Share link:
\r\n \r\n \r\n
\r\n
\r\n )}\r\n {(group.isMember || group.groupType === 'public') && (\r\n \r\n \r\n {group.groupMembers && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {group.groupMembers.map((userScore, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n

Name

\r\n
\r\n

Rank

\r\n
\r\n

Points

\r\n
{index + 1}\r\n {userScore.profileImage !== undefined ? (\r\n \r\n ) : null}\r\n

{userScore.name}

\r\n
\r\n
\r\n \"Group\r\n

{userScore.rank}

\r\n
\r\n
\r\n

{userScore.score}

\r\n
\r\n )}\r\n \r\n
\r\n )}\r\n {!group.isMember && group.groupType === 'private' && (\r\n \r\n
\r\n \r\n

This is a private group.

\r\n

To join, ask for an invite link from the group creator.

\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default GroupPage;\r\n","import React, { useState, useEffect } from 'react';\r\nimport Loader from './Loader';\r\nimport callApi from 'infrastructure/api/CallApi';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport RootState from 'types';\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom';\r\nimport { FormRoute, ProfileRoute, UrlNameKey } from 'constants/Routes';\r\nimport Swal from 'sweetalert2';\r\nimport { GroupIndexRoute } from '../constants/Routes';\r\nimport { clearCode, setCode } from 'slices/groupinvite/actions';\r\nimport { IGroupBaseModel } from 'types/Groups';\r\nimport { badgeNotification } from 'helpers/BadgeNotification';\r\n\r\nconst GroupInvitePage = () => {\r\n // usePageView(PageData.GroupInvitePageData);\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const inviteCode = useParams<{ [UrlNameKey]: string }>()[UrlNameKey]!;\r\n const [inviteProcessing, setInviteProcessing] = useState(true);\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n\r\n useEffect(() => {\r\n if (userId) {\r\n callApi('api/app/group/join', 'POST', {\r\n inviteCode,\r\n userId,\r\n })\r\n .then(({ data }) => {\r\n dispatch(clearCode());\r\n setInviteProcessing(false);\r\n if (data.awardedBadges.length > 0) {\r\n // notify user of new badge\r\n badgeNotification(data.awardedBadges, [], () => history.push(ProfileRoute));\r\n }\r\n })\r\n .catch((e) => {\r\n handleError(e);\r\n });\r\n } else {\r\n dispatch(setCode(inviteCode));\r\n setInviteProcessing(false);\r\n }\r\n }, []);\r\n\r\n const handleError = (error: any) => {\r\n const response = error.response;\r\n if (\r\n error &&\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error &&\r\n error.response.data.error.code === 'CustomError'\r\n ) {\r\n Swal.fire({\r\n title: 'Oops!',\r\n text: response.data.error.message,\r\n backdrop: false,\r\n toast: true,\r\n position: 'top-end',\r\n showConfirmButton: false,\r\n timer: 3000,\r\n timerProgressBar: true,\r\n });\r\n }\r\n history.push(GroupIndexRoute);\r\n };\r\n\r\n if (inviteProcessing) {\r\n return ;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default GroupInvitePage;\r\n","import { GroupInviteActionTypes, SETCODE } from './actionTypes';\r\n\r\nexport function setCode(code: string): GroupInviteActionTypes {\r\n return {\r\n type: SETCODE,\r\n code,\r\n };\r\n}\r\n\r\nexport function clearCode(): GroupInviteActionTypes {\r\n return {\r\n type: 'CLEARCODE',\r\n };\r\n}\r\n","import React from 'react';\r\nimport Button from 'components/Layout/Button';\r\n\r\ninterface IPaginationButtonProps {\r\n isSelected: boolean;\r\n pageNumber: number;\r\n index: number;\r\n onClick: () => void;\r\n}\r\nconst PaginationButton: React.FC = ({ isSelected, pageNumber, index, onClick }) => {\r\n return (\r\n
  • \r\n \r\n

    {pageNumber}

    \r\n \r\n
  • \r\n );\r\n};\r\n\r\nexport default PaginationButton;\r\n","import React from 'react';\r\n\r\nconst ArrowLeft = ({ className }: { className?: string }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowLeft;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { Row, Container } from 'react-bootstrap';\r\n\r\nimport { IGroupBaseModel, IPagedGroupListModel } from 'types/Groups';\r\nimport callApi from '../infrastructure/api/CallApi';\r\nimport Loader from './Loader';\r\nimport PublicGroupListItem from './Groups/PublicGroupListItem';\r\nimport { getPageNumbers } from 'helpers';\r\nimport PaginationButton from './Groups/PaginationButton';\r\nimport ArrowLeft from '../images/chex2023/icons/ArrowLeft';\r\nimport ArrowRight from '../images/chex2023/icons/ArrowRight';\r\nimport { trackEvent, trackPageView } from 'infrastructure/tracking/GoogleAnalytics';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from 'types';\r\nimport { groupPublicPage } from 'types/pageNameContants';\r\nimport { badgeNotification } from 'helpers/BadgeNotification';\r\nimport { useHistory } from 'react-router';\r\nimport { ProfileRoute } from 'constants/Routes';\r\n\r\nconst GroupPublicListPage: React.FC = (props) => {\r\n const componentMountRef = useRef(false);\r\n const [page, setPage] = useState(1);\r\n const [items, setItems] = useState>([]);\r\n const [numberOfPages, setNumberOfPages] = useState(1);\r\n const [groupIds, setGroupIds] = useState>([]);\r\n const [apiCalled, setApiCalled] = useState(true);\r\n const { id: userId } = useSelector((state: RootState) => state.user);\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n if (!items.length || componentMountRef.current) {\r\n callApi(`api/app/group/paged-list?page=${page}`, 'GET').then(({ data }) => {\r\n setNumberOfPages(data.numberOfPages);\r\n setItems(data.items);\r\n });\r\n }\r\n componentMountRef.current = true;\r\n trackPageView(`${groupPublicPage}${page}`, `/group-list/${page}`);\r\n }, [page]);\r\n\r\n useEffect(() => {\r\n callApi>(`api/app/group/user-group-ids/${userId}`, 'GET').then(({ data }) => {\r\n console.log(data);\r\n setGroupIds(data);\r\n setApiCalled(true);\r\n });\r\n }, []);\r\n\r\n const onNewGroup = (group: IGroupBaseModel) => {\r\n setGroupIds([...groupIds, group.id]);\r\n if (group.awardedBadges.length > 0) {\r\n badgeNotification(group.awardedBadges, [], () => history.push(ProfileRoute));\r\n }\r\n\r\n setItems(\r\n items.map((publicGroup) => {\r\n if (publicGroup.id === group.id) {\r\n return {\r\n ...publicGroup,\r\n memberCount: publicGroup.memberCount + 1,\r\n };\r\n }\r\n return publicGroup;\r\n })\r\n );\r\n };\r\n\r\n if (items.length === 0 || !apiCalled) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n

    Play with your friends and other Hallmark viewers!

    \r\n

    Public Groups

    \r\n \r\n {items.map((x) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default GroupPublicListPage;\r\n","import React, { ReactElement } from 'react';\r\nimport { Route, Switch, useLocation } from 'react-router-dom';\r\nimport { isIE } from 'react-device-detect';\r\nimport LandingPage from '../../components/LandingPage';\r\nimport FormPage from '../../components/FormPage';\r\nimport GamePage from '../../components/GamePage';\r\nimport RulesPage from '../../components/RulesPage';\r\nimport ProfilePage from '../../components/ProfilePage';\r\nimport LeaderBoardPage from '../../components/LeaderBoardPage';\r\nimport SecuredRoute from './SecuredRoute';\r\nimport AnonymousRoute from './AnonymousRoute';\r\nimport CloseWindow from './CloseWindow';\r\nimport GenericRoute from './NotFound404';\r\nimport posed, { PoseGroup } from 'react-pose';\r\nimport useScrollToTop from '../hooks/useScrollToTop';\r\nimport {\r\n LandingRoute,\r\n FormRoute,\r\n LeaderboardRoute,\r\n GameRoute,\r\n RulesRoute,\r\n ProfileRoute,\r\n GroupIndexRoute,\r\n GroupDetailPageRoute,\r\n GroupListPageRoute,\r\n} from '../../constants/Routes';\r\nimport GroupIndexPage from '../../components/GroupIndexPage';\r\nimport GroupPage from 'components/GroupPage';\r\nimport { GroupInvitePageRoute } from '../../constants/Routes';\r\nimport GroupInvitePage from 'components/GroupInvitePage';\r\nimport GroupPublicListPage from 'components/GroupPublicListPage';\r\n\r\ninterface PageTransitionProps {\r\n location: any;\r\n children: ReactElement;\r\n}\r\n\r\nconst TransitionDiv = posed.div({\r\n enter: { opacity: 1, delay: 0 },\r\n exit: { opacity: 0 },\r\n});\r\n\r\nconst PageTransitions: (props: PageTransitionProps) => ReactElement = ({ children, location }) => {\r\n return isIE ? (\r\n children\r\n ) : (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nconst Routes = () => {\r\n const location = useLocation();\r\n useScrollToTop(location.pathname);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Routes;\r\n","import * as types from \"./actionTypes\";\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const addIsWebview = (isWebview) => {\r\n return { type: types.ADD_IS_WEBVIEW, isWebview };\r\n};\r\n","import React from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { HalftoneTextureBottom, HalftoneTextureTop } from '../../images/backgrounds';\r\n\r\ninterface PageContainerProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst PageContainer = ({ children }: PageContainerProps) => {\r\n const location = useLocation();\r\n\r\n const landingRoutes = ['/', '/signup'];\r\n const isLanding = landingRoutes.includes(location.pathname);\r\n const textureFillColor = isLanding ? '#F9F7FF' : '#F9F7FF';\r\n return (\r\n
    \r\n \r\n {/* */}\r\n {children}\r\n
    \r\n );\r\n};\r\n\r\nexport default PageContainer;\r\n","import './NavBarMobile.scss';\r\nimport React from 'react';\r\nimport { getNavbarIcon, getNavbarUrl } from './utils';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nimport { GameRoute, LeaderboardRoute, ProfileRoute } from 'constants/Routes';\r\nimport { useSelector } from 'react-redux';\r\nimport RootState from '../../../types/index';\r\n\r\nimport classNames from 'classnames';\r\n\r\nconst NavBarMobile = () => {\r\n const pathname = useLocation().pathname;\r\n const { name: username } = useSelector((state: RootState) => state.user);\r\n\r\n return username ? (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nconst NavBarMobileLink = ({ title, isCurrentRoute }: { title: string; isCurrentRoute: boolean }) => {\r\n return (\r\n \r\n {isCurrentRoute ?
    : ''}\r\n {getNavbarIcon(title)}\r\n {title}\r\n \r\n );\r\n};\r\n\r\nexport default NavBarMobile;\r\n","import './App.css';\r\n\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Button, Container } from 'react-bootstrap';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport HallmarkFooter from './components/Hallmark/HallmarkFooter';\r\nimport HallmarkHeader from './components/Hallmark/HallmarkHeader';\r\nimport AnimatedBanner from './components/Ads/AnimatedBanner';\r\nimport FixedAd from './components/Ads/FixedAd';\r\nimport { NavBar } from './components/Layout';\r\nimport Disclaimer from './components/Layout/Disclaimer';\r\nimport { shouldDisplayL } from './infrastructure/freewheel/breakpoints';\r\nimport { history } from './infrastructure/redux/configureStore';\r\nimport { isIE } from 'react-device-detect';\r\nimport RootState, { UserDto, EntryCountDto, SweepsDetailsDto } from './types';\r\nimport Routes from './infrastructure/routes/routes';\r\nimport callApi from './infrastructure/api/CallApi';\r\nimport { localStorageKey, localStorageModalViewedKey } from './constants';\r\nimport { login, viewedModal, setEntryCount } from './slices/users/actions';\r\nimport { setSweepstakes } from './slices/sweepstakes/actions';\r\nimport { addIsWebview } from './infrastructure/isWebView/actions';\r\nimport Loader from './components/Loader';\r\nimport PageContainer from './components/Layout/PageContainer';\r\n\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport './styles/style.scss';\r\nimport { getUrlParams, saveToSessionStorage, getFromSessionStorage } from './helpers/index';\r\nimport { setInviteCode } from './slices/sharing/actions';\r\nimport { GameConfigDto } from './types/index';\r\nimport { setConfig } from './slices/gameconfig/actions';\r\nimport { selectIsCurrentSweepstake } from './slices/sweepstakes/selectors';\r\nimport NavBarMobile from 'components/Layout/NavBar/NavBarMobile';\r\n\r\nconst App: React.FC = () => {\r\n const [isLoading, setIsLoading] = useState(true);\r\n // eslint-disable-next-line\r\n const [showErrorView, setShowErrorView] = useState(false);\r\n const dispatch = useDispatch();\r\n const { webView: isWebView } = useSelector((state: RootState) => state.isWebView);\r\n const isCurrentSweepstake = useSelector(selectIsCurrentSweepstake);\r\n\r\n const checkUserData = () => {\r\n try {\r\n const userData = localStorage.getItem(localStorageKey);\r\n const configPromise = callApi('api/app/game-config/game-config', 'GET').then(({ data }) => {\r\n dispatch(setConfig(data));\r\n });\r\n const promises: Array> = [configPromise];\r\n if (userData) {\r\n const userDto = JSON.parse(userData) as UserDto;\r\n dispatch(login(userDto));\r\n const entryPromise = callApi(\r\n `api/app/form-entry/enter-existing-user/${userDto.id}`,\r\n 'POST'\r\n ).then(({ data }) => {\r\n dispatch(setEntryCount(data));\r\n });\r\n promises.push(entryPromise);\r\n } else {\r\n const sweepstakesPromise = callApi(\r\n `api/app/sweepstake-countdown/current-sweepstake-status/`,\r\n 'GET'\r\n ).then(({ data }) => {\r\n dispatch(setSweepstakes(data));\r\n });\r\n promises.push(sweepstakesPromise);\r\n }\r\n Promise.all(promises)\r\n .catch(() => {\r\n setShowErrorView(true);\r\n try {\r\n localStorage.removeItem(localStorageKey);\r\n } catch {}\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n } catch {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (window.location.href.toLowerCase().includes('hmc=1')) {\r\n dispatch(addIsWebview(true));\r\n }\r\n const shareCode = getUrlParams('sharecode', window.location.search.toLowerCase()) || getFromSessionStorage();\r\n if (shareCode) {\r\n saveToSessionStorage(shareCode);\r\n dispatch(setInviteCode(shareCode));\r\n }\r\n checkUserData();\r\n\r\n try {\r\n const modalViewed = localStorage.getItem(localStorageModalViewedKey);\r\n if (modalViewed) {\r\n dispatch(viewedModal());\r\n }\r\n } catch {}\r\n\r\n const ieClass = isIE ? 'isIE' : 'notIE';\r\n document.body.classList.add(ieClass);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n return (\r\n \r\n
    \r\n \r\n \r\n {showErrorView ? (\r\n \r\n
    \r\n \r\n
    Something went wrong! Please try again.
    \r\n \r\n
    \r\n
    \r\n
    \r\n ) : (\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n {isCurrentSweepstake && }\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default App;\r\n","import { GameConfigActionTypes, SETCONFIG } from './actionTypes';\r\nimport { GameConfigDto } from '../../types/index';\r\n\r\nexport function setConfig(gameConfig: GameConfigDto): GameConfigActionTypes {\r\n return { type: SETCONFIG, ...gameConfig };\r\n}","import { SETSWEEPSTAKES, SweepstakesActionTypes } from './actionTypes';\r\nimport { SweepsDetailsDto } from '../../types';\r\n\r\nexport function setSweepstakes(dto: SweepsDetailsDto): SweepstakesActionTypes {\r\n return { type: SETSWEEPSTAKES, ...dto };\r\n}\r\n","import { ShareActionTypes, SETINVITECODE } from './actionTypes';\r\n\r\nexport function setInviteCode(shareCode: string): ShareActionTypes {\r\n return { type: SETINVITECODE, shareCode };\r\n}\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Container, Button } from 'react-bootstrap';\r\nimport { trackEvent } from '../tracking/GoogleAnalytics';\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n this.setState({ hasError: true });\r\n trackEvent('Error', 'AppError', 'General Error');\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return (\r\n \r\n
    \r\n \r\n
    Oops, looks like we can't find the page you were looking for.
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport smoothscroll from 'smoothscroll-polyfill';\r\nimport { Provider } from 'react-redux';\r\nimport { BreakpointsProvider } from 'react-with-breakpoints';\r\nimport ErrorBoundary from './infrastructure/errors/ErrorBoundary';\r\nimport store from './infrastructure/redux/configureStore';\r\nimport { FreewheelProvider } from './infrastructure/freewheel/provider';\r\n\r\nimport './index.css';\r\n\r\nsmoothscroll.polyfill();\r\n\r\nconst breakpoints = {\r\n small: 576,\r\n medium: 768,\r\n large: 992,\r\n xlarge: Infinity,\r\n};\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n// reportWebVitals();\r\n"],"sourceRoot":""}