{"version":3,"file":"main-e2283b41aecabf26022f.js","mappings":"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EAAAA,EAAAA,YAAAA,GAAAA,cACAA,EAAAA,EAAAA,UAAAA,GAAAA,YACAA,EAAAA,EAAAA,gBAAAA,GAAAA,kBALF,CAAYA,IAAAA,EAAM,KAYlB,SAAY6W,GACVA,EAAAA,IAAAA,MACAA,EAAAA,QAAAA,UACAA,EAAAA,eAAAA,iBAHF,CAAYA,KAAAA,GAAQ,KAMpB,SAAYrpB,GACVA,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,OAFF,CAAYA,KAAAA,GAAc,KAK1B,SAAYspB,GACVA,EAAAA,UAAAA,YACAA,EAAAA,qBAAAA,uBACAA,EAAAA,GAAAA,KAHF,CAAYA,KAAAA,GAAe,KAQpB,ICzIKK,GAKAC,GCLAC,GF2ICC,GAA6C,MG3I7CC,GAAsB,CACjC,iCACA,cACA,UACA,UACA,UACA,SACA,sBACA,YACA,UACA,YACA,UACA,aACA,UACA,UACA,aACA,WACA,UACA,UACA,SACA,QACA,SACA,UACA,yBACA,WACA,SACA,SACA,WACA,eACA,UACA,aACA,WACA,WACA,SACA,iCACA,OACA,QACA,QACA,WACA,UACA,kCACA,wBACA,aACA,gBACA,UACA,SACA,iBACA,UACA,WACA,WACA,qBACA,UACA,QACA,cACA,oBACA,UACA,UACA,WACA,OACA,UACA,SACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,YACA,SACA,gBACA,SACA,QACA,WACA,UACA,UACA,QACA,YACA,OACA,UACA,SACA,QACA,UACA,QACA,SACA,aACA,QACA,WACA,SACA,SACA,aACA,OACA,SACA,UACA,UACA,UACA,QACA,gBACA,YACA,aACA,YACA,aACA,SACA,WACA,WACA,OACA,QACA,mBACA,aACA,YACA,SACA,aACA,UACA,SACA,WACA,aACA,UACA,aACA,kBACA,UACA,QACA,QACA,cACA,cACA,YACA,QACA,UACA,SACA,OACA,WACA,QACA,YACA,SACA,mBACA,WACA,OACA,cACA,SACA,WACA,QACA,UACA,SACA,SACA,wBACA,cACA,mCACA,QACA,aACA,wBACA,eACA,UACA,SACA,aACA,eA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AAuB,IAAM,uBAAuB,IAAM,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,GAAW,OCL/mG5B,EAAo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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///webpack/runtime/css loading","webpack:///../frontend/common/actions/gameChallengeActions.ts","webpack:///../frontend/common/actions/gameChallengeProposalActions.ts","webpack:///../frontend/common/actions/snackbarActions.ts","webpack:///../frontend/common/actions/countActions.ts","webpack:///../frontend/common/actions/gameActions.ts","webpack:///../frontend/common/actions/publisherActions.ts","webpack:///../frontend/common/actions/userActions.ts","webpack:///../frontend/common/actions/modalManagementActions.ts","webpack:///../frontend/common/actions/featureActions.ts","webpack:///../frontend/common/actions/sdkDownloadActions.ts","webpack:///../frontend/common/actions/analyticsActions.ts","webpack:///../frontend/common/actions/currentUser.ts","webpack:///../frontend/common/actions/publisher.ts","webpack:///../frontend/common/actions/permission.ts","webpack:///../frontend/common/actions/gameAccessActions.ts","webpack:///../frontend/common/actions/index.ts","webpack:///../frontend/common/atoms/AtomButton.tsx","webpack:///../frontend/common/atoms/AtomModal.tsx","webpack:///../frontend/common/atoms/AtomMetaTag.tsx","webpack:///../frontend/common/atoms/AtomSingleSelectButton.tsx","webpack:///../frontend/common/atoms/AtomCopyToClipboard.tsx","webpack:///../frontend/common/atoms/AtomSnackbar.tsx","webpack:///../frontend/common/atoms/AtomImageUploader.tsx","webpack:///../frontend/common/atoms/AtomTextField.tsx","webpack:///../frontend/common/atoms/AtomDateSelector.tsx","webpack:///../frontend/common/atoms/AtomTooltip.tsx","webpack:///../frontend/common/atoms/AtomLink.tsx","webpack:///../frontend/common/atoms/AtomColoredCircle.tsx","webpack:///../frontend/common/atoms/AtomProgressBar.tsx","webpack:///../frontend/common/atoms/AtomCollapsible.tsx","webpack:///../frontend/common/atoms/AtomRadioButton.tsx","webpack:///../frontend/common/atoms/AtomTableHeader.tsx","webpack:///../frontend/common/atoms/AtomTableRows.tsx","webpack:///../frontend/common/atoms/AtomTableRow.tsx","webpack:///../frontend/common/atoms/AtomMenu.tsx","webpack:///../frontend/common/atoms/AtomLinkButton.tsx","webpack:///../frontend/common/atoms/AtomInteractiveIcon.tsx","webpack:///../frontend/common/atoms/AtomTableOfContents.tsx","webpack:///../frontend/common/components/GameSnapshot/index.ts","webpack:///../frontend/common/components/PasswordWrapper/constants.ts","webpack:///../frontend/common/components/PasswordWrapper/PasswordWrapper.tsx","webpack:///../frontend/common/components/PasswordWrapper/subcomponents/passwordChecklistItems.tsx","webpack:///../frontend/common/components/PromotionBanner/PromotionBanner.tsx","webpack:///../frontend/common/constants/tooltipConstants.ts","webpack:///../frontend/common/components/TooltipWithStyle.tsx","webpack:///../frontend/common/components/ArchiveModal/index.ts","webpack:///../frontend/common/components/AnalyticsSummaryCard/index.ts","webpack:///../frontend/common/components/AnalyticsSummaryCardContainer.tsx","webpack:///../frontend/common/components/BackButton.tsx","webpack:///../frontend/common/components/BarChartContentLoader.tsx","webpack:///../frontend/common/components/BestPracticeCard.tsx","webpack:///../frontend/common/components/Chart.tsx","webpack:///../frontend/common/components/GameObjectCard.tsx","webpack:///../frontend/common/components/TooltipNoAccess/index.ts","webpack:///../frontend/common/components/TooltipNoAccess/TooltipNoAccess.tsx","webpack:///../frontend/common/components/GameObjectList/index.ts","webpack:///../frontend/common/components/Loading.jsx","webpack:///../frontend/common/components/MaterialCheckbox.tsx","webpack:///../frontend/common/components/MaterialFileUpload.tsx","webpack:///../frontend/common/components/MaterialPasswordField.tsx","webpack:///../frontend/common/components/MaterialSingleSelector.tsx","webpack:///../frontend/common/components/MaterialTab.tsx","webpack:///../frontend/common/components/ModalHeaders.tsx","webpack:///../frontend/common/components/PageHeader.tsx","webpack:///../frontend/common/components/PasswordWrapper/index.ts","webpack:///../frontend/common/components/ResponsiveBarChart.tsx","webpack:///../frontend/common/components/ResponsiveLineChart.tsx","webpack:///../frontend/common/components/SectionHeader.tsx","webpack:///../frontend/common/components/SubText.tsx","webpack:///../frontend/common/components/EntryPointWorkflowChangeAlert.tsx","webpack:///../frontend/common/components/SyncButton.tsx","webpack:///../frontend/common/components/Accordion.tsx","webpack:///../frontend/common/components/StickyHeader.tsx","webpack:///../frontend/common/constants/dateAndTimeConstants.ts","webpack:///../frontend/common/constants/googleAnalytics4.ts","webpack:///../frontend/common/constants/analyticsConstants.ts","webpack:///../frontend/common/constants/chartConstants.tsx","webpack:///../frontend/common/constants/constants.ts","webpack:///../frontend/common/constants/environments.ts","webpack:///../frontend/common/constants/formConstants.ts","webpack:///../frontend/common/constants/countries.ts","webpack:///../frontend/common/constants/gameConstants.ts","webpack:///../frontend/common/constants/keyConstants.ts","webpack:///../frontend/common/constants/locale.ts","webpack:///../frontend/common/constants/materialUiConstants.ts","webpack:///../frontend/common/constants/menuConstants.ts","webpack:///../frontend/common/constants/googleAnalytics.ts","webpack:///../frontend/common/constants/permissions.ts","webpack:///../frontend/common/constants/urlConstants.ts","webpack:///../frontend/common/constants/userRoles.ts","webpack:///../frontend/common/constants/utmLocalStorage.ts","webpack:///../frontend/common/constants/peekModeConstants.ts","webpack:///../frontend/common/contexts/UserContext.tsx","webpack:///../frontend/common/helpers/caseConversion.ts","webpack:///../frontend/common/helpers/cookieHelpers.ts","webpack:///../frontend/common/helpers/miscHelpers.ts","webpack:///../frontend/common/helpers/dateHelper.ts","webpack:///../frontend/common/helpers/normalizeData.ts","webpack:///../frontend/common/helpers/filterHelpers.ts","webpack:///../frontend/common/helpers/summaryCalculationHelpers.ts","webpack:///../frontend/common/helpers/chartHelper.tsx","webpack:///../frontend/common/helpers/csvHelper.ts","webpack:///../frontend/common/helpers/gaHelper.ts","webpack:///../frontend/common/helpers/formatDataHelpers.ts","webpack:///../frontend/common/helpers/urlParamHelpers.ts","webpack:///../frontend/common/helpers/dropdownHelper.tsx","webpack:///../frontend/common/helpers/ajaxRequests.js","webpack:///../frontend/common/helpers/dropdownOptionsConverter.ts","webpack:///../frontend/common/helpers/formData.ts","webpack:///../frontend/common/helpers/formValidation.ts","webpack:///../frontend/common/helpers/isDefault.ts","webpack:///../frontend/common/helpers/removeUnwantedCharacters.ts","webpack:///../frontend/common/helpers/calculationHelpers.ts","webpack:///../frontend/common/helpers/formChecks.ts","webpack:///../frontend/common/helpers/fileHelpers.ts","webpack:///../frontend/common/helpers/replaceNulls.ts","webpack:///../frontend/common/helpers/routeHelpers.ts","webpack:///../frontend/common/helpers/gameAccessHelpers.ts","webpack:///../frontend/common/helpers/handleRequestHelpers.ts","webpack:///../frontend/common/helpers/cancelablePromise.ts","webpack:///../frontend/common/helpers/snackbarHookHelper.tsx","webpack:///../frontend/common/helpers/wordHelpers.ts","webpack:///../frontend/common/hooks/useWindowDimensions.ts","webpack:///../frontend/common/molecules/Banner.tsx","webpack:///../frontend/common/molecules/ButtonWithLoader.tsx","webpack:///../frontend/common/molecules/CardWithIconAndLink.tsx","webpack:///../frontend/common/molecules/PasswordTextField.tsx","webpack:///../frontend/common/molecules/IconToSearchBar.tsx","webpack:///../frontend/common/molecules/BaseAutocomplete.tsx","webpack:///../frontend/common/molecules/GamesAutocomplete.tsx","webpack:///../frontend/common/regex/regex.ts","webpack:///../frontend/common/setup/axiosWithHeader.ts","webpack:///../frontend/core/appConfig.ts","webpack:///../frontend/common/components/ReduxSnackbarAdaptor.tsx","webpack:///../frontend/modules/Account/index.ts","webpack:///../frontend/modules/Analytics/index.ts","webpack:///../frontend/modules/ContactUs/actions.ts","webpack:///../frontend/modules/ContactUs/index.ts","webpack:///../frontend/modules/CookieBanner/index.ts","webpack:///../frontend/modules/Dashboard/index.ts","webpack:///../frontend/modules/GameInfoModal/index.ts","webpack:///../frontend/modules/GameInfoModal/actions.ts","webpack:///../frontend/modules/GameManagement/index.ts","webpack:///../frontend/modules/HomePage/index.ts","webpack:///../frontend/modules/IntegrationIntroduction/index.ts","webpack:///../frontend/modules/Jobs/index.ts","webpack:///../frontend/modules/LearningCenter/modules/CaseStudyBenchmarks/index.ts","webpack:///../frontend/modules/LearningCenter/modules/CaseStudyChat/index.ts","webpack:///../frontend/modules/LearningCenter/modules/CaseStudyInGameItems/index.ts","webpack:///../frontend/modules/LearningCenter/modules/CaseStudyProgression/index.ts","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/ManagedLearningCenterIndex.tsx","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/ManagedLearningCenter.tsx","webpack:///../frontend/modules/NavBar/index.tsx","webpack:///../frontend/modules/NflChallenge/index.ts","webpack:///../frontend/modules/Notifications/index.ts","webpack:///../frontend/modules/PeekMode/modules/PeekHeader/index.ts","webpack:///../frontend/modules/PeekMode/modules/PeekPage/index.ts","webpack:///../frontend/modules/Playground/index.ts","webpack:///../frontend/modules/PlaygroundOld/index.ts","webpack:///../frontend/modules/PrivacyPolicyBar/index.ts","webpack:///../frontend/modules/ProfileModal/index.ts","webpack:///../frontend/modules/RevenueModelNotification/actions.ts","webpack:///../frontend/modules/RevenueModelNotification/constants.tsx","webpack:///../frontend/modules/RevenueModelNotification/helpers.ts","webpack:///../frontend/modules/RevenueModelNotification/RevenueModelNotification.tsx","webpack:///../frontend/modules/SdkDownloads/index.ts","webpack:///../frontend/modules/SignUpFlow/modules/SignIn/index.ts","webpack:///../frontend/modules/SignUpFlow/modules/ChangePassword/index.ts","webpack:///../frontend/modules/SignUpFlow/SignUpFlow.tsx","webpack:///../frontend/modules/Statements/actions.ts","webpack:///../frontend/modules/Statements/index.ts","webpack:///../frontend/modules/Survey/index.ts","webpack:///../frontend/modules/Survey/SurveyContainer/LandingPage/index.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/DialogSurvey.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/PopupSurvey.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/Surveys.tsx","webpack:///../frontend/modules/UserInvite/index.ts","webpack:///../frontend/modules/YourGames/index.ts","webpack:///../frontend/core/app/app.tsx","webpack:///../frontend/core/app/index.ts","webpack:///../frontend/core/root.tsx","webpack:///../frontend/common/reducers/features.ts","webpack:///../frontend/modules/Analytics/reducers/rawData.ts","webpack:///../frontend/modules/Analytics/reducer.ts","webpack:///../frontend/modules/Analytics/reducers/dateRangeLimit.ts","webpack:///../frontend/modules/ContactUs/reducer.ts","webpack:///../frontend/modules/CurrentUser/reducer.ts","webpack:///../frontend/modules/GameAccess/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameState/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/reducers/itemsReducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/reducers/totalCountReducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/reducers/uploadsReducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/modules/RoomVersion/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/Integration/modules/SetupSDK/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/DeepLinking/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/PushNotifications/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/SingleSignOn/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/VirtualCurrency/reducer.ts","webpack:///../frontend/modules/GameManagement/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/Verification/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GamePerformanceStatus/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/PrizeEnablement/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/AccelerateProgram/reducer.ts","webpack:///../frontend/modules/Games/reducers/itemsReducer.ts","webpack:///../frontend/modules/Games/reducer.ts","webpack:///../frontend/modules/Games/reducers/totalCountReducer.ts","webpack:///../frontend/modules/IntegrationGameUrl/reducer.js","webpack:///../frontend/modules/IntegrationVerifyConfig/reducer.ts","webpack:///../frontend/modules/ModalManagement/reducer.ts","webpack:///../frontend/modules/NflChallenge/ProposalPage/reducer.ts","webpack:///../frontend/modules/NflChallenge/reducer.ts","webpack:///../frontend/modules/Notifications/reducer.ts","webpack:///../frontend/modules/Permissions/reducer.ts","webpack:///../frontend/modules/Publisher/modules/ActiveUsers/reducer.ts","webpack:///../frontend/modules/Publisher/modules/InvitedUsers/reducer.ts","webpack:///../frontend/modules/Publisher/modules/PublisherInfo/reducer.ts","webpack:///../frontend/modules/Publisher/reducer.ts","webpack:///../frontend/modules/SdkDownloads/reducer.ts","webpack:///../frontend/modules/Snackbar/reducer.ts","webpack:///../frontend/modules/Statements/reducer.ts","webpack:///../frontend/modules/Survey/reducer.ts","webpack:///../frontend/modules/User/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/GameInfo/reducer.js","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/Theme/reducer.js","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/Tournament/reducer.js","webpack:///../frontend/core/rootReducer.ts","webpack:///../frontend/common/reducers/config.ts","webpack:///../frontend/developerPortal.tsx","webpack:///../frontend/core/store.ts","webpack:///../frontend/modules/Account/modules/Teammates/actions.ts","webpack:///../frontend/modules/Account/modules/Teammates/constants.ts","webpack:///../frontend/modules/Account/modules/User/constants.ts","webpack:///../frontend/modules/Analytics/constants.ts","webpack:///../frontend/modules/ContactUs/constants.ts","webpack:///../frontend/modules/ContactUs/utils.ts","webpack:///../frontend/modules/ContentManagementSystem/modules/Content/modules/Footer/subcomponents/NavigationButton.tsx","webpack:///../frontend/modules/ContentManagementSystem/helpers/renderFooterComponents.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/Content/modules/Content/index.ts","webpack:///../frontend/modules/ContentManagementSystem/modules/Content/modules/Footer/index.ts","webpack:///../frontend/modules/ContentManagementSystem/modules/Content/modules/Header/index.ts","webpack:///../frontend/modules/ContentManagementSystem/modules/Content/modules/HelpSearch/constants.ts","webpack:///../frontend/modules/ContentManagementSystem/modules/LoadingIndicator/LoadingIndicator.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/LoadingIndicator/index.ts","webpack:///../frontend/modules/ContentManagementSystem/utils.ts","webpack:///../frontend/modules/ContentManagementSystem/helpers/request.ts","webpack:///../frontend/modules/Dashboard/helpers/bannerHelpers.ts","webpack:///../frontend/modules/GameManagement/common/actions/verificationActions.ts","webpack:///../frontend/modules/GameManagement/common/actions/gameStateActions.ts","webpack:///../frontend/modules/GameManagement/common/constants/gameStatesConstants.ts","webpack:///../frontend/modules/GameManagement/common/constants/metaTagAttributes.ts","webpack:///../frontend/modules/GameManagement/common/constants/urlConstants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/actions/inGameItemsSchemaActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/actions/progressionRoomActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/actions/progressionRoomVersionActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/actions/progressionRoomVersionLocaleActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/actions/fileUploadActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/actions/playerDataSchemaActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/components/nextStepIcons.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/constants/nextStepCopyConstants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/constants/stepConstants.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/constants/gameHomeConstants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/constants/nextStepsConstants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/helpers/fileUploadHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/helpers/prizeEnablementHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/helpers/progressionRoomHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/helpers/nextStepGameStateHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/helpers/nextStepHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/common/helpers/nextStepUrlHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/actions/countActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/actions/uploadActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/actions/fetchActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/actions/updateActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/helper.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/modules/GameBuildsTable/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameBuild/subcomponents/errorComponents.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/common/constants/validationConstants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/common/constants/index.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/constants/condition.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/constants/menuItems.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/constants/localeMapping.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/gameBuildsHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/conditionHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/isLoadedHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/editedHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/developerKeyHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionExtractHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionFormData.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionImageHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionLocaleHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionLocaleConditionHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/common/helpers/roomVersionBinaryMappingHelpers.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/modules/Accordion/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/modules/EntryPoint/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/modules/RoomVersionMapping/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/EntryPoints/reducer.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/SeasonsTab/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/SeasonsTab/subcomponents/SeasonsList/subcomponents/DialogTitleWithCloseButton.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/SeasonsTab/subcomponents/ImageCard.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/SeasonsTab/subcomponents/VideoModal.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/DeepLinking/actions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/GameInfo/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/PushNotifications/actions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/SingleSignOn/actions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/Theme/utils.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/Theme/action.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/Tournament/new-actions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/Tournament/utils/utils.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Optimize/modules/VirtualCurrency/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/actions/gamePerformanceStatusActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/actions/prizeEnablementRequestActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/actions/accelerateApplicationActions.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/constants/gamePerformanceStatus.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/constants.ts","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/helpers.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/subcomponents/PathIcon.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/subcomponents/DesktopView.tsx","webpack:///../frontend/modules/GameManagement/modules/GameHome/modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/subcomponents/MobileView.tsx","webpack:///../frontend/modules/GameManagement/modules/Integration/modules/SetupSDK/actions.ts","webpack:///../frontend/modules/IntegrationVerifyConfig/utils.js","webpack:///../frontend/modules/IntegrationVerifyConfig/action.js","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/actions.ts","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/constants.ts","webpack:///../frontend/modules/LearningCenter/modules/WhatsNew/subcomponents/learningCenterIcons.tsx","webpack:///../frontend/modules/LearningCenter/modules/WhatsNew/subcomponents/ProfileWidget.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/WizardView/subcomponents/HexagonSvg.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/WizardView/subcomponents/SidebarTooltip.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/WizardView/subcomponents/SidebarLink.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/WizardView/subcomponents/WizardSidebar.tsx","webpack:///../frontend/modules/ContentManagementSystem/modules/WizardView/WizardView.tsx","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/InteractiveCard.tsx","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/LinkCard.tsx","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/helpers.tsx","webpack:///../frontend/modules/LearningCenter/modules/ManagedLearningCenter/queries.ts","webpack:///../frontend/modules/ModalManagement/constants.ts","webpack:///../frontend/modules/NoAccessPage/index.ts","webpack:///../frontend/modules/NotFoundPage/index.ts","webpack:///../frontend/modules/Notifications/actions.ts","webpack:///../frontend/modules/SignUpFlow/modules/SignUp/index.ts","webpack:///../frontend/modules/SignUpFlow/subcomponents/constants.ts","webpack:///../frontend/modules/SignUpFlow/subcomponents/CardContainer.tsx","webpack:///../frontend/modules/SignUpFlow/subcomponents/ForgotPassword.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/SurveyContext.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/actions.ts","webpack:///../frontend/modules/Survey/SurveyContainer/constants.ts","webpack:///../frontend/modules/Survey/SurveyContainer/NumericSelector.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/SurveyTextInput.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/helpers.tsx","webpack:///../frontend/modules/Survey/SurveyContainer/queries.ts","webpack:///../frontend/modules/Survey/actions.ts","webpack:///../frontend/modules/Survey/utils.ts","webpack:///../frontend/portal-common-library/atoms/AtomButton/index.tsx","webpack:///../frontend/portal-common-library/atoms/AtomLink/index.tsx","webpack:///../frontend/portal-common-library/atoms/AtomTextField/index.tsx","webpack:///../frontend/portal-common-library/constants/table.ts","webpack:///../frontend/imageAssets/Dashboard/defaultProfileIcon.svg","webpack:///../frontend/imageAssets/Dashboard/document.svg","webpack:///../frontend/imageAssets/Dashboard/downloadFile.svg","webpack:///../frontend/imageAssets/Overview/PrizeEnablementProgram/error.svg","webpack:///../frontend/imageAssets/Overview/appStoresIcon.svg","webpack:///../frontend/imageAssets/Overview/applePayIcon.svg","webpack:///../frontend/imageAssets/Overview/deepLinkingIcon.svg","webpack:///../frontend/imageAssets/Overview/error.svg","webpack:///../frontend/imageAssets/Overview/expertMoneyGradient.svg","webpack:///../frontend/imageAssets/Overview/fairPlayIcon.svg","webpack:///../frontend/imageAssets/Overview/fixItIcon.svg","webpack:///../frontend/imageAssets/Overview/gameBuildIcon.svg","webpack:///../frontend/imageAssets/Overview/giftColorIcon.svg","webpack:///../frontend/imageAssets/Overview/giftShadedIcon.svg","webpack:///../frontend/imageAssets/Overview/hundredDAU.svg","webpack:///../frontend/imageAssets/Overview/inAppPurchaseIcon.svg","webpack:///../frontend/imageAssets/Overview/inGameItems.svg","webpack:///../frontend/imageAssets/Overview/playerData.svg","webpack:///../frontend/imageAssets/Overview/prizeEnablementIcon.svg","webpack:///../frontend/imageAssets/Overview/pushNotificationIcon.svg","webpack:///../frontend/imageAssets/Overview/ssoIcon.svg","webpack:///../frontend/imageAssets/Overview/themeIcon.svg","webpack:///../frontend/imageAssets/Overview/tournamentIcon.svg","webpack:///../frontend/imageAssets/Overview/uploadSdkIcon.svg","webpack:///../frontend/imageAssets/androidLogo.png","webpack:///../frontend/imageAssets/checkGrayIconWhiteFill.svg","webpack:///../frontend/imageAssets/checkGreenIcon.svg","webpack:///../frontend/imageAssets/checkGreenIconWhiteFill.svg","webpack:///../frontend/imageAssets/eyeClosed.svg","webpack:///../frontend/imageAssets/eyeOpened.svg","webpack:///../frontend/imageAssets/greenCheckMark.svg","webpack:///../frontend/imageAssets/info.svg","webpack:///../frontend/imageAssets/iosLogo.png","webpack:///../frontend/imageAssets/kabobMenu.svg","webpack:///../frontend/imageAssets/leftArrow.svg","webpack:///../frontend/imageAssets/nfl/NFL_DC_Logo.svg","webpack:///../frontend/imageAssets/redXCircle.svg","webpack:///../frontend/imageAssets/ufc/UFC_logo_white.svg","webpack:///../frontend/imageAssets/ufc/UFC_red_circle_logo.png","webpack:///../frontend/imageAssets/unityLogo.png","webpack:///../frontend/imageAssets/warningIcon.svg","webpack:///../frontend/core/variables.scss?db3e","webpack:///../frontend/portal-common-library/styles/core/variables.scss?913d","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/get mini-css chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = (chunkId, fullhref, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"143\":1,\"154\":1,\"304\":1,\"376\":1,\"393\":1,\"447\":1,\"477\":1,\"687\":1,\"782\":1,\"1002\":1,\"1044\":1,\"1142\":1,\"1346\":1,\"1409\":1,\"1552\":1,\"1724\":1,\"1809\":1,\"1850\":1,\"1865\":1,\"2018\":1,\"2030\":1,\"2081\":1,\"2182\":1,\"2190\":1,\"2397\":1,\"2576\":1,\"2579\":1,\"2819\":1,\"2830\":1,\"2978\":1,\"2979\":1,\"3122\":1,\"3494\":1,\"3532\":1,\"3662\":1,\"3891\":1,\"3943\":1,\"4091\":1,\"4225\":1,\"4406\":1,\"4552\":1,\"4628\":1,\"4815\":1,\"4861\":1,\"5144\":1,\"5271\":1,\"5300\":1,\"5394\":1,\"5494\":1,\"5499\":1,\"5595\":1,\"5731\":1,\"5740\":1,\"5816\":1,\"6089\":1,\"6281\":1,\"6442\":1,\"6470\":1,\"6707\":1,\"6763\":1,\"6878\":1,\"6907\":1,\"6920\":1,\"6956\":1,\"6974\":1,\"7190\":1,\"7263\":1,\"7294\":1,\"7463\":1,\"7473\":1,\"7578\":1,\"7592\":1,\"7662\":1,\"7683\":1,\"7898\":1,\"8006\":1,\"8030\":1,\"8033\":1,\"8160\":1,\"8249\":1,\"8358\":1,\"8364\":1,\"8477\":1,\"8822\":1,\"9006\":1,\"9015\":1,\"9068\":1,\"9223\":1,\"9324\":1,\"9336\":1,\"9343\":1,\"9358\":1,\"9400\":1,\"9463\":1,\"9511\":1,\"9647\":1,\"9662\":1,\"9679\":1,\"9733\":1,\"9796\":1,\"9847\":1,\"9903\":1,\"9938\":1,\"9949\":1,\"9966\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\n\nimport { IGameChallenge, IGameChallengeParams } from '@app/common/interfaces/gameChallenge';\n\nexport const fetchGameChallenge = createAsyncThunk(\n 'gameChallenge/fetch',\n async (params: IGameChallengeParams) => {\n const response: AxiosResponse = await axios\n .get(`/api/v1/game_challenge/${params.challengeName}`)\n .then(camelize);\n\n return response.data;\n }\n);\n\nexport const setRegistrationStatus = createAsyncThunk(\n 'gameChallenge/register',\n async (params: IGameChallengeParams) => {\n const response: AxiosResponse = await axios\n .post(`/api/v1/game_challenge/${params.challengeName}`, { registered: params.registered })\n .then(camelize);\n\n return response.data;\n }\n);\n\nexport const updateRegistrationStatus = createAsyncThunk(\n 'gameChallenge/register',\n async (params: IGameChallengeParams) => {\n const response: AxiosResponse = await axios\n .patch(`/api/v1/game_challenge/${params.challengeName}`, { registered: params.registered })\n .then(camelize);\n\n return response.data;\n }\n);\n\nexport const updateNudgeStatus = createAsyncThunk(\n 'gameChallenge/nudge',\n async (params: IGameChallengeParams) => {\n const response: AxiosResponse = await axios\n .patch(`/api/v1/game_challenge/${params.challengeName}`, {\n nudgeDismissed: params.nudgeDismissed\n })\n .then(camelize);\n\n return response.data;\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\nimport { serialize } from 'object-to-formdata';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport {\n TGameChallengeProposalFormPartialParams,\n TGameChallengeProposalResponse,\n TImageField,\n TGameChallengeProposalImages,\n TGameChallengeProposalUploadedImages,\n IUploadedImage,\n} from '@app/modules/NflChallenge/ProposalPage/interfaces';\n\nexport const fetchGameChallengeProposal = createAsyncThunk(\n 'gameChallengeProposal/fetch',\n async ({ challengeName }: { challengeName: string }) => {\n const response: AxiosResponse = await axios\n .get(`/api/v1/game_challenge_proposal/${challengeName}`)\n .then(camelize);\n\n return response.data;\n }\n);\n\nexport const saveGameChallengeProposal = createAsyncThunk(\n 'gameChallengeProposal/save',\n async (params: TGameChallengeProposalFormPartialParams) => {\n const { challengeName, ...payload } = params;\n const response: AxiosResponse = await axios\n .post(\n `/api/v1/game_challenge_proposal/${challengeName}`,\n snakeCaseConverter({\n gameChallengeProposal: { ...payload },\n })\n )\n .then(camelize);\n\n return response.data;\n }\n);\n\nexport const updateGameChallengeProposal = createAsyncThunk(\n 'gameChallengeProposal/update',\n async (params: TGameChallengeProposalFormPartialParams) => {\n const { challengeName, ...payload } = params;\n const response: AxiosResponse = await axios\n .patch(\n `/api/v1/game_challenge_proposal/${challengeName}`,\n snakeCaseConverter({\n gameChallengeProposal: { ...payload },\n })\n )\n .then(camelize);\n\n return response.data;\n }\n);\n\ninterface IImageSaveResultPartial extends Partial {\n updatedAt: string;\n}\n\ninterface IImageSaveResultComplete extends TGameChallengeProposalUploadedImages {\n updatedAt: string;\n}\n\nexport const uploadGameChallengeImages = createAsyncThunk(\n 'gameChallengeProposal/uploadImages',\n async ({\n images,\n challengeName,\n }: {\n images: TGameChallengeProposalImages;\n challengeName: string;\n }) => {\n return Promise.all(\n // send separate update request for every image field\n (Object.entries(images) as [TImageField, (File | IUploadedImage)[]][]).map(\n ([key, value]): Promise => {\n // send filename of existing files to server to preserve them\n const files = value.map((file: File | IUploadedImage): string | File =>\n file.hasOwnProperty('filename') ? (file as IUploadedImage).filename : (file as File)\n );\n\n return axios\n .patch(\n `/api/v1/game_challenge_proposal/${challengeName}`,\n serialize(\n snakeCaseConverter({\n gameChallengeProposal: { [key]: files },\n }),\n { allowEmptyArrays: true }\n )\n )\n .then(camelize)\n .then(({ data }) => ({\n [key]: data[key],\n updatedAt: data.updatedAt,\n }));\n }\n )\n ).then(\n // glue result image fields back together\n (updatedImages: IImageSaveResultPartial[]): IImageSaveResultComplete =>\n updatedImages.reduce(\n (\n acc: IImageSaveResultComplete,\n curr: IImageSaveResultPartial\n ): IImageSaveResultComplete => ({\n ...acc,\n ...curr,\n updatedAt:\n // include latest updatedAt\n acc.updatedAt && new Date(acc.updatedAt) > new Date(curr.updatedAt)\n ? acc.updatedAt\n : curr.updatedAt,\n }),\n {} as IImageSaveResultComplete\n )\n );\n }\n);\n","// redux snackbar is deprecated, use @skillzet/components/SnackbarContainer\nimport { IActionOptionalData } from '@app/common/interfaces';\n\nexport enum SNACK_BAR {\n OPEN_SNACKBAR = 'snackBar/OPEN_SNACKBAR',\n CLOSE_SNACKBAR = 'snackBar/CLOSE_SNACKBAR',\n}\n\n// TODO FIX [WS-16404] this issue. Keeping openSnackbar in this causes caused the following error\n// moving the function into common/actions/index.ts somehow resolves the issue\n// index.ts:38 Uncaught TypeError: Cannot read property 'openSnackbar' of undefined\n// at Module.openSnackbar (index.ts:38)\n// at eval (index.ts:331)\n// at Module.../frontend/common/components/AnalyticsSummaryCard/index.ts (main-2e9aec0377ed9c4a9ea6.js:459)\n// at __webpack_require__ (main-2e9aec0377ed9c4a9ea6.js:4346)\n// at eval (index.ts:40)\n// at Module.../frontend/common/components/index.ts (main-2e9aec0377ed9c4a9ea6.js:778)\n// at __webpack_require__ (main-2e9aec0377ed9c4a9ea6.js:4346)\n// at eval (chartHelper.tsx:12)\n// at Module.../frontend/common/helpers/chartHelper.tsx (main-2e9aec0377ed9c4a9ea6.js:998)\n// at __webpack_require__ (main-2e9aec0377ed9c4a9ea6.js:4346)\n\n// export function openSnackbar(options: ISnackbarData): IAction {\n// return {\n// type: SNACK_BAR.OPEN_SNACKBAR,\n// data: options,\n// };\n// }\n\nexport function closeSnackbar(): IActionOptionalData {\n return {\n type: SNACK_BAR.CLOSE_SNACKBAR,\n };\n}\n","import { IAction } from '@app/common/interfaces';\n\nexport enum GAMES_COUNT {\n RECEIVE_COUNT = 'gamesCount/RECEIVE_COUNT'\n}\n\nexport function clearGamesTotalCount(): IAction {\n return { type: GAMES_COUNT.RECEIVE_COUNT, data: 0 };\n}\n\nexport function receiveGamesTotalCount(data: number): IAction {\n return {\n type: GAMES_COUNT.RECEIVE_COUNT,\n data\n };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\nimport { ThunkAction } from 'redux-thunk';\n\nimport { generateModalGameFormData, snakeCaseConverter } from '@app/common/helpers';\nimport {\n IAction,\n IActionNoData,\n IErrors,\n IGameConfig,\n IGameEnabled,\n IGameGenreTagline,\n IGameIndexParams,\n IGameInfo,\n IGameInfoModalState,\n IGameStoreUrls,\n IPublicGame,\n TErrorGeneral,\n TGameIndexResponses,\n TGamesPerPage,\n TReceiveAction,\n} from '@app/common/interfaces';\nimport axios, { AxiosError, AxiosResponse } from '@app/common/setup/axiosWithHeader';\nimport { IRootState } from '@app/core/rootReducer';\nimport { ISsoData, IGameDeepLinkUpdate } from '@app/modules/GameManagement/common/interfaces';\n\nimport { GAMES_PAGE_PAGE } from '../constants';\nimport { clearGamesTotalCount, receiveGamesTotalCount } from './countActions';\n\n// TODO[WS-9306]: Refactor the RECEIVE_GAMES section in the GAME enum\nexport enum GAME {\n GAME_INFO = 'game/GAME_INFO',\n APPLE_PAY_UPDATE = 'game/APPLE_PAY_UPDATE',\n RECEIVE_GAME = 'game/RECEIVE_GAME',\n CLEAR_GAME = 'game/CLEAR_GAME',\n}\n\nexport enum GAMES {\n RECEIVE_TOTAL_COUNT = 'games/RECEIVE_TOTAL_COUNT',\n RECEIVE_GAMES = 'games/RECEIVE_GAMES',\n CLEAR_GAMES = 'games/CLEAR_GAMES',\n RECEIVE_UPDATED_GAME = 'games/RECEIVE_UPDATED_GAME',\n}\n\nexport type TGameUpdate =\n | IGameInfoModalState\n | IGameConfig\n | ISsoData\n | IGameDeepLinkUpdate\n | IGameGenreTagline\n | IGameStoreUrls\n | IGameEnabled;\n\nexport const getGameInfo = (data: IGameInfo): IAction => {\n return {\n type: GAME.GAME_INFO,\n data,\n };\n};\n\nexport const clearGames = (): IActionNoData => {\n return { type: GAMES.CLEAR_GAMES };\n};\n\nexport const clearGameInfo = (): IActionNoData => {\n return { type: GAME.CLEAR_GAME };\n};\n\nexport const receiveGames = (data: TGamesPerPage): IAction => {\n return {\n type: GAMES.RECEIVE_GAMES,\n data,\n };\n};\n\nexport const receiveUpdatedGame: TReceiveAction = (\n data: TGamesPerPage\n): IAction => {\n return {\n type: GAMES.RECEIVE_UPDATED_GAME,\n data,\n };\n};\n\ntype TNewGame = (data: IGameInfo) => IAction;\n\nexport const receiveModalGameInfo: TNewGame = (data: IGameInfo): IAction => {\n return {\n type: GAME.RECEIVE_GAME,\n data,\n };\n};\n\nexport const fetchGamesApiCall = (\n indexParams: IGameIndexParams\n): Promise> => {\n let urlParams = new URLSearchParams(snakeCaseConverter(indexParams)).toString();\n\n return axios.get(`/api_internal/v1/games?${urlParams}`);\n};\n\nexport const fetchPublicGameApiCall = (\n gameProductionId: number\n): Promise> => {\n return axios.get(`/public_games/${gameProductionId}`);\n};\n\nexport const findGame = (\n id: number\n): ThunkAction, IRootState, unknown, IAction> => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios\n .get(`/games/${id}.json?request_source=devconsole`)\n .then((response: AxiosResponse) => {\n dispatch(getGameInfo(camelize(response.data)));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n window.location.assign('/dashboard'); // ie do not have permissions\n\n return error.response ? error.response.data : error;\n });\n };\n};\n\nexport const updateGame = (\n game: TGameUpdate\n): ThunkAction, IRootState, unknown, IAction> => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n let data: FormData | IGameConfig;\n\n if (game.hasOwnProperty('platform')) {\n data = generateModalGameFormData(game as IGameInfoModalState);\n } else {\n data = snakeCaseConverter({ game }) as IGameConfig;\n }\n\n if (game.id) {\n return axios({ method: 'patch', url: `/api_internal/v1/games/${game.id}`, data })\n .then((response: AxiosResponse) => {\n dispatch(receiveModalGameInfo(camelize(response.data)));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n }\n };\n};\n\nexport const updateGameEnabled = (\n game: IGameEnabled,\n pageNumber: number = 0\n): ThunkAction, IRootState, unknown, IAction> => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios({\n method: 'patch',\n url: `/api_internal/v1/games/${game.id}`,\n data: { ...snakeCaseConverter({ game: { ...game, id: undefined } }) },\n })\n .then(() => {\n dispatch(receiveUpdatedGame({ [pageNumber]: [game] } as TGamesPerPage));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n};\n\nexport const fetchGameByProductionId = (\n productionId: number\n): ThunkAction, IRootState, unknown, IAction> => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios\n .get(`/api_internal/v1/games/${productionId}`)\n .then((response: AxiosResponse) => {\n dispatch(getGameInfo(response.data));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n};\n\nexport const fetchGames = (\n indexParams: IGameIndexParams,\n page: number = 0\n): ThunkAction<\n Promise,\n IRootState,\n unknown,\n IAction | IAction | IActionNoData\n> => {\n indexParams.limit = GAMES_PAGE_PAGE;\n indexParams.offset = page * indexParams.limit;\n\n return (\n dispatch: Dispatch | IAction | IActionNoData>\n ): Promise | TErrorGeneral => {\n return fetchGamesApiCall(indexParams)\n .then(camelize)\n .then((response: AxiosResponse) => {\n let resp: TGameIndexResponses = response.data;\n let responseInPage: TGamesPerPage = { [page]: resp.items };\n\n if (page === 0) {\n dispatch(clearGames());\n dispatch(clearGamesTotalCount());\n }\n dispatch(receiveGames(responseInPage));\n dispatch(receiveGamesTotalCount(resp.totalCount));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n};\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\n\nimport { IAction } from '@app/common/interfaces';\n\nexport interface IDataProps {\n count?: number | null;\n id?: number;\n admin?: boolean;\n name: string;\n website?: string;\n phoneNumber?: string;\n}\n\ntype TReceivePublisherInfo = (data: IDataProps) => IAction;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TFindPublisher = () => Promise;\n\nexport enum PUBLISHER {\n INFO = 'publisher/INFO'\n}\n\nexport const receivePublisherInfo: TReceivePublisherInfo = (\n data: IDataProps\n): IAction => {\n return {\n type: PUBLISHER.INFO,\n data\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const findPublisher: TFindPublisher = (): any => (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dispatch: React.Dispatch\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return axios.get('/publisher_info.json').then((response: AxiosResponse) => {\n dispatch(receivePublisherInfo(camelize(response.data)));\n\n return response;\n });\n};\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { TDispatch, TThunkAction, IUserInfo, TErrorGeneral } from '@app/common/interfaces';\nimport axios from \"axios\";\n\nexport enum USER {\n INFO = 'user/INFO',\n UPDATE = 'user/UPDATE',\n}\n\ninterface IUserInfoData {\n type: USER;\n data: Record;\n}\n\nexport const getUserInfo = (data: Record): IUserInfoData => {\n return {\n type: USER.INFO,\n data,\n } as IUserInfoData;\n};\n\nexport const findUser: TThunkAction =\n (): TDispatch =>\n (dispatch: React.Dispatch): Promise | TErrorGeneral => {\n return $.ajax({\n url: `/user_info.json`,\n method: 'GET',\n }).then((response: IUserInfo) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(getUserInfo(camelize(response)));\n\n return response;\n });\n };\n\nexport const getUser = async (): Promise => {\n try {\n return (await axios.get('/user_info.json'));\n } catch (err) {\n return Promise.reject(err);\n }\n};\n","// TODO [WS-21024] REFACTOR TO USE GENERIC FUNCTION TO OPEN AND CLOSE MODAL\nimport { IAction, IActionNoData } from '@app/common/interfaces';\n\nexport enum MODAL_MANAGEMENT {\n OPEN_PROFILE_MODAL = 'modalManagement/OPEN_PROFILE_MODAL',\n CLOSE_PROFILE_MODAL = 'modalManagement/CLOSE_PROFILE_MODAL',\n OPEN_GAME_INFO_MODAL = 'modalManagement/OPEN_GAME_INFO_MODAL',\n CLOSE_GAME_INFO_MODAL = 'modalManagement/CLOSE_GAME_INFO_MODAL',\n OPEN_ARCHIVE_MODAL = 'modalManagement/OPEN_ARCHIVE_MODAL',\n CLOSE_ARCHIVE_MODAL = 'modalManagement/CLOSE_ARCHIVE_MODAL',\n OPEN_FAIRNESS_MODAL = 'modalManagement/OPEN_FAIRNESS_MODAL',\n CLOSE_FAIRNESS_MODAL = 'modalManagement/CLOSE_FAIRNESS_MODAL',\n OPEN_PRIZE_ENABLEMENT_MODAL = 'modalManagement/OPEN_PRIZE_ENABLEMENT_MODAL',\n CLOSE_PRIZE_ENABLEMENT_MODAL = 'modalManagement/CLOSE_PRIZE_ENABLEMENT_MODAL',\n OPEN_ACCELERATE_MODAL = 'modalManagement/OPEN_ACCELERATE_MODAL',\n CLOSE_ACCELERATE_MODAL = 'modalManagement/CLOSE_ACCELERATE_MODAL',\n OPEN_FEEDBACK_MODAL = 'modalManagement/OPEN_FEEDBACK_MODAL',\n CLOSE_FEEDBACK_MODAL = 'modalManagement/CLOSE_FEEDBACK_MODAL',\n OPEN_STUDIO_MODAL = 'modalManagement/OPEN_STUDIO_MODAL',\n CLOSE_STUDIO_MODAL = 'modalManagement/CLOSE_STUDIO_MODAL',\n OPEN_USER_MODAL = 'modalManagement/OPEN_USER_MODAL',\n CLOSE_USER_MODAL = 'modalManagement/CLOSE_USER_MODAL',\n OPEN_REMOVE_USER_MODAL = 'modalManagement/OPEN_REMOVE_USER_MODAL',\n CLOSE_REMOVE_USER_MODAL = 'modalManagement/CLOSE_REMOVE_USER_MODAL',\n OPEN_DEACTIVATE_SKILLZ_SUPPORT_MODAL = 'modalManagement/OPEN_DEACTIVATE_SKILLZ_SUPPORT_MODAL',\n CLOSE_DEACTIVATE_SKILLZ_SUPPORT_MODAL = 'modalManagement/CLOSE_DEACTIVATE_SKILLZ_SUPPORT_MODAL',\n OPEN_INVITE_USER_MODAL = 'modalManagement/OPEN_INVITE_USER_MODAL',\n CLOSE_INVITE_USER_MODAL = 'modalManagement/CLOSE_INVITE_USER_MODAL',\n OPEN_TRANSFER_OWNERSHIP_MODAL = 'modalManagement/OPEN_TRANSFER_OWNERSHIP_MODAL',\n CLOSE_TRANSFER_OWNERSHIP_MODAL = 'modalManagement/CLOSE_TRANSFER_OWNERSHIP_MODAL',\n OPEN_EDIT_USER_MODAL = 'modalManagement/OPEN_EDIT_USER_MODAL',\n CLOSE_EDIT_USER_MODAL = 'modalManagement/CLOSE_EDIT_USER_MODAL',\n OPEN_DISABLE_THIRD_PARTY_ADS_MODAL = 'modalManagement/OPEN_DISABLE_THIRD_PARTY_ADS_MODAL',\n CLOSE_DISABLE_THIRD_PARTY_ADS_MODAL = 'modalManagement/CLOSE_DISABLE_THIRD_PARTY_ADS_MODAL',\n OPEN_PROGRESSION_DELETE_ITEM_MODAL = 'modalManagement/OPEN_PROGRESSION_DELETE_ITEM_MODAL',\n CLOSE_PROGRESSION_DELETE_ITEM_MODAL = 'modalManagement/CLOSE_PROGRESSION_DELETE_ITEM_MODAL',\n OPEN_PLAYER_DATA_MODAL = 'modalManagement/OPEN_PLAYER_DATA_MODAL',\n CLOSE_PLAYER_DATA_MODAL = 'modalManagement/CLOSE_PLAYER_DATA_MODAL',\n OPEN_PROGRESSION_PUBLISH_MODAL = 'modalManagement/OPEN_PROGRESSION_PUBLISH_MODAL',\n CLOSE_PROGRESSION_PUBLISH_MODAL = 'modalManagement/CLOSE_PROGRESSION_PUBLISH_MODAL',\n OPEN_PROGRESSION_CHANGELOG_MODAL = 'modalManagement/OPEN_PROGRESSION_CHANGELOG_MODAL',\n CLOSE_PROGRESSION_CHANGELOG_MODAL = 'modalManagement/CLOSE_PROGRESSION_CHANGELOG_MODAL',\n OPEN_PROGRESSION_PLAYER_LOOKUP_MODAL = 'modalManagement/OPEN_PROGRESSION_PLAYER_LOOKUP_MODAL',\n CLOSE_PROGRESSION_PLAYER_LOOKUP_MODAL = 'modalManagement/CLOSE_PROGRESSION_PLAYER_LOOKUP_MODAL',\n OPEN_IN_GAME_ITEMS_MODAL = 'modalManagement/OPEN_IN_GAME_ITEMS_MODAL',\n CLOSE_IN_GAME_ITEMS_MODAL = 'modalManagement/CLOSE_IN_GAME_ITEMS_MODAL',\n OPEN_PROGRESSION_ROOM_PUBLISH_AND_ASSIGN_MODAL = 'modalManagement/OPEN_PROGRESSION_ROOM_PUBLISH_AND_ASSIGN_MODAL',\n CLOSE_PROGRESSION_ROOM_PUBLISH_AND_ASSIGN_MODAL = 'modalManagement/CLOSE_PROGRESSION_ROOM_PUBLISH_AND_ASSIGN_MODAL',\n OPEN_PROGRESSION_ROOM_SAVE_MODAL = 'modalManagement/OPEN_PROGRESSION_ROOM_SAVE_MODAL',\n CLOSE_PROGRESSION_ROOM_SAVE_MODAL = 'modalManagement/CLOSE_PROGRESSION_ROOM_SAVE_MODAL',\n OPEN_PROGRESSION_ROOM_CREATE_MODAL = 'modalManagement/OPEN_PROGRESSION_ROOM_CREATE_MODAL',\n CLOSE_PROGRESSION_ROOM_CREATE_MODAL = 'modalManagement/CLOSE_PROGRESSION_ROOM_CREATE_MODAL',\n OPEN_PROGRESSION_ROOM_DELETE_MODAL = 'modalManagement/OPEN_PROGRESSION_ROOM_DELETE_MODAL',\n CLOSE_PROGRESSION_ROOM_DELETE_MODAL = 'modalManagement/CLOSE_PROGRESSION_ROOM_DELETE_MODAL',\n OPEN_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL = 'modalManagement/OPEN_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL',\n CLOSE_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL = 'modalManagement/CLOSE_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL',\n OPEN_MODAL = 'modalManagement/OPEN_MODAL',\n CLOSE_MODAL = 'modalManagement/CLOSE_MODAL',\n}\n\nexport type TModalAction = IAction<{ [modalOpenAttribute: string]: boolean }>;\n\nexport const openProfileModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROFILE_MODAL,\n };\n};\n\nexport const closeProfileModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROFILE_MODAL,\n };\n};\n\nexport const openGameInfoModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_GAME_INFO_MODAL,\n };\n};\n\nexport const closeGameInfoModal = (): IActionNoData => {\n return { type: MODAL_MANAGEMENT.CLOSE_GAME_INFO_MODAL };\n};\n\nexport const openArchiveModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_ARCHIVE_MODAL,\n };\n};\n\nexport const closeArchiveModal = (): IActionNoData => {\n return { type: MODAL_MANAGEMENT.CLOSE_ARCHIVE_MODAL };\n};\n\nexport const openFairnessModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_FAIRNESS_MODAL,\n };\n};\n\nexport const closeFairnessModal = (): IActionNoData => {\n return { type: MODAL_MANAGEMENT.CLOSE_FAIRNESS_MODAL };\n};\n\nexport const openPrizeEnablementModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PRIZE_ENABLEMENT_MODAL,\n };\n};\n\nexport const closePrizeEnablementModal = (): IActionNoData => {\n return { type: MODAL_MANAGEMENT.CLOSE_PRIZE_ENABLEMENT_MODAL };\n};\n\nexport const openAccelerateModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_ACCELERATE_MODAL,\n };\n};\n\nexport const closeAccelerateModal = (): IActionNoData => {\n return { type: MODAL_MANAGEMENT.CLOSE_ACCELERATE_MODAL };\n};\n\nexport const openFeedbackModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_FEEDBACK_MODAL,\n };\n};\n\nexport const closeFeedbackModal = (): IActionNoData => {\n return { type: MODAL_MANAGEMENT.CLOSE_FEEDBACK_MODAL };\n};\n\nexport const openStudioModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_STUDIO_MODAL,\n };\n};\n\nexport const closeStudioModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_STUDIO_MODAL,\n };\n};\n\nexport const openUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_USER_MODAL,\n };\n};\n\nexport const closeUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_USER_MODAL,\n };\n};\n\nexport const openRemoveUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_REMOVE_USER_MODAL,\n };\n};\n\nexport const closeRemoveUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_REMOVE_USER_MODAL,\n };\n};\n\nexport const openDeactivateSkillzSupportModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_DEACTIVATE_SKILLZ_SUPPORT_MODAL,\n };\n};\n\nexport const closeDeactivateSkillzSupportModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_DEACTIVATE_SKILLZ_SUPPORT_MODAL,\n };\n};\n\nexport const openInviteUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_INVITE_USER_MODAL,\n };\n};\n\nexport const closeInviteUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_INVITE_USER_MODAL,\n };\n};\n\nexport const openTransferOwnershipModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_TRANSFER_OWNERSHIP_MODAL,\n };\n};\n\nexport const closeTransferOwnershipModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_TRANSFER_OWNERSHIP_MODAL,\n };\n};\n\nexport const openEditUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_EDIT_USER_MODAL,\n };\n};\n\nexport const closeEditUserModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_EDIT_USER_MODAL,\n };\n};\n\nexport const openProgressionDeleteItemModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_DELETE_ITEM_MODAL,\n };\n};\n\nexport const closeProgressionDeleteItemModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_DELETE_ITEM_MODAL,\n };\n};\n\nexport const openPlayerDataModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PLAYER_DATA_MODAL,\n };\n};\n\nexport const closePlayerDataModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PLAYER_DATA_MODAL,\n };\n};\n\nexport const openProgressionPublishModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_PUBLISH_MODAL,\n };\n};\n\nexport const closeProgressionPublishModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_PUBLISH_MODAL,\n };\n};\n\nexport const openProgressionChangelogModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_CHANGELOG_MODAL,\n };\n};\n\nexport const closeProgressionChangelogModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_CHANGELOG_MODAL,\n };\n};\nexport const openProgressionPlayerLookupModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_PLAYER_LOOKUP_MODAL,\n };\n};\n\nexport const closeProgressionPlayerLookupModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_PLAYER_LOOKUP_MODAL,\n };\n};\n\nexport const openInGameItemsModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_IN_GAME_ITEMS_MODAL,\n };\n};\n\nexport const closeInGameItemsModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_IN_GAME_ITEMS_MODAL,\n };\n};\n\nexport const openEntryPointAssignAndSyncModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL,\n };\n};\n\nexport const closeEntryPointAssignAndSyncModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL,\n };\n};\n\nexport const openProgressionRoomSaveModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_ROOM_SAVE_MODAL,\n };\n};\n\nexport const closeProgressionRoomSaveModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_ROOM_SAVE_MODAL,\n };\n};\n\nexport const openProgressionRoomCreateModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_ROOM_CREATE_MODAL,\n };\n};\n\nexport const closeProgressionRoomCreateModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_ROOM_CREATE_MODAL,\n };\n};\n\nexport const openProgressionRoomDeleteModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.OPEN_PROGRESSION_ROOM_DELETE_MODAL,\n };\n};\n\nexport const closeProgressionRoomDeleteModal = (): IActionNoData => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_PROGRESSION_ROOM_DELETE_MODAL,\n };\n};\n\nexport const openModal = (modalOpenAttribute: string): TModalAction => {\n return {\n type: MODAL_MANAGEMENT.OPEN_MODAL,\n data: { [modalOpenAttribute]: true },\n };\n};\n\nexport const closeModal = (modalOpenAttribute: string): TModalAction => {\n return {\n type: MODAL_MANAGEMENT.CLOSE_MODAL,\n data: { [modalOpenAttribute]: false },\n };\n};\n","import axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { IAction, IFeature, TDispatch, TThunkAction } from '@app/common/interfaces';\n\ninterface IFeatureProps {\n FLAGS: string;\n}\n\ntype TFetchFlags = (data: IFeature) => IAction;\n\nexport const FEATURE: IFeatureProps = {\n FLAGS: 'feature/FEATURE_FLAGS',\n};\n\nexport const fetchFeatureFlags: TFetchFlags = (data: IFeature): IAction => {\n return {\n type: FEATURE.FLAGS,\n data,\n };\n};\n\nexport const findFeatureFlags: TThunkAction = (): TDispatch => (\n dispatch: Dispatch>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any => {\n return axios\n .get(`/feature_toggles/fetch_feature_flags.json`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n window.appConfig.featureFlags = response.data;\n dispatch(fetchFeatureFlags(response.data));\n });\n};\n","import axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\nimport { Dispatch } from 'redux';\nimport { IAction, ISdkDownloads } from '@app/common/interfaces';\n\nexport enum SDK_DOWNLOADS {\n RECEIVE = 'sdkDownloads/RECEIVE'\n}\n\nexport function receiveSdkDownloads(data: ISdkDownloads): IAction {\n return {\n type: SDK_DOWNLOADS.RECEIVE,\n data\n };\n}\n\nexport function fetchSdkDownloads() {\n return async (dispatch: Dispatch>): Promise => {\n const response: AxiosResponse = await axios({\n url: `/downloads.json`,\n method: 'get'\n });\n\n dispatch(receiveSdkDownloads(response.data));\n };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport {\n IAction,\n IAnalyticsQuery,\n IDateRange,\n IAnalyticDataResponse,\n IAnalyticInfo,\n} from '@app/common/interfaces';\n\nexport enum ANALYTICS {\n RECEIVE_ADMIN_ACCESS = 'analytics/RECEIVE_ADMIN_ACCESS',\n RECEIVE_RAW_DATA = 'analytics/RECEIVE_RAW_DATA',\n RECEIVE_DATE_RANGE_LIMIT = 'analytics/RECEIVE_DATE_RANGE_LIMIT',\n}\n\nexport function receiveAnalyticsRawData(data: IAnalyticInfo[]): IAction {\n return {\n type: ANALYTICS.RECEIVE_RAW_DATA,\n data,\n };\n}\n\nexport function receiveDateRangeLimit(data: IDateRange): IAction> {\n return {\n type: ANALYTICS.RECEIVE_DATE_RANGE_LIMIT,\n data,\n };\n}\n\nexport function fetchAnalytics(analyticsQuery: IAnalyticsQuery) {\n return async (dispatch: Dispatch | IAction>): Promise => {\n const response: AxiosResponse = await axios.get(\n '/api/v1/developer_analytics',\n {\n params: snakeCaseConverter(analyticsQuery),\n }\n );\n\n const { data } = camelize(response.data);\n dispatch(receiveAnalyticsRawData(data));\n };\n}\n\nexport function fetchAnalyticsDateRangeLimit() {\n return async (dispatch: Dispatch>>): Promise => {\n const response = await axios.get(`/api/v1/developer_analytics/date_range_limit`);\n\n dispatch(receiveDateRangeLimit(camelize(response.data)));\n };\n}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { ICurrentUser, IErrors } from '@app/common/interfaces';\n\nexport const fetchCurrentUser = createAsyncThunk('currentUser/fetch', async () => {\n const response: AxiosResponse = await axios\n .get('/api_internal/v1/user')\n .then(camelize);\n\n return response.data;\n});\n\nexport const updateCurrentUser = createAsyncThunk(\n 'currentUser/update',\n (user: Partial) => {\n return axios\n .patch('/api_internal/v1/user', snakeCaseConverter({ user }))\n .then(camelize)\n .then((response: AxiosResponse) => {\n return response.data;\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\n\nimport { IErrors, IPublisher2, TPublisherUpdateParams } from '@app/common/interfaces';\n\nconst basePublisherUrl = '/api_internal/v1/publisher';\n\nconst preparePublisherData = (publisher: TPublisherUpdateParams): FormData => {\n let form = new FormData();\n\n if (!!publisher.logo) {\n form.append('publisher[logo]', publisher.logo);\n }\n\n // can not use !! syntax since field is boolean | undefined\n if (publisher.allowSkillzSupportAccess !== undefined) {\n form.append(\n 'publisher[allow_skillz_support_access]',\n publisher.allowSkillzSupportAccess ? 'true' : 'false'\n );\n }\n\n if (!!publisher.companySize) {\n form.append('publisher[company_size]', publisher.companySize);\n }\n\n if (!!publisher.logo) {\n form.append('publisher[logo]', publisher.logo);\n }\n\n if (!!publisher.name) {\n form.append('publisher[name]', publisher.name);\n }\n\n if (!!publisher.phoneNumber) {\n form.append('publisher[phone_number]', publisher.phoneNumber);\n }\n\n if (!!publisher.website) {\n form.append('publisher[website]', publisher.website);\n }\n\n return form;\n};\n\nexport const fetchPublisher = createAsyncThunk('publisher/fetch', async () => {\n const response: AxiosResponse = await axios.get(basePublisherUrl).then(camelize);\n\n return response.data;\n});\n\nexport const updatePublisher = createAsyncThunk(\n 'publisher/update',\n (publisher: TPublisherUpdateParams) => {\n return axios\n .patch(basePublisherUrl, preparePublisherData(publisher))\n .then(camelize)\n .then((response: AxiosResponse) => {\n return response.data;\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { AxiosError, AxiosResponse } from 'axios';\n\nimport { IErrors, IPermissions } from '@app/common/interfaces';\nimport axios from '@app/common/setup/axiosWithHeader';\n\nexport const fetchPermissions = createAsyncThunk('permissions/fetch', (params?: string) => {\n return axios\n .get(`/api_internal/v1/permissions${params ? `?${params}` : ''}`)\n .then((response: AxiosResponse) => {\n return response.data;\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n});\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { IRootState } from '../../core/rootReducer';\nimport { fetchGameAccessRequest, TGameAccess } from '../helpers';\n\nexport const fetchGameAccess = createAsyncThunk(\n 'gamesAccess/fetchGameAccess',\n (_, { getState }) => {\n const { user } = getState();\n\n if (!user?.id) {\n return;\n }\n\n return fetchGameAccessRequest(user.id.toString());\n }\n);\n","import { IAction } from 'portal-common-library/interfaces/redux';\nimport { ISnackbarData } from 'portal-common-library/interfaces/snackbar';\n\nimport { SNACK_BAR } from './snackbarActions';\n\nexport * from './gameActions';\nexport * from './gameChallengeActions';\nexport * from './gameChallengeProposalActions';\nexport * from './publisherActions';\nexport * from './userActions';\nexport * from './featureActions';\nexport * from './renderSwal';\nexport * from './snackbarActions';\nexport * from './modalManagementActions';\nexport * from './sdkDownloadActions';\nexport * from './analyticsActions';\nexport * from './countActions';\nexport * from './currentUser';\nexport * from './publisher';\nexport * from './permission';\nexport * from './gameAccessActions';\n\nexport function openSnackbar(options: ISnackbarData): IAction {\n return {\n type: SNACK_BAR.OPEN_SNACKBAR,\n data: options,\n };\n}\n","import * as React from 'react';\n\nimport Button from '@mui/material/Button';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { IStyles, TStyles } from '@app/common/interfaces';\nimport variables from '@app/core/variables.scss';\n\nimport './styles/atomButtonStyles.scss';\n\nexport interface IAtomButtonProps {\n buttonContent: string | JSX.Element;\n // matches our design guide for button\n buttonType: TButtonType;\n isErrorMode?: boolean;\n onClick: () => void;\n isDisabled?: boolean;\n size?: TButtonSize;\n id: string;\n // this is needed for the Mui withStyle classes to be added\n classes?: {\n [className: string]: string;\n };\n // className prop will not be wired-up for atomButton, add constructor to class if this prop needs to be added\n // className?: string\n}\n\nexport type TAtomButtonOptionalProps = 'isDisabled' | 'size' | 'isErrorMode';\n\nexport type TDefaultProps = Required>;\n\n// buttonType props matches our design guide\nexport type TButtonType = 'primary' | 'secondary' | 'tertiary';\ntype TButtonSize = 'small' | 'medium' | 'large';\n\n// mocks buttonColor and buttonVariant props for Material UI Button Props\ninterface IColorVariantProps {\n buttonColor: 'inherit' | 'primary' | 'secondary' | 'success' | 'error' | 'info' | 'warning';\n buttonVariant: 'text' | 'outlined' | 'contained';\n}\n\n// simplify logic for out dev to TButtonType\n// this is match of our buttonType to material UI button's prop of color and variant\n// primary => containedPrimary\n// in MaterialUIButton definition: buttonType='primary' && buttonVariant='contained'\n// secondary => outlinedPrimary\n// in MaterialUIButton definition: buttonType='primary' && buttonVariant='outlined'\n// tertiary => textPrimary\n// in MaterialUIButton definition: buttonType='primary' && buttonVariant='text'\n// if button is error mode, then buttonType='secondary' variant remains the same\nfunction determineColorVariantProps(buttonType: string, isErrorMode: boolean): IColorVariantProps {\n let exportProps: IColorVariantProps = {\n buttonColor: isErrorMode ? 'secondary' : 'primary',\n buttonVariant: 'contained',\n };\n\n switch (buttonType) {\n case 'primary':\n break;\n case 'secondary':\n exportProps.buttonVariant = 'outlined';\n break;\n case 'tertiary':\n exportProps.buttonVariant = 'text';\n break;\n default:\n break;\n }\n\n return exportProps;\n}\n\nconst styles: TStyles = (): IStyles => ({\n // basic style that is applied to all buttons\n root: {\n fontSize: '16px',\n lineHeight: '21px',\n fontFamily: 'Roboto',\n borderRadius: '4px',\n textTransform: 'none',\n flexShrink: '0',\n },\n sizeLarge: {\n fontWeight: '500',\n padding: '8px 24px',\n height: '40px',\n },\n // primary\n contained: {\n color: 'white',\n '&:disabled': {\n color: `${variables.colorGray200DisabledState}`,\n backgroundColor: `${variables.colorGray25ContentBackground}`,\n borderColor: `${variables.colorGray25ContentBackground}`,\n },\n },\n containedPrimary: {\n backgroundColor: `${variables.colorBrandBlue}`,\n '&:hover': {\n backgroundColor: `${variables.colorBlueHoverDark}`,\n },\n },\n containedSecondary: {\n backgroundColor: `${variables.colorRed}`,\n '&:hover': {\n backgroundColor: `${variables.colorRedHover}`,\n },\n },\n // secondary\n outlined: {\n backgroundColor: `${variables.colorWhite}`,\n '&:disabled': {\n color: `${variables.colorGray200DisabledState}`,\n borderColor: `${variables.colorGray100Borders}`,\n },\n },\n outlinedPrimary: {\n color: `${variables.colorBrandBlue}`,\n borderColor: `${variables.colorBrandBlue}`,\n '&:hover': {\n color: `${variables.colorBlueHoverDark}`,\n backgroundColor: `${variables.colorBlueHoverLight}`,\n borderColor: `${variables.colorBlueHoverDark}`,\n },\n },\n outlinedSecondary: {\n color: `${variables.colorRed}`,\n borderColor: `${variables.colorRed}`,\n '&:hover': {\n color: `${variables.colorRedHover}`,\n backgroundColor: `${variables.colorRedBackground}`,\n borderColor: `${variables.colorRedHover}`,\n },\n },\n // tertiary\n text: {\n border: `1px solid transparent`,\n '&:disabled': {\n color: `${variables.colorGray200DisabledState}`,\n },\n },\n textPrimary: {\n color: `${variables.colorBrandBlue}`,\n '&:hover': {\n color: `${variables.colorBlueHoverDark}`,\n backgroundColor: `${variables.colorBlueHoverLight}`,\n },\n },\n textSecondary: {\n color: `${variables.colorRed}`,\n '&:hover': {\n color: `${variables.colorRedHover}`,\n backgroundColor: `${variables.colorRedBackground}`,\n },\n },\n});\n\nclass ButtonWithStyle extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n isDisabled: false,\n size: 'large',\n isErrorMode: false,\n };\n\n public render(): JSX.Element {\n let {\n onClick,\n buttonType,\n classes,\n id,\n isDisabled,\n size,\n buttonContent,\n isErrorMode,\n } = this.props;\n let colorVariantProps: IColorVariantProps = determineColorVariantProps(buttonType, isErrorMode);\n\n return (\n \n {buttonContent}\n \n );\n }\n}\n\nexport const AtomButton = withStyles(styles)(ButtonWithStyle);\n","import * as React from 'react';\n\nimport IconButton from '@mui/material/IconButton';\nimport Modal from '@mui/material/Modal';\nimport Close from '@mui/icons-material/Close';\n\nimport './styles/atomModalStyles.scss';\n\ninterface IProps {\n isOpen: boolean;\n id: string;\n handleClose: () => void;\n children: JSX.Element;\n shouldShowClose?: boolean;\n shouldDisableBackdropClick?: boolean;\n}\ntype TOptionalProps = 'shouldShowClose' | 'shouldDisableBackdropClick';\ntype TDefaultProps = Pick;\n\nclass AtomModal extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n shouldShowClose: true,\n shouldDisableBackdropClick: false,\n };\n\n public render(): JSX.Element {\n let {\n children,\n isOpen,\n handleClose,\n id,\n shouldShowClose,\n shouldDisableBackdropClick,\n } = this.props;\n\n const onCloseWrapper = () => {\n return (_event: unknown, reason: string): void => {\n if (shouldDisableBackdropClick && ['backdropClick', 'escapeKeyDown'].includes(reason)) {\n return;\n }\n handleClose();\n };\n };\n\n return (\n \n
\n {shouldShowClose && (\n \n \n \n )}\n
\n {children}\n
\n
\n
\n );\n }\n}\n\nexport { AtomModal };\n","import * as React from 'react';\nimport Chip from '@mui/material/Chip';\n\nimport './styles/atomMetaTagStyles.scss';\n\nexport interface IAtomMetaTagProps {\n id: string;\n chipText: string;\n}\n\nclass AtomMetaTag extends React.PureComponent {\n public renderChipText(chipText: string): JSX.Element {\n return {chipText};\n }\n\n public render(): JSX.Element {\n let { id, chipText } = this.props;\n\n return (\n \n );\n }\n}\n\nexport { AtomMetaTag };\n","import * as React from 'react';\n\nimport Button from '@mui/material/Button';\n\nimport './styles/atomSingleSelectButtonStyles.scss';\n\ninterface IProps {\n isSelected: boolean;\n icon?: JSX.Element;\n buttonText: string;\n onClick: () => void;\n id: string;\n isDisabled?: boolean;\n isLargeFormat?: boolean;\n}\n\ntype TDefaultProps = Required>;\n\nclass AtomSingleSelectButton extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n isDisabled: false,\n isLargeFormat: false,\n };\n\n public render(): JSX.Element {\n const { buttonText, icon, id, isSelected, onClick, isDisabled, isLargeFormat } = this.props;\n\n const selected = isSelected ? ' selected' : '';\n const largeFormat = isLargeFormat ? ' large-format' : '';\n const baseClass = 'atom-component__single-select-button';\n\n return (\n \n
\n {icon ? icon : }\n {buttonText}\n
\n \n );\n }\n}\n\nexport { AtomSingleSelectButton };\n","import * as React from 'react';\nimport FileCopy from '@mui/icons-material/FileCopy';\nimport { TOpenSnackbarFunc } from '@app/common/interfaces';\n\nimport './styles/atomCopyToClipboardStyles.scss';\n\nexport interface IAtomCopyToClipboardProps {\n id: string;\n copyValue: string;\n labelText: string | JSX.Element;\n openSnackbar: TOpenSnackbarFunc;\n hasIcon: boolean;\n snackbarText: string;\n}\n\nclass AtomCopyToClipboard extends React.PureComponent {\n public copyToClipboard = (): void => {\n let { openSnackbar, copyValue, snackbarText } = this.props;\n\n let textField: HTMLTextAreaElement = document.createElement('textarea');\n textField.innerText = copyValue;\n textField.textContent = copyValue;\n document.body.appendChild(textField);\n textField.select();\n textField.focus();\n document.execCommand('copy');\n textField.remove();\n openSnackbar({\n text: snackbarText,\n autoHideDuration: 2000,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left'\n });\n };\n\n public render(): JSX.Element {\n let { labelText, id, hasIcon } = this.props;\n\n return (\n \n {labelText}\n\n {hasIcon && }\n \n );\n }\n}\n\nexport { AtomCopyToClipboard };\n","import * as React from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport Snackbar from '@mui/material/Snackbar';\nimport SnackbarContent from '@mui/material/SnackbarContent';\nimport { ThemeProvider, Theme, createTheme } from '@mui/material/styles';\n\nimport { AtomButton } from '@app/common/atoms';\nimport { ISnackbarData } from '@app/common/interfaces';\nimport checkGreen from '@app/imageAssets/checkGreenIcon.svg';\n\nimport './styles/atomSnackbarStyles.scss';\n\nexport interface IProps extends Required {\n handleClose: () => void;\n buttonContent?: string | JSX.Element;\n isOpen: boolean;\n id: string;\n handleClick?: () => void;\n backgroundColor?: string;\n textColor?: string;\n text: string | JSX.Element;\n}\n\ntype TDefaultPropKeys = 'backgroundColor' | 'textColor';\ntype TDefaultProps = Required>;\n\nclass AtomSnackbar extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n backgroundColor: '#ffffff',\n textColor: '#2e323a',\n };\n\n public static renderSuccessContent(title: string, description: string): JSX.Element {\n return (\n \n
\n
\n \n

{title}

\n
\n

{description}

\n
\n
\n );\n }\n\n public render(): JSX.Element {\n let {\n handleClose,\n handleClick,\n buttonContent,\n isOpen,\n text,\n anchorOriginVertical,\n anchorOriginHorizontal,\n id,\n autoHideDuration,\n backgroundColor,\n textColor,\n } = this.props;\n\n const theme: Theme = createTheme({\n components: {\n MuiSnackbarContent: {\n styleOverrides: {\n root: {\n backgroundColor,\n },\n message: {\n color: textColor,\n },\n },\n },\n },\n });\n\n let snackbarContent: JSX.Element | null = null;\n\n if (handleClick && buttonContent) {\n snackbarContent = (\n \n );\n }\n\n return (\n \n
\n \n \n {text}\n \n }\n action={[\n snackbarContent,\n \n \n ,\n ]}\n />\n \n
\n
\n );\n }\n}\n\nexport { AtomSnackbar };\n","import * as React from 'react';\n\nimport PhotoSizeSelectActual from '@mui/icons-material/PhotoSizeSelectActual';\n\nimport Dropzone, { DropzoneState } from 'react-dropzone';\n\nimport './styles/atomImageUploader.scss';\n\ntype TImage = File | string | null;\ntype TImageUploaderOptionalProps =\n | 'newIconLabel'\n | 'updateIconLabel'\n | 'containerSize'\n | 'fileTypes'\n | 'handleImageUpload'\n | 'isDisabled'\n | 'isRectangular';\n\nexport interface IImageUploaderProps {\n id: string;\n image: TImage;\n handleImageUpload: (image: File) => void;\n newIconLabel?: string;\n updateIconLabel?: string;\n containerSize?: number;\n fileTypes?: string[];\n isDisabled?: boolean;\n isRectangular?: boolean;\n}\n\ntype IDefaultProps = Required>;\n\nclass AtomImageUploader extends React.PureComponent {\n public static defaultProps: IDefaultProps = {\n handleImageUpload: () => null,\n newIconLabel: 'Add Icon',\n updateIconLabel: 'Update',\n containerSize: 136,\n fileTypes: ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp'],\n isDisabled: false,\n isRectangular: false,\n };\n\n public handleImageDrop = (images: File[]): void => {\n this.props.handleImageUpload(images[0]);\n };\n\n public renderUploadIcon(): JSX.Element {\n let { id, newIconLabel, updateIconLabel, image, containerSize, isRectangular } = this.props;\n\n return (\n \n \n \n {image ? updateIconLabel : newIconLabel}\n

\n \n );\n }\n\n public render(): JSX.Element {\n let { id, fileTypes, containerSize, image, isDisabled, isRectangular } = this.props;\n // if the image is a string then set src to the image url\n // if the image is null, set to undefined - this is done to match the src signature of \n let src: string | undefined = image === null ? undefined : (image as string);\n\n return (\n \n {({ getRootProps, getInputProps }: DropzoneState): JSX.Element => (\n \n \n \n {this.renderUploadIcon()}\n \n )}\n \n );\n }\n}\n\nexport { AtomImageUploader };\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\n\nimport TextField from '@mui/material/TextField';\nimport { createTheme, ThemeProvider, Theme } from '@mui/material/styles';\n\nimport { IDataAttributes } from 'portal-common-library/interfaces/dataAttributes';\n\nimport './styles/atomTextField.scss';\n\nexport interface ITextFieldProps {\n id: string;\n label: string;\n placeholder: string;\n attributeName: string;\n value: string;\n onChange: (event: React.ChangeEvent) => void;\n error?: boolean;\n onKeyPress?: (event: React.KeyboardEvent) => void;\n fullWidth?: boolean;\n errorText?: string;\n type?: string;\n rows?: number;\n multiline?: boolean;\n variant?: 'filled' | 'outlined' | 'standard';\n required?: boolean;\n autoComplete?: string;\n inputProps?: { [key: string]: JSX.Element };\n disabled?: boolean;\n dataAttributes?: IDataAttributes;\n onBlur?: (event: React.FocusEvent) => void;\n autoFocus?: boolean;\n hasAnimation?: boolean;\n}\n\ntype TDefaultPropKeys =\n | 'onKeyPress'\n | 'fullWidth'\n | 'errorText'\n | 'type'\n | 'rows'\n | 'multiline'\n | 'variant'\n | 'required'\n | 'error'\n | 'autoComplete'\n | 'autoFocus'\n | 'hasAnimation';\n\ntype TDefaultProps = Required>;\n\nconst theme: Theme = createTheme({\n palette: {\n primary: {\n main: '#4890e8',\n dark: '#4890e8',\n },\n },\n});\n\nclass AtomTextField extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n fullWidth: true,\n errorText: '',\n required: true,\n type: 'text',\n multiline: false,\n onKeyPress: (): void => undefined,\n rows: 1,\n variant: 'outlined',\n error: false,\n autoComplete: 'on',\n autoFocus: false,\n hasAnimation: false,\n };\n\n public render(): JSX.Element {\n let {\n id,\n placeholder,\n attributeName,\n onChange,\n fullWidth,\n error,\n errorText,\n type,\n value,\n onKeyPress,\n rows,\n multiline,\n variant,\n label,\n autoComplete,\n inputProps,\n disabled,\n dataAttributes,\n autoFocus,\n onBlur,\n hasAnimation,\n } = this.props;\n\n const classNames = `${!hasAnimation ? '' : value ? 'expand' : 'animated'} ${\n label === '' ? 'no-label' : ''\n }`;\n\n return (\n \n \n \n );\n }\n}\n\nexport { AtomTextField };\n","import * as React from 'react';\n\nimport AdapterDateFns from '@mui/lab/AdapterDateFns';\nimport DatePicker, { DatePickerProps } from '@mui/lab/DatePicker';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport TextField from '@mui/material/TextField';\nimport { createTheme, ThemeProvider, Theme } from '@mui/material/styles';\n\nimport './styles/atomDateSelector.scss';\n\nconst theme: Theme = createTheme({\n palette: {\n primary: {\n main: '#4890e8',\n dark: '#4890e8',\n },\n },\n components: {\n MuiTextField: {\n styleOverrides: {\n root: {\n width: '100%',\n },\n },\n },\n },\n});\n\nexport interface IAtomDateSelector extends DatePickerProps {\n id: string;\n}\n\ntype TDefaultPropKeys = 'onChange' | 'rifmFormatter' | 'renderInput';\ntype TDefaultProps = Required>;\n\nclass AtomDateSelector extends React.PureComponent {\n public static denseMarginOverrideClass = (label: React.ReactNode | string | undefined) => {\n return `atom-component__date-selector__text-field-container ${!label ? 'no-label' : ''}`;\n };\n\n public static defaultProps: TDefaultProps = {\n onChange: () => ({}),\n rifmFormatter: (val: string): string => val.replace(/[^\\.\\ \\,\\[a-zA-Z0-9_]*$]+/gi, ''),\n renderInput: (props) => (\n \n ),\n };\n\n public render(): JSX.Element {\n return (\n
\n \n \n \n \n \n
\n );\n }\n}\n\nexport { AtomDateSelector };\n","import * as React from 'react';\n\nimport Tooltip, { TooltipProps } from '@mui/material/Tooltip';\nimport { Theme, createTheme, ThemeProvider } from '@mui/material/styles';\n\nimport variables from '@app/core/variables.scss';\nimport info from '@app/imageAssets/info.svg';\n\nimport './styles/atomTextField.scss';\n\nexport interface IArrowTooltipProps extends TooltipProps {\n muitheme: Theme;\n}\n\nexport interface ITooltipProps {\n copy: string | JSX.Element;\n placement: 'top' | 'bottom' | 'right' | 'left';\n disableInteractive?: boolean;\n muitheme?: Theme;\n className?: string;\n id?: string;\n icon?: string;\n shouldDisableHover?: boolean;\n shouldEnableClick?: boolean;\n isOpen?: boolean;\n}\n\ntype TTooltipOptionalProps = 'className' | 'id' | 'icon' | 'muitheme';\n\ntype IDefaultProps = Required>;\n\nconst theme = createTheme({\n components: {\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n fontSize: '14px',\n fontWeight: 'normal',\n fontFamily: 'Roboto',\n color: `${variables.colorGray500SecondaryText}`,\n backgroundColor: `${variables.colorWhite}`,\n borderColor: `${variables.colorWhite}`,\n boxShadow: `0 4px 8px 0 ${variables.colorGray100Borders}`,\n position: 'relative',\n maxWidth: 500,\n },\n arrow: {\n color: `${variables.colorWhite}`,\n fontSize: 6,\n },\n },\n },\n },\n});\n\nfunction ArrowTooltip(props: IArrowTooltipProps): JSX.Element {\n const { muitheme, ...restProps } = props;\n\n return (\n \n {props.title}}\n />\n \n );\n}\n\nclass AtomTooltip extends React.PureComponent {\n public static defaultProps: IDefaultProps = {\n className: 'atom-tooltip__',\n id: 'atom-tooltip__',\n icon: info,\n muitheme: theme,\n };\n\n public render(): JSX.Element {\n let {\n copy,\n placement,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n disableInteractive,\n className,\n id,\n icon,\n muitheme,\n shouldDisableHover,\n isOpen,\n } = this.props;\n\n return (\n \n \n \n );\n }\n}\n\nexport { AtomTooltip };\n","import * as React from 'react';\n\nimport LaunchIcon from '@mui/icons-material/Launch';\n\nimport './styles/atomLinkStyles.scss';\n\nexport interface IAtomLinkProps {\n id: string;\n title: string;\n url: string;\n icon?: boolean;\n newTab?: boolean;\n}\n\n// icon is default to true => mostly for external link => newtab is default to true\n// icon for internal links should pass in newtab to be false\n// icon for in-sentence links should pass in icon to be false\nfunction AtomLink({ title, url, id, icon = true, newTab = true }: IAtomLinkProps): JSX.Element {\n return (\n \n {title}\n {icon && (\n \n \n \n )}\n \n );\n}\n\nexport { AtomLink };\n","import * as React from 'react';\nimport greenCheckMark from '@app/imageAssets/greenCheckMark.svg';\nimport './styles/atomColoredCircle.scss';\n\nexport interface IAtomColoredCircleProps {\n id: string;\n circleContent?: JSX.Element | string | null;\n circumference?: string;\n fontSize?: string;\n}\n\ntype TDefaultPropKeys = 'circleContent' | 'circumference' | 'fontSize';\n\ntype TDefaultProps = Required>;\n\nclass AtomColoredCircle extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n circleContent: null,\n circumference: '24px',\n fontSize: '16px'\n };\n\n public render(): JSX.Element {\n let { id, circleContent, circumference, fontSize } = this.props;\n\n return (\n \n \n {circleContent ?? }\n \n \n );\n }\n}\n\nexport { AtomColoredCircle };\n","import * as React from 'react';\n\nimport LinearProgress from '@mui/material/LinearProgress';\n\nimport './styles/atomProgressBar.scss';\n\ntype TProgressBarHeight = 'large' | 'small';\ntype TAtomProgressBarOptionalProps =\n | 'segments'\n | 'animationChange'\n | 'animationSecond'\n | 'height'\n | 'isError';\n\nexport interface IAtomProgressBarProps {\n id: string;\n currentSegment: number; // index/percentage% of current segment, the progress bar is on\n previousSegment: number; // index/percentage% of previous segment, the progress bar is on\n segments?: number; // segment as index: number of segments in the progress bar\n animationChange?: number;\n animationSecond?: number;\n height?: TProgressBarHeight;\n isError?: boolean;\n}\n\ntype IDefaultProps = Required>;\n\nexport interface IAtomProgressBarState {\n startProgress: number; // the percentage% where the progress bar should start\n endProgress: number; // the end value of the progress bar can be at from calculation from props\n isIncrease: boolean;\n pValue: number;\n}\n\ntype TAtomProgressBarProps = IAtomProgressBarProps & IDefaultProps;\nclass AtomProgressBar extends React.PureComponent {\n public static defaultProps: IDefaultProps = {\n segments: -1,\n animationChange: 5,\n animationSecond: 100,\n height: 'small',\n isError: false,\n };\n\n private timer: NodeJS.Timeout | undefined;\n\n constructor(props: TAtomProgressBarProps) {\n super(props);\n\n let { segments, currentSegment } = this.props;\n\n this.state = {\n startProgress: 0,\n endProgress: this.isIndexProgressBar()\n ? this.indexProgressCalculation(segments, currentSegment)\n : currentSegment,\n isIncrease: true,\n pValue: 0,\n };\n }\n\n public componentDidMount(): void {\n this.timer = setTimeout(() => this.progress(), this.props.animationSecond);\n }\n\n public componentDidUpdate(previousProps: IAtomProgressBarProps): void {\n let { currentSegment, previousSegment, animationSecond } = this.props;\n // progress bar loads from the previous segment on update\n if (currentSegment !== previousProps.currentSegment) {\n let isIncreaseProgressBar: boolean = currentSegment > previousProps.currentSegment;\n this.setState({\n startProgress: isIncreaseProgressBar\n ? this.calculateSegmentValue(previousSegment)\n : this.calculateSegmentValue(previousProps.currentSegment),\n endProgress: this.calculateSegmentValue(currentSegment),\n isIncrease: isIncreaseProgressBar,\n pValue: isIncreaseProgressBar\n ? 0\n : this.calculateSegmentValue(previousProps.currentSegment),\n });\n this.timer = setTimeout(() => this.progress(), animationSecond);\n }\n }\n\n public componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n public progress = (): void => {\n let isLoadingProgress: boolean = true;\n let { animationChange, animationSecond } = this.props;\n\n this.setState((state: IAtomProgressBarState) => {\n const { startProgress, endProgress } = state;\n let startProgressTemp: number = startProgress;\n\n if (startProgress < endProgress) {\n // increasing progress bar\n if (startProgress + animationChange >= endProgress) {\n isLoadingProgress = false;\n }\n startProgressTemp = Math.min(startProgress + animationChange, endProgress);\n } else {\n // decreasing progress bar\n if (startProgress - animationChange <= endProgress) {\n isLoadingProgress = false;\n }\n startProgressTemp = Math.max(startProgress - animationChange, endProgress);\n }\n\n return { startProgress: startProgressTemp };\n });\n if (isLoadingProgress) {\n this.timer = setTimeout(() => this.progress(), animationSecond);\n } else {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n };\n\n public render(): JSX.Element {\n let { isError, height, id } = this.props;\n\n let className: string = `atom-component__progress-bar background ${height}`;\n\n if (isError) {\n className += ' error';\n this.setState({ ...{ startProgress: 100 } });\n }\n\n if (this.state.startProgress === 100) {\n className += ' completed';\n }\n\n // need the pValue for decreasing progress bar of the start of decrement\n let pValue: number = this.state.isIncrease ? this.state.startProgress : this.state.pValue;\n let backgroundSizeUpdate = {\n '--p': `${pValue}%`,\n '--panimate': `${this.state.startProgress}%`,\n } as React.CSSProperties;\n\n return (\n \n );\n }\n\n private readonly indexProgressCalculation = (segments: number, segmentIndex: number): number => {\n return Math.ceil((100 / segments) * segmentIndex);\n };\n\n // determine if progress bar is an index progress bar (evenly split progress bar)\n private readonly isIndexProgressBar = (): boolean => {\n return !!this.props.segments && this.props.segments > 0;\n };\n\n private readonly calculateSegmentValue = (segmentValue: number): number => {\n return this.isIndexProgressBar()\n ? this.indexProgressCalculation(this.props.segments, segmentValue)\n : segmentValue;\n };\n}\n\nexport { AtomProgressBar };\n","import * as React from 'react';\nimport Collapse from '@mui/material/Collapse';\n\nexport interface IAtomCollapsibleProps {\n id: string;\n titleLineElements: string | JSX.Element;\n collapserBody: JSX.Element;\n isCollapsibleExpanded: boolean;\n}\n\ntype TAtomCollapsibleDefaultProps = Required>;\n\nexport interface IAtomCollapsibleState {\n isCollapsibleExpanded: boolean;\n}\n\nclass AtomCollapsible extends React.PureComponent {\n public static defaultProps: TAtomCollapsibleDefaultProps = {\n titleLineElements: ''\n };\n\n public render(): JSX.Element {\n let { id, titleLineElements, collapserBody, isCollapsibleExpanded } = this.props;\n\n return (\n \n {titleLineElements}\n
\n \n {collapserBody}\n \n
\n \n );\n }\n}\n\nexport { AtomCollapsible };\n","import * as React from 'react';\n\nimport Radio, { RadioProps } from '@mui/material/Radio';\n\nimport { TInputChangeEvent } from '../interfaces';\nimport './styles/atomRadioButtonStyles.scss';\n\ninterface IAtomRadioButtonProps {\n id: string;\n isChecked: boolean;\n name: string;\n value: string | number | boolean;\n inputProps?: RadioProps['inputProps'];\n onChange: (event: TInputChangeEvent) => void;\n size?: 'medium' | 'small' | undefined;\n hasSpecialIcons?: boolean;\n icon?: JSX.Element;\n checkedIcon?: JSX.Element;\n isDisabled?: boolean;\n}\n\ntype TPickProps = 'isDisabled' | 'inputProps' | 'hasSpecialIcons' | 'size';\n\ntype TDefaultProps = Required>;\n\nclass AtomRadioButton extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n isDisabled: false,\n inputProps: {},\n hasSpecialIcons: false,\n size: 'medium',\n };\n\n public render(): JSX.Element {\n let {\n icon,\n checkedIcon,\n id,\n isChecked,\n name,\n value,\n onChange,\n inputProps,\n isDisabled,\n hasSpecialIcons,\n size,\n } = this.props;\n\n let selected: string = isChecked ? '-selected' : '';\n let disabled: string = isDisabled ? '-disabled' : '';\n\n let radioProps: RadioProps = {\n id: `${id}-atom-radio-button`,\n checked: isChecked,\n name,\n value,\n disabled: isDisabled,\n onChange,\n inputProps,\n size,\n className: `atom-component__radio-button${selected}${disabled}`,\n color: 'default',\n };\n\n radioProps = hasSpecialIcons ? { ...radioProps, icon, checkedIcon } : radioProps;\n\n return ;\n }\n}\n\nexport { AtomRadioButton };\n","import React from 'react';\n\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\nimport { SORT_DIRECTION } from '@app/common/constants';\nimport { IAtomTableHeaderColumn, Order } from '@app/common/interfaces';\n\nimport './styles/atomTableHeaderStyles.scss';\n\ninterface IAtomTableHeaderProps {\n id: string;\n headRows: IAtomTableHeaderColumn[];\n isShaded?: boolean;\n orderBy?: T;\n order?: Order;\n onRequestSort?: (property: T) => () => void;\n}\n\ntype TAtomTableHeaderDefaultProps = Required, 'isShaded'>>;\n\nclass AtomTableHeader extends React.PureComponent> {\n public static defaultProps: TAtomTableHeaderDefaultProps = {\n isShaded: false\n };\n\n public renderTableSortLabelOrCellContent(column: IAtomTableHeaderColumn): JSX.Element {\n let { id, order, orderBy, onRequestSort } = this.props;\n let isSortableTableHeader: boolean =\n !!onRequestSort && !!order && !!orderBy && !!column.property;\n\n if (!isSortableTableHeader || !onRequestSort || !column.property) {\n return {column.cellContent};\n }\n\n return (\n \n {column.cellContent}\n \n );\n }\n\n public render(): JSX.Element {\n let { headRows, id, isShaded, orderBy, order } = this.props;\n let shadedMode: string = isShaded ? 'atom-component__table-header-shaded-mode' : '';\n\n return (\n \n \n {headRows.map((column: IAtomTableHeaderColumn) => (\n \n {this.renderTableSortLabelOrCellContent(column)}\n \n ))}\n \n \n );\n }\n}\nexport { AtomTableHeader };\n","import * as React from 'react';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\n\nimport './styles/atomTableRowsStyles.scss';\n\ntype TCellAlign = 'right' | 'inherit' | 'left' | 'center' | 'justify' | undefined;\n\nexport interface IAtomTableRowRequiredProps {\n shouldHover: boolean;\n isActive: boolean;\n}\n\nexport type IAtomTableRowPropsFromAtomTableRows = IAtomTableRowRequiredProps & T;\n\ntype TRowKeys = keyof IAtomTableRowPropsFromAtomTableRows;\nexport interface IAtomTableRowsProps {\n id: string;\n rows: IAtomTableRowPropsFromAtomTableRows[];\n align?: TCellAlign;\n}\n\ntype TAtomTableRowsDefaultProps = Required>;\n\n// TODO deprecate AtomTableRows and replace with AtomTableRow\nclass AtomTableRows extends React.PureComponent> {\n public static defaultProps: TAtomTableRowsDefaultProps = {\n align: 'left'\n };\n\n public renderTableCellsHelper(\n row: IAtomTableRowPropsFromAtomTableRows,\n rowIndex: number,\n key: TRowKeys,\n cellIndex: number\n ): JSX.Element | null {\n let { id, align } = this.props;\n\n // we need to filter out the keys that are actually props\n if (key === 'shouldHover' || key === 'isActive') {\n return null;\n }\n\n return (\n \n {row[key]}\n \n );\n }\n\n public render(): JSX.Element {\n let { id, rows } = this.props;\n\n return (\n \n {rows.map((row: IAtomTableRowPropsFromAtomTableRows, rowIndex: number) => {\n return (\n \n {(Object.keys(row) as TRowKeys[]).map((key: TRowKeys, cellIndex: number) =>\n this.renderTableCellsHelper(row, rowIndex, key, cellIndex)\n )}\n \n );\n })}\n \n );\n }\n}\n\nexport { AtomTableRows };\n","import * as React from 'react';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\n\nimport './styles/atomTableRow.scss';\n\nexport type TCellAlign = 'inherit' | 'left' | 'center' | 'right' | 'justify';\n\ninterface IRequiredAtomTableRow {\n id: number;\n}\n\nexport type TAtomTableRowData = IRequiredAtomTableRow & T;\n\nexport interface IAtomTableRowProps {\n id: string;\n data: TAtomTableRowData;\n order: (keyof T)[];\n rowIndex: number;\n hasHover?: boolean;\n isActive?: boolean;\n align?: TCellAlign;\n}\ntype TOptionalAtomTableRowProps = Pick;\ntype TAtomTableRowsDefaultProps = Required;\n\nclass AtomTableRow extends React.PureComponent> {\n public static defaultProps: TAtomTableRowsDefaultProps = {\n align: 'left',\n hasHover: false,\n isActive: true\n };\n\n public render(): JSX.Element {\n let { order, hasHover, data, align, id, isActive, rowIndex } = this.props;\n\n return (\n \n {order.map((key: keyof T, cellIndex: number) => {\n return (\n \n {data[key]}\n \n );\n })}\n \n );\n }\n}\n\nexport { AtomTableRow };\n","import * as React from 'react';\n\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { TooltipNoAccess } from '@app/common/components';\nimport variables from '@app/core/variables.scss';\n\nimport { TMouseEventDiv } from '../interfaces';\nimport './styles/atomMenuStyles.scss';\n\nexport interface IMenuItem {\n attributeName: string;\n itemBody: string | JSX.Element;\n handleItemClick: () => void;\n hasAccess?: boolean;\n}\n\nexport interface IAtomMenuProps {\n id: string;\n menuItems: IMenuItem[];\n anchorEl: Element | null;\n isOpen: boolean;\n handleCloseMenu: (event: TMouseEventDiv) => void;\n anchorPosition?: 'left' | 'right' | 'center' | number;\n transformPosition?: 'left' | 'right' | 'center' | number;\n}\n\ntype TPositionsOptions = 'left' | 'right' | 'center' | number;\ntype TDefaultProps = Required>;\n\ninterface IPosition {\n vertical: 'top' | 'bottom';\n horizontal: TPositionsOptions;\n}\n\nconst StyledMenuItem = withStyles(() => ({\n root: {\n '&:hover': {\n backgroundColor: `${variables.colorBlueHoverLight}`,\n },\n '&:active': {\n backgroundColor: `${variables.colorInfoBorder}`,\n },\n },\n}))(MenuItem);\n\nclass AtomMenu extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n anchorPosition: 'right',\n transformPosition: 'right',\n };\n\n public render(): JSX.Element {\n let {\n id,\n anchorEl,\n menuItems,\n isOpen,\n handleCloseMenu,\n transformPosition,\n anchorPosition,\n } = this.props;\n\n return (\n \n {menuItems.map((item: IMenuItem) => {\n // default is true\n const hasAccess = item.hasAccess !== false;\n\n return (\n
\n \n \n {item.itemBody}\n \n \n
\n );\n })}\n \n );\n }\n}\n\nexport { AtomMenu };\n","import * as React from 'react';\n\nimport { IDataAttributes } from 'portal-common-library/interfaces/dataAttributes';\n\nimport './styles/atomLinkButtonStyles.scss';\n\nexport interface IAtomLinkButtonProps {\n id: string;\n text: string;\n onClick: () => void;\n dataAttributes?: IDataAttributes;\n}\n\nclass AtomLinkButton extends React.PureComponent {\n public render(): JSX.Element {\n let { text, onClick, id, dataAttributes } = this.props;\n\n return (\n \n {text}\n

\n );\n }\n}\n\nexport { AtomLinkButton };\n","import * as React from 'react';\n\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\n\nimport { TMouseEventDiv } from '../interfaces';\nimport './styles/atomInteractiveIconStyles.scss';\n\nexport interface IAtomInteractiveIconProps extends IBaseProps {\n icon: JSX.Element | string;\n className?: string;\n isActive: boolean;\n clickFunction: (event: TMouseEventDiv) => void;\n isCornerIcon?: boolean;\n}\n\nfunction AtomInteractiveIcon({\n id,\n className,\n icon,\n isActive,\n clickFunction,\n dataAttributes,\n isCornerIcon = false,\n}: IAtomInteractiveIconProps): JSX.Element {\n let atomClassName = `atom-component__interactive-icon${isActive ? ' active' : ''}${\n isCornerIcon ? ' corner' : ''\n }`;\n\n return (\n \n {typeof icon === 'string' ? (\n \n ) : (\n icon\n )}\n \n );\n}\n\nexport { AtomInteractiveIcon };\n","import * as React from 'react';\n\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\nimport Scrollspy, { ScrollspyProps } from 'react-scrollspy';\n\nimport './styles/atomTableOfContents.scss';\n\nexport interface IToCLink {\n id: string;\n text: string;\n}\n\ninterface IAtomTableOfContentsProps {\n links: IToCLink[];\n}\n\nexport type TAtomTableOfContentsProps = IAtomTableOfContentsProps &\n IBaseProps &\n Omit;\n\nclass AtomTableOfContents extends React.Component {\n public render(): JSX.Element {\n const { links } = this.props;\n\n const ids = links.map((link) => link.id);\n const contents = links.map((link, index) => {\n return (\n
  • \n {link.text}\n
  • \n );\n });\n\n return (\n \n \n {contents}\n \n \n );\n }\n}\n\nexport { AtomTableOfContents };\n","import { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { ThunkDispatch } from 'redux-thunk';\n\nimport { fetchAnalytics, fetchAnalyticsDateRangeLimit, fetchPublisher } from '@app/common/actions';\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IAction, IAnalyticDataResponse, IAnalyticsQuery } from '@app/common/interfaces';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { IGameSnapshotOwnProps } from './interfaces';\n\nconst GameSnapshotComponent = loadable(\n () => import(/* webpackChunkName: \"common-component-game-snapshot\" */ './GameSnapshot')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState, ownProps: IGameSnapshotOwnProps) => {\n return {\n analytics: state.analytics,\n ...ownProps,\n publisher: state.publisher?.publisherInfo,\n };\n};\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch | IAction>\n) => {\n return {\n fetchAnalytics: (analyticsQuery: IAnalyticsQuery): Promise =>\n dispatch(fetchAnalytics(analyticsQuery)),\n fetchAnalyticsDateRangeLimit: (): Promise => dispatch(fetchAnalyticsDateRangeLimit()),\n fetchPublisher,\n };\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TGameSnapshotConnectedProps = ConnectedProps & IWithSnackbarProp;\n\nexport const GameSnapshot = connector(GameSnapshotComponent);\n","import { IPasswordChecklistOrder } from './interfaces';\n\nexport enum PASSWORD_CHECKLIST {\n HAS_BOTH_UPPER_LOWER_CHARS = 'hasBothUpperAndLowerCaseLetters',\n HAS_AT_LEAST_ONE_NUMBER = 'hasAtLeastOneNumber',\n HAS_MIN_EIGHT_CHARS = 'hasMinimumEightCharacters',\n HAS_AT_LEAST_ONE_SPECIAL_CHARS = 'hasAtLeastOneSpecialCharacter'\n}\n\nexport const PASSWORD_CHECKLIST_ORDER: IPasswordChecklistOrder[] = [\n {\n checklistItem: PASSWORD_CHECKLIST.HAS_MIN_EIGHT_CHARS,\n text: 'Minimum 8 characters'\n },\n\n {\n checklistItem: PASSWORD_CHECKLIST.HAS_AT_LEAST_ONE_NUMBER,\n text: 'At least 1 number'\n },\n\n {\n checklistItem: PASSWORD_CHECKLIST.HAS_AT_LEAST_ONE_SPECIAL_CHARS,\n text: 'At least 1 special character (eg. !@#$)'\n },\n {\n checklistItem: PASSWORD_CHECKLIST.HAS_BOTH_UPPER_LOWER_CHARS,\n text: 'Includes both upper and lower case letters'\n }\n];\n\nexport const passwordChecklistClassName = 'password-checklist';\n","import * as React from 'react';\n\nimport debounce from 'lodash/debounce';\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\n\nimport {\n hasAtLeastOneNumber, hasAtLeastOneSpecialCharacter, hasBothUpperAndLowerCaseLetters,\n hasMinimumEightCharacters, hasOnlyAsciiCharacters, hasSubstring\n} from '@app/common/helpers';\nimport { PasswordTextField } from '@app/common/molecules';\n\nimport { PASSWORD_CHECKLIST_ORDER } from './constants';\nimport { IPasswordChecklist, IPasswordChecklistOrder } from './interfaces';\nimport './styles.scss';\nimport {\n failedChecklistItem, passingChecklistItem, pendingChecklistItem\n} from './subcomponents/passwordChecklistItems';\n\nexport interface IPasswordWrapperProps extends IBaseProps {\n attributeName: string;\n autoComplete?: string;\n errorText?: string;\n InputProps?: { [key: string]: JSX.Element };\n hasError?: boolean;\n isDisabled?: boolean;\n isFullWidth?: boolean;\n isMultiline?: boolean;\n label: string;\n onChange: (event: React.ChangeEvent) => void;\n onKeyPress?: (event: React.KeyboardEvent) => void;\n placeholder: string;\n isRequired?: boolean;\n rows?: number;\n value: string;\n variant?: 'outlined' | 'standard' | 'filled';\n checklistProps?: {\n handleChecklistUpdate: (isChecklistDone: boolean, shouldRenderChecklist: boolean) => void;\n hasSubmitted: boolean;\n shouldRenderChecklist: boolean;\n } | null;\n}\n\nexport interface IPasswordWrapperState {\n checklist: IPasswordChecklist;\n}\n\ntype TDefaultPropKeys = 'checklistProps';\n\ntype TDefaultProps = Required>;\n\nclass PasswordWrapper extends React.Component {\n public static defaultProps: TDefaultProps = {\n checklistProps: null\n };\n\n constructor(props: IPasswordWrapperProps) {\n super(props);\n this.state = {\n checklist: {\n hasBothUpperAndLowerCaseLetters: false,\n hasAtLeastOneNumber: false,\n hasMinimumEightCharacters: false,\n hasAtLeastOneSpecialCharacter: false\n }\n };\n }\n\n public static extraValidation = (password: string, email: string): string => {\n let emailPrefix: string = email.split('@')[0];\n // need to check if the emailPrefix exist or will see this error if email is empty\n if (!!emailPrefix && hasSubstring(password, emailPrefix)) {\n return 'Should not include email';\n }\n\n if (!hasOnlyAsciiCharacters(password)) {\n return 'Should only have valid characters (ASCII)';\n }\n\n return '';\n };\n\n public onChange = (e: React.ChangeEvent): void => {\n this.props.onChange(e);\n\n debounce(() => {\n if (!!this.props.checklistProps) {\n // changing the state of checklist AND if the checklist should render\n this.props.checklistProps.handleChecklistUpdate(this.isChecklistDone(), true);\n }\n }, 100)();\n };\n\n // validates the checklist and returns if checklist is done\n public isChecklistDone = (): boolean => {\n let password = this.props.value;\n let isPassingBothUpperLowerCase: boolean = hasBothUpperAndLowerCaseLetters(password);\n let isPassingHasAtLeastOneNum: boolean = hasAtLeastOneNumber(password);\n let isPassingMinimumEightCharacters: boolean = hasMinimumEightCharacters(password);\n let isPassingAtLeastOneSpecialCharacter: boolean = hasAtLeastOneSpecialCharacter(password);\n\n this.setState({\n checklist: {\n hasBothUpperAndLowerCaseLetters: isPassingBothUpperLowerCase,\n hasAtLeastOneNumber: isPassingHasAtLeastOneNum,\n hasMinimumEightCharacters: isPassingMinimumEightCharacters,\n hasAtLeastOneSpecialCharacter: isPassingAtLeastOneSpecialCharacter\n }\n });\n\n return (\n isPassingBothUpperLowerCase &&\n isPassingHasAtLeastOneNum &&\n isPassingMinimumEightCharacters &&\n isPassingAtLeastOneSpecialCharacter\n );\n };\n\n public renderChecklist = (): JSX.Element[] => {\n return PASSWORD_CHECKLIST_ORDER.map((item: IPasswordChecklistOrder, index: number) => {\n let isPassing: boolean = this.state.checklist[item.checklistItem];\n let last: string = index === PASSWORD_CHECKLIST_ORDER.length - 1 ? 'last' : '';\n\n let checklistItem = pendingChecklistItem(item.text);\n\n if (isPassing) {\n checklistItem = passingChecklistItem(item.text);\n }\n if (!isPassing && this.props.checklistProps?.hasSubmitted) {\n checklistItem = failedChecklistItem(item.text);\n }\n\n return (\n \n {checklistItem}\n \n );\n });\n };\n\n public render(): JSX.Element {\n let shouldRenderChecklist = false;\n\n let propOverride = {};\n if (!!this.props.checklistProps) {\n propOverride = {\n onChange: this.onChange\n };\n shouldRenderChecklist = this.props.checklistProps.shouldRenderChecklist;\n }\n\n return (\n <>\n \n {shouldRenderChecklist && (\n
    \n {this.renderChecklist()}\n
    \n )}\n \n );\n }\n}\n\nexport default PasswordWrapper;\n","import * as React from 'react';\n\nimport kebabCase from 'lodash/kebabCase';\n\nimport checkGrayIconWhiteFill from '@app/imageAssets/checkGrayIconWhiteFill.svg';\nimport checkGreenIconWhiteFill from '@app/imageAssets/checkGreenIconWhiteFill.svg';\nimport redXCircle from '@app/imageAssets/redXCircle.svg';\n\nimport { passwordChecklistClassName } from '../constants';\nimport './passwordChecklistItems.scss';\n\nexport const pendingChecklistItem = (text: string): JSX.Element => {\n return (\n \n \n {text}\n \n );\n};\n\nexport const passingChecklistItem = (text: string): JSX.Element => {\n return (\n \n \n {text}\n \n );\n};\n\nexport const failedChecklistItem = (text: string): JSX.Element => {\n return (\n \n \n {text}\n \n );\n};\n","import React, { FC, useState, useEffect } from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport Grid from '@mui/material/Grid';\n\nimport { UFC_GAME_URL } from '@app/common/constants';\nimport { NFL_CHALLENGE_URL } from '@app/common/constants';\nimport nflLogo from '@app/imageAssets/nfl/NFL_DC_Logo.svg';\nimport ufcLogo from '@app/imageAssets/ufc/UFC_logo_white.svg';\nimport redUfcLogo from '@app/imageAssets/ufc/UFC_red_circle_logo.png';\n\nimport './promotionBanner.scss';\n\nconst cssPrefix: string = 'promotion-banner';\n\nconst signupCssPrefix: string = 'signup-promotion-banner';\n\nenum BANNER_TYPES {\n UFC_GAME_PARTNERSHIP = 'ufcGamePartnership',\n UFC_GAME_PARTNERSHIP_NEW_SIGNUP = 'ufcGamePartnershipNewSignup',\n NFL_GAME_CHALLENGE = 'nflGameChallenge',\n}\ninterface IPromoBannerProps {\n isFullWidth: boolean;\n description?: string;\n hideDescription?: boolean;\n header?: boolean;\n isSignup?: boolean;\n}\n\ntype TDismissedBanners = Partial>;\n\ninterface IBannerProps {\n bannerCssSuffix: string;\n url: string;\n logo: string;\n defaultDescription: string;\n topLineDescription?: string;\n}\n\nconst PromotionBanner: FC = ({\n isFullWidth,\n description,\n hideDescription,\n header,\n isSignup,\n}): JSX.Element => {\n const bannerType = window.appConfig.featureFlags.ufcGamePartnership\n ? isSignup\n ? BANNER_TYPES.UFC_GAME_PARTNERSHIP_NEW_SIGNUP\n : BANNER_TYPES.UFC_GAME_PARTNERSHIP\n : BANNER_TYPES.NFL_GAME_CHALLENGE;\n\n const ufcProps: IBannerProps = {\n bannerCssSuffix: 'ufc',\n url: UFC_GAME_URL(),\n logo: ufcLogo,\n defaultDescription: 'Submit your game!',\n };\n\n const ufcSignupProps: IBannerProps = {\n bannerCssSuffix: 'ufc',\n url: UFC_GAME_URL(),\n logo: redUfcLogo,\n defaultDescription: 'Submit your game!',\n topLineDescription: 'UFC Branded competitive mobile games.',\n };\n\n const nflProps: IBannerProps = {\n bannerCssSuffix: 'nfl',\n url: NFL_CHALLENGE_URL(),\n logo: nflLogo,\n defaultDescription: '',\n };\n\n const [shouldDismiss, setShouldDismiss] = useState(false);\n\n useEffect((): void => {\n if (header && isBannerDismissed()) {\n setShouldDismiss(true);\n }\n }, []);\n\n function getBannerProps(): IBannerProps {\n if (window.appConfig.featureFlags.ufcGamePartnership) {\n return isSignup ? ufcSignupProps : ufcProps;\n } else {\n return nflProps;\n }\n }\n\n function getDismissedBanners(): TDismissedBanners {\n const dismissedBannersString: string = localStorage.getItem('dismissedBanners') ?? '{}';\n const dismissedBanners = JSON.parse(dismissedBannersString) as TDismissedBanners;\n\n return dismissedBanners;\n }\n\n function dismissBanner(): void {\n setShouldDismiss(true);\n const dismissedBanners: TDismissedBanners = getDismissedBanners();\n dismissedBanners[bannerType] = true;\n localStorage.setItem('dismissedBanners', JSON.stringify(dismissedBanners));\n }\n\n function isBannerDismissed(): boolean {\n const dismissedBanners: TDismissedBanners = getDismissedBanners();\n\n if (dismissedBanners.hasOwnProperty(bannerType)) {\n return dismissedBanners[bannerType] ?? false;\n }\n dismissedBanners[bannerType] = false;\n localStorage.setItem('dismissedBanners', JSON.stringify(dismissedBanners));\n\n return false;\n }\n\n const { bannerCssSuffix, url, logo, defaultDescription, topLineDescription } = getBannerProps();\n const descriptionText = description ?? defaultDescription;\n const headerPrefix = header ?? '' ? `${cssPrefix}__body__header` : '';\n\n if (header && shouldDismiss) {\n return <>;\n } else if (isSignup) {\n return (\n
    \n
    \n \n
    \n
    \n
    {topLineDescription}
    \n {!hideDescription && (\n
    {descriptionText}
    \n )}\n
    \n
    \n
    \n );\n } else {\n return (\n \n \n \n
    \n
    \n \n
    \n
    \n {!hideDescription && (\n
    {descriptionText}
    \n )}\n
    \n
    \n {isFullWidth && (\n
    \n \n Learn More\n
    \n {header && !isBannerDismissed() && (\n {\n event.preventDefault();\n dismissBanner();\n }}\n />\n )}\n
    \n )}\n
    \n \n \n \n );\n }\n};\n\nexport { PromotionBanner };\n","import Typography from '@mui/material/Typography';\nimport withStyles from '@mui/styles/withStyles';\n\nimport variables from '@app/core/variables.scss';\n\nexport interface ICommonTooltipProps {\n id: string;\n text: string;\n dataAttributes: { 'data-qa': string };\n placement?:\n | 'top-start'\n | 'top'\n | 'top-end'\n | 'right'\n | 'bottom-start'\n | 'bottom'\n | 'bottom-end'\n | 'left';\n}\n\nexport const commonTooltipStyles = {\n tooltip: {\n padding: '16px',\n color: `${variables.colorGray900PrimaryText}`,\n fontWeight: 400,\n fontFamily: 'Roboto',\n lineHeight: '19px',\n boxShadow:\n '0 1px 10px 0 rgba(0, 0, 0, 0.18), 0 4px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 4px 0 rgba(0, 0, 0, 0.14)',\n },\n arrow: {\n color: `${variables.colorGray50Background}`,\n },\n popper: {\n zIndex: 1300,\n },\n};\n\nexport const CommonTooltipActionWithStyle = withStyles({\n root: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '4px',\n fontSize: '14px',\n lineHeight: '19px',\n },\n})(Typography);\n\nexport const commonTooltipTextStyles = {\n fontSize: '14px',\n fontWeight: 400,\n};\n","import * as React from 'react';\n\nimport Tooltip, { TooltipProps } from '@mui/material/Tooltip';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\nimport { IDataAttributes } from 'portal-common-library/interfaces/dataAttributes';\n\nimport { TOpenSnackbarFunc } from '@app/common/interfaces';\nimport variables from '@app/core/variables.scss';\n\nimport {\n commonTooltipStyles,\n commonTooltipTextStyles,\n CommonTooltipActionWithStyle,\n} from '../constants/tooltipConstants';\n\ninterface IBlueTooltipText extends IBaseProps {\n text: string;\n toggleTooltip: () => void;\n classNamePrefix: string;\n}\n\ninterface IShepherdToolTipText extends IBlueTooltipText {\n buttonText?: 'GOT IT' | 'NEXT' | 'CLOSE';\n}\n\nexport const BlueTooltipWithStyle = withStyles({\n tooltip: {\n backgroundColor: `${variables.colorInfoIcon}`,\n top: '-15px',\n padding: '8px',\n color: 'white',\n fontSize: '14px',\n fontWeight: 'normal',\n boxShadow:\n '0 1px 10px 0 rgba(0, 0, 0, 0.18), 0 4px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 4px 0 rgba(0, 0, 0, 0.14)',\n },\n arrow: {\n color: `${variables.colorInfoIcon}`,\n },\n popper: {\n zIndex: 100,\n },\n})(Tooltip);\n\nexport const PlayerDataTooltipWithStyle = withStyles({\n tooltip: {\n width: '270px',\n backgroundColor: `${variables.colorInfoIcon}`,\n top: '15px',\n padding: '8px',\n color: 'white',\n fontWeight: 'normal',\n boxShadow:\n '0 1px 10px 0 rgba(0, 0, 0, 0.18), 0 4px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 4px 0 rgba(0, 0, 0, 0.14)',\n animation: '$bounce 0.8s ease-in-out infinite',\n },\n '@keyframes bounce': {\n '0%': {\n transform: 'translateY(0)',\n },\n '50%': {\n transform: 'translateY(-2px)',\n },\n '100%': {\n transform: 'translateY(0)',\n },\n },\n arrow: {\n fontSize: '25px',\n color: `${variables.colorInfoIcon}`,\n filter: 'drop-shadow(0px 3px 2px rgba(0,0,0,0.3))',\n },\n popper: {\n zIndex: 111,\n },\n})(Tooltip);\n\nexport const BlueTooltipText = ({\n id,\n text,\n toggleTooltip,\n dataAttributes,\n classNamePrefix,\n}: IBlueTooltipText): JSX.Element => {\n return (\n
    \n {text}\n
    \n \n GOT IT\n \n
    \n
    \n );\n};\n\nexport const ShepherdToolTipWithStyle = withStyles({\n tooltip: {\n ...commonTooltipStyles.tooltip,\n width: '209px',\n backgroundColor: `${variables.colorInfoIcon}`,\n top: '-1px',\n color: `#F7F7F8`,\n },\n arrow: {\n ...commonTooltipStyles.arrow,\n color: `${variables.colorInfoIcon}`,\n },\n popper: {\n zIndex: 1100,\n },\n})(Tooltip);\n\nexport const ShepherdToolTipText = ({\n id,\n text,\n toggleTooltip,\n dataAttributes,\n buttonText,\n}: IShepherdToolTipText): JSX.Element => {\n return (\n \n {text}\n \n \n {buttonText ?? 'GOT IT'}\n \n \n
    \n );\n};\n\nexport const WhiteTooltipWithStyle = withStyles({\n tooltip: {\n fontSize: '12px',\n fontWeight: 'normal',\n fontFamily: 'Roboto',\n color: `${variables.colorGray500SecondaryText}`,\n backgroundColor: `${variables.colorWhite}`,\n borderColor: `${variables.colorWhite}`,\n boxShadow: `0 4px 8px 0 ${variables.colorGray100Borders}`,\n },\n arrow: {\n color: `${variables.colorWhite}`,\n },\n})(Tooltip);\n\nexport const OverflowTip = (props: {\n id: string;\n text: string;\n maxWidth: string;\n dataAttributes: IDataAttributes;\n classNamePrefix: string;\n arrow: {\n hasArrow: boolean;\n placement: TooltipProps['placement'];\n } | null;\n}): JSX.Element => {\n const textElementRef = React.useRef(null);\n\n const compareSize = () => {\n if (textElementRef.current) {\n const shouldResize = textElementRef.current.scrollWidth > textElementRef.current.clientWidth;\n setHover(shouldResize);\n }\n };\n\n // compare once and add then remove resize listener\n React.useEffect(() => {\n compareSize();\n window.addEventListener('resize', compareSize);\n\n return () => {\n window.removeEventListener('resize', compareSize);\n };\n }, [textElementRef, props.text]);\n\n // define state and function to update the value\n const [hasHover, setHover] = React.useState(false);\n const styleProps = {\n '--maxwidth': props.maxWidth,\n } as React.CSSProperties;\n\n return (\n \n \n {props.text}\n \n \n );\n};\n\nexport const GrayTooltipWithStyle = withStyles({\n tooltip: {\n backgroundColor: `${variables.colorGray50Background}`,\n padding: '8px',\n color: `${variables.colorGray900PrimaryText}`,\n fontSize: '14px',\n fontWeight: 'normal',\n boxShadow:\n '0 1px 10px 0 rgba(0, 0, 0, 0.18), 0 4px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 4px 0 rgba(0, 0, 0, 0.14)',\n },\n arrow: {\n fontSize: '25px',\n color: `${variables.colorGray50Background}`,\n filter: 'drop-shadow(0px 3px 2px rgba(0,0,0,0.3))',\n },\n popper: {\n zIndex: 1301,\n },\n})(Tooltip);\n\nexport const LearnMoreTooltipWithStyle = withStyles({\n ...commonTooltipStyles,\n tooltip: {\n ...commonTooltipStyles.tooltip,\n backgroundColor: `${variables.colorGray50Background}`,\n color: `${variables.colorGray900PrimaryText}`,\n width: '229px',\n },\n arrow: {\n ...commonTooltipStyles.arrow,\n color: `${variables.colorGray50Background}`,\n },\n})(Tooltip);\n\ninterface ILearnMoreTooltipText extends IBaseProps {\n text: string;\n helpBitId?: number;\n userId: number;\n // openSnackbar function from redux is deprecated\n openSnackbar?: TOpenSnackbarFunc;\n toggleHelpBit?: () => void;\n}\n\nexport const LearnMoreTooltipText = ({\n id,\n text,\n dataAttributes,\n helpBitId,\n toggleHelpBit,\n}: ILearnMoreTooltipText): JSX.Element => {\n return (\n \n {text}\n {!!helpBitId ? (\n \n \n Learn More\n \n \n ) : null}\n \n );\n};\n","import loadable from '@loadable/component';\nimport {\n connect,\n ConnectedProps\n} from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\n\nimport {\n closeArchiveModal,\n updateGameEnabled\n} from '@app/common/actions';\nimport {\n IAction,\n IActionNoData,\n IGameEnabled\n} from '@app/common/interfaces';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport {\n IArchiveModalOwnProps,\n IDispatchProps\n} from './interfaces';\n\nconst ArchiveModalContainer = loadable(\n () => import(/* webpackChunkName: \"common-component-archive-modal\" */ './ArchiveModal')\n);\n\nconst mapStateToProps = (state: IRootState, ownProps: IArchiveModalOwnProps) => {\n return {\n isArchiveModalOpen: state.modalManagement.isArchiveModalOpen,\n gameId: ownProps.gameId\n };\n};\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch>\n): IDispatchProps => {\n return {\n closeArchiveModal: (): IActionNoData => dispatch(closeArchiveModal()),\n updateGameEnabled: (game: IGameEnabled): Promise => dispatch(updateGameEnabled(game))\n };\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TArchiveModalConnectedProps = ConnectedProps;\n\nexport const ArchiveModal = connector(withRouter(ArchiveModalContainer));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { openSnackbar } from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { IAnalyticsSummaryCardOwnProps } from './interfaces';\n\nconst AnalyticsSummaryCardContainer = loadable(\n () =>\n import(\n /* webpackChunkName: \"common-component-analytics-summary-card\" */ './AnalyticsSummaryCard'\n )\n);\n\nconst mapStateToProps = (state: IRootState, ownProps: IAnalyticsSummaryCardOwnProps) => {\n let { analytics } = state;\n let {\n id,\n title,\n mathOperation,\n attributeKeys,\n format,\n startDate,\n endDate,\n selectedGameProductionId,\n isLoading,\n mdOverride,\n } = ownProps;\n\n return {\n analytics,\n id,\n title,\n mathOperation,\n attributeKeys,\n format,\n startDate,\n endDate,\n selectedGameProductionId,\n isLoading,\n mdOverride,\n };\n};\n\nconst mapDispatchToProps = {\n openSnackbar,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TAnalyticsSummaryCardConnectedProps = ConnectedProps;\n\nexport const AnalyticsSummaryCard = connector(withRouter(AnalyticsSummaryCardContainer));\n","import * as React from 'react';\n\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\n\nimport './styles/analyticsSummaryCardContainer.scss';\n\nconst classNamePrefix: string = 'common-component__analytics-summary-card-container';\n\ninterface ISummaryCardProps {\n children: React.ReactNode;\n}\n\nclass AnalyticsSummaryCardContainer extends React.PureComponent {\n public render(): JSX.Element {\n return (\n \n \n {/* children must be grid items to render! */}\n {this.props.children}\n \n \n );\n }\n}\n\nexport { AnalyticsSummaryCardContainer };\n","import * as React from 'react';\n\nimport { RouteComponentProps } from 'react-router-dom';\n\nimport leftArrow from '@app/imageAssets/leftArrow.svg';\n\nimport './styles/backButtonStyles.scss';\n\ninterface IProps extends RouteComponentProps {\n fallBackUrl: string;\n customUrl?: string;\n}\n\nconst CLASS_NAME = 'common-component__back-button-container';\n\nconst BackButton = (props: IProps) => {\n React.useEffect(() => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }, []);\n\n const handleBackButtonClick = () => {\n const { history, fallBackUrl, customUrl } = props;\n\n if (customUrl !== undefined) {\n history.push({ pathname: customUrl });\n\n return;\n }\n\n // if the value of the `history.action` is NOT `POP` then there is a route to go back to, but\n // if it is, then we use the fallBackUrl instead\n return history.action !== 'POP' ? history.goBack() : (window.location.href = fallBackUrl);\n };\n\n return (\n
    \n \n

    Back

    \n
    \n );\n};\n\nexport { BackButton };\n","import * as React from 'react';\nimport ContentLoader from 'react-content-loader';\nimport { chartDefaultProps } from '@app/common/constants';\nimport { IChartContentLoaderProps } from '@app/common/interfaces';\n\nimport variables from '@app/core/variables.scss';\n\nconst BarChartContentLoader: React.SFC = (\n props: IChartContentLoaderProps\n): JSX.Element => {\n let { width, speed } = props;\n\n return (\n
    \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
    \n );\n};\n\nBarChartContentLoader.defaultProps = chartDefaultProps;\n\nexport { BarChartContentLoader };\n","import * as React from 'react';\n\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { fetchPublicGameApiCall } from '@app/common/actions';\nimport { makeCancelable } from '@app/common/helpers';\nimport {\n IWithSnackbarProp,\n snackbarErrorMessage,\n WithSnackbar,\n} from '@app/common/helpers/snackbarHookHelper';\nimport { IPublicGame } from '@app/common/interfaces';\n\nimport './styles/bestPracticeCardStyles.scss';\n\nexport interface IBestPracticeCardProps {\n id: string;\n gameProductionId: number;\n}\nexport interface IBestPracticeCardState {\n game: IPublicGame | null;\n}\n\n// TODO MOVE [WS-10322] to Dashboard folder since it is not used elsewhere\nclass BestPracticeCard extends React.Component<\n IBestPracticeCardProps & IWithSnackbarProp,\n IBestPracticeCardState\n> {\n private cancelFetch: undefined | (() => void);\n\n constructor(props: IBestPracticeCardProps & IWithSnackbarProp) {\n super(props);\n this.state = {\n game: null,\n };\n }\n\n public async componentDidMount(): Promise {\n const { gameProductionId } = this.props;\n try {\n const cancelableFetch = makeCancelable(fetchPublicGameApiCall(gameProductionId));\n this.cancelFetch = cancelableFetch.cancel;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const game = camelize((await cancelableFetch.promise).data) as IPublicGame;\n this.setState({ game });\n } catch (error) {\n this.props.snackbar.show(snackbarErrorMessage(error), 'error');\n }\n }\n\n public componentWillUnmount() {\n if (this.cancelFetch) {\n this.cancelFetch();\n }\n }\n\n public render(): JSX.Element | null {\n const { id, gameProductionId } = this.props;\n const { game } = this.state;\n\n if (!game) return null;\n\n return (\n \n
    \n

    {game.genre}

    \n
    \n
    \n {game.iconUrl && }\n
    \n
    \n

    {game.title}

    \n

    {game.tagline}

    \n
    \n
    \n
    \n \n );\n }\n}\n\nconst component = WithSnackbar(BestPracticeCard);\nexport { component as BestPracticeCard, BestPracticeCard as BestPracticeCardComponent };\n","import * as React from 'react';\n\nimport InfoIcon from '@mui/icons-material/Info';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport kebabCase from 'lodash/kebabCase';\n\nimport { AtomTooltip } from '@app/common/atoms';\nimport { IChartContentLoaderProps } from '@app/common/interfaces';\n\nimport './styles/chartStyles.scss';\n\nexport interface IChartProps {\n loading: boolean;\n chartComponent: JSX.Element;\n loadingComponent: React.ComponentType;\n tooltip?: string | JSX.Element;\n title: string;\n id: string;\n idPrefix: string;\n shouldHaveSingleGame?: boolean;\n}\n\ntype TDefaultProps = Required>;\nexport interface IChartState {\n containerHeight: number;\n containerWidth: number;\n resizing: boolean;\n}\n\nfunction RequiresSingleGamePlaceholder({ chartTitle }: { chartTitle: string }) {\n return (\n \n \n \n To view {chartTitle}, please select the game you want to analyze.\n \n \n );\n}\n\n// TODO: WS-8055 refactor Chart component to have all the calculation & rendering logic here\nclass Chart extends React.Component {\n public static defaultProps: TDefaultProps = {\n tooltip: '',\n };\n private interval: NodeJS.Timer | null;\n\n constructor(props: IChartProps) {\n super(props);\n this.state = {\n containerWidth: 0,\n containerHeight: 0,\n resizing: false,\n };\n this.updateWindowDimensions = this.updateWindowDimensions.bind(this);\n this.interval = null;\n }\n\n public componentDidMount(): void {\n this.updateWindowDimensions();\n window.addEventListener('resize', this.updateWindowDimensions.bind(this));\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.updateWindowDimensions.bind(this));\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n clearInterval(this.interval!);\n }\n\n // this updates the state's containerHeight and containerWidth elements to\n // allow the ContentLoaderContainer know what the div size is\n public updateWindowDimensions(): void {\n let { idPrefix, title } = this.props;\n let chartContainer: HTMLElement | null = document.getElementById(\n `${idPrefix}__chart-outer-container-${kebabCase(title)}`\n );\n\n if (chartContainer) {\n // this is to prevent the slow shrinking, after resizing it waits\n // then it displays the chart\n this.interval = setTimeout(() => {\n this.setState({ resizing: false });\n }, 1000);\n\n // when the chart is being resized it sets the resizing value in the chart\n // in order to prevent the slow resize\n this.setState({\n containerWidth: chartContainer.offsetWidth,\n containerHeight: chartContainer.offsetHeight,\n resizing: true,\n });\n }\n }\n\n public renderLoader(Loading: React.ComponentType): JSX.Element {\n let { containerHeight, containerWidth } = this.state;\n\n return ;\n }\n\n public render(): JSX.Element {\n let { resizing: isResizing } = this.state;\n let {\n loading: isLoading,\n loadingComponent,\n chartComponent,\n tooltip,\n title,\n idPrefix,\n shouldHaveSingleGame,\n } = this.props;\n let kebabCaseTitle: string = kebabCase(title);\n\n const renderMainArea = () => {\n if (shouldHaveSingleGame) {\n return ;\n }\n\n if (isLoading || isResizing) {\n return this.renderLoader(loadingComponent);\n }\n\n return chartComponent;\n };\n\n return (\n \n \n \n

    {title}

    \n \n {tooltip !== '' && tooltip !== undefined && (\n \n )}\n \n \n {renderMainArea()}\n \n \n );\n }\n}\n\nexport { Chart };\n","import * as React from 'react';\n\nimport PhotoSizeSelectActual from '@mui/icons-material/PhotoSizeSelectActual';\n\nimport { format } from 'date-fns';\nimport { RouteComponentProps } from 'react-router-dom';\n\nimport { AtomMenu, AtomMetaTag, IMenuItem } from '@app/common/atoms';\nimport {\n DEFAULT_MENU_ITEMS,\n MENU_ITEM_ATTRIBUTES,\n MENU_ITEM_COPY,\n STATUS,\n} from '@app/common/constants';\nimport { IDashboardGame, TMouseEventDiv } from '@app/common/interfaces';\nimport kabobMenu from '@app/imageAssets/kabobMenu.svg';\n\nimport { TooltipNoAccess } from './TooltipNoAccess';\nimport './styles/gameObjectCardStyles.scss';\n\nexport interface IGameObjectCardProps {\n id: string;\n game: IDashboardGame;\n cardMenuItems?: IMenuItem[];\n handleMenuSelection: (attributeName: string, gameId: number) => void;\n disabled?: boolean;\n}\n\nexport interface IGameObjectCardState {\n anchorElement: Element | null;\n isMenuOpen: boolean;\n}\n\nexport type TGameObjectCardProps = IGameObjectCardProps & Pick;\nexport type TGameObjectCardDefaultProps = Required>;\n\nexport enum META_TAG_TEXT {\n PRIZE_ENABLED = 'Prize enabled',\n LAUNCHED = 'Launched',\n IN_PROGRESS = 'In-progress',\n ARCHIVED = 'Archived',\n}\n\nclass GameObjectCard extends React.Component {\n constructor(props: TGameObjectCardProps) {\n super(props);\n\n this.state = {\n anchorElement: null,\n isMenuOpen: false,\n };\n }\n\n public static defaultProps: TGameObjectCardDefaultProps = {\n cardMenuItems: DEFAULT_MENU_ITEMS,\n };\n\n public handleKabobClick = (event: TMouseEventDiv): void => {\n this.setState({ isMenuOpen: true, anchorElement: event.currentTarget });\n event.stopPropagation();\n };\n\n public handleCloseMenu = (event: TMouseEventDiv): void => {\n event.stopPropagation();\n this.setState({ isMenuOpen: false, anchorElement: null });\n };\n\n public handleMenuItemClick: (attributeName: string) => () => void = (\n attributeName: string\n ): (() => void) => {\n return (): void => {\n let { game, handleMenuSelection } = this.props;\n handleMenuSelection(attributeName, game.id);\n this.setState({ isMenuOpen: false, anchorElement: null });\n };\n };\n\n private readonly handleCardClick =\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n (url: string, isDisabled?: boolean) => (_event: TMouseEventDiv) => {\n if (isDisabled) return;\n this.props.history.push(url);\n };\n\n public determineMenuItems(): IMenuItem[] {\n let {\n game: { enabled: isEnabled, live: isLive },\n cardMenuItems,\n } = this.props;\n let menuOptions: IMenuItem[] = [\n {\n attributeName: MENU_ITEM_ATTRIBUTES.MANAGE,\n itemBody: MENU_ITEM_COPY.MANAGE,\n handleItemClick: this.handleMenuItemClick(MENU_ITEM_ATTRIBUTES.MANAGE),\n },\n ];\n\n if (cardMenuItems && cardMenuItems !== DEFAULT_MENU_ITEMS) {\n return cardMenuItems;\n }\n\n if (!isEnabled) {\n menuOptions = [\n {\n attributeName: MENU_ITEM_ATTRIBUTES.UNARCHIVE,\n itemBody: MENU_ITEM_COPY.UNARCHIVE,\n handleItemClick: this.handleMenuItemClick(MENU_ITEM_ATTRIBUTES.UNARCHIVE),\n },\n ];\n } else if (isLive !== STATUS.COMPLETED) {\n menuOptions.push({\n attributeName: MENU_ITEM_ATTRIBUTES.ARCHIVE,\n itemBody: MENU_ITEM_COPY.ARCHIVE,\n handleItemClick: this.handleMenuItemClick(MENU_ITEM_ATTRIBUTES.ARCHIVE),\n });\n }\n\n return menuOptions;\n }\n\n public determineTagChipText(): META_TAG_TEXT {\n let {\n game: { enabled: isEnabled, live: isLive, cashLive: isCashLive },\n } = this.props;\n\n if (!isEnabled) return META_TAG_TEXT.ARCHIVED;\n if (isLive !== STATUS.COMPLETED) return META_TAG_TEXT.IN_PROGRESS;\n if (!isCashLive) return META_TAG_TEXT.LAUNCHED;\n\n return META_TAG_TEXT.PRIZE_ENABLED;\n }\n\n public renderGameIconOrBlankIcon(): JSX.Element {\n let { id, game } = this.props;\n\n if (game.iconUrl) {\n return ;\n }\n\n return (\n
    \n \n
    \n );\n }\n\n public render(): JSX.Element {\n let { id, game, disabled: isDisabled } = this.props;\n let { anchorElement, isMenuOpen } = this.state;\n\n let additionalClasses = '';\n\n if (!game.enabled) additionalClasses += '-archived';\n if (isMenuOpen) additionalClasses += ' raised';\n if (isDisabled) additionalClasses += ' disabled';\n\n return (\n \n \n \n
    \n {this.renderGameIconOrBlankIcon()}\n
    \n

    {game.title}

    \n

    {`Last updated: ${format(\n new Date(game.updatedAt),\n 'MM/dd/yyyy'\n )}`}

    \n \n
    \n
    \n {!isDisabled && (\n \n \n \n )}\n \n
    \n\n \n
    \n );\n }\n}\n\nexport { GameObjectCard };\n","import { connect, ConnectedProps } from 'react-redux';\n\nimport { openSnackbar } from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport TooltipNoAccessContainer from './TooltipNoAccess';\n\ninterface ITooltipNoAccessOwnProps {\n children: JSX.Element;\n active?: boolean;\n}\n\nconst mapStateToProps = (state: IRootState, ownProps: ITooltipNoAccessOwnProps) => {\n const {\n publisher: {\n publisherInfo: { id: publisherId },\n },\n feature,\n } = state;\n\n return {\n ...ownProps,\n publisherId,\n feature,\n };\n};\n\nconst mapDispatchToProps = {\n openSnackbar,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TTooltipNoAccessConnectedProps = ConnectedProps;\n\nexport const TooltipNoAccess = connector(TooltipNoAccessContainer);\n","import * as React from 'react';\n\nimport { Link } from 'react-router-dom';\n\nimport { TTooltipNoAccessConnectedProps } from '.';\nimport { GrayTooltipWithStyle } from '../TooltipWithStyle';\nimport './styles.scss';\n\nconst TooltipNoAccess = (props: TTooltipNoAccessConnectedProps) => {\n const { children, publisherId, feature, active: isActive } = props;\n\n if (!isActive || !feature.userRolesU6GameRolesAndPermissions) {\n return children;\n }\n\n const tooltipContent = (\n
    \n
    \n Ask your account Admins for access to this feature.\n
    \n
    \n View Admins\n
    \n
    \n );\n\n return (\n \n
    {children}
    \n \n );\n};\n\nexport default TooltipNoAccess;\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\n\nimport {\n fetchGameAccess,\n openArchiveModal,\n updateGameEnabled,\n fetchPermissions,\n} from '@app/common/actions';\nimport { IAction, IActionNoData, IGameEnabled, TErrorGeneral } from '@app/common/interfaces';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { IDispatchProps } from './interfaces';\n\nconst GameObjectListComponent = loadable(\n () => import(/* webpackChunkName: \"common-component-game-object-list\" */ './GameObjectList')\n);\n\nconst mapStateToProps = (state: IRootState) => {\n const { feature, gameAccess, permissions } = state;\n\n return { feature, gameAccess, permissions };\n};\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch>\n): IDispatchProps => {\n return {\n openArchiveModal: (): IActionNoData => dispatch(openArchiveModal()),\n updateGameEnabled: (game: IGameEnabled): Promise | TErrorGeneral =>\n dispatch(updateGameEnabled(game)),\n fetchGameAccess: () => dispatch(fetchGameAccess()),\n fetchPermissions: (...args) => dispatch(fetchPermissions(...args)),\n };\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TGameObjectListConnectedProps = ConnectedProps;\n\nexport const GameObjectList = connector(withRouter(GameObjectListComponent));\n","import * as React from 'react';\n\nconst Loading = () =>
    ;\n\nexport { Loading };\n","import * as React from 'react';\n\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\n\nexport interface ICheckBoxProps {\n checked: boolean;\n handleChange: (e: React.ChangeEvent) => void;\n label: string | JSX.Element;\n id: string;\n}\n\nconst theme = createTheme({\n palette: {\n primary: {\n main: '#4890e8',\n },\n },\n typography: {\n fontFamily: 'Roboto',\n },\n components: {\n MuiFormControlLabel: {\n styleOverrides: {\n label: {\n color: '#979797',\n },\n root: {\n alignItems: 'flex-start',\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n root: {\n color: '#9ca3b1',\n marginTop: '-9px', // override 9px mui padding so checkbox is top aligned\n },\n },\n },\n },\n});\n\nclass MaterialCheckbox extends React.PureComponent {\n public render(): JSX.Element {\n let { label, id } = this.props;\n\n return (\n \n {label}
    }\n />\n \n );\n }\n\n private renderCheckbox(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let { checked, handleChange, id } = this.props;\n\n return (\n \n );\n }\n}\n\nexport { MaterialCheckbox };\n","/* eslint-disable */\nimport * as React from 'react';\n\nimport FormControl from '@mui/material/FormControl';\n\nimport { AtomButton, TButtonType } from '@app/common/atoms';\n\nimport './styles/materialFileUploadStyles.scss';\n\ninterface IDefaultProps {\n label: string;\n type: string;\n accept: string;\n buttonText: string;\n buttonType: TButtonType;\n classes: {\n [className: string]: string;\n };\n}\n\nexport interface IFileUploadProps extends IDefaultProps {\n id: string;\n fileName: string;\n onChange: any;\n}\n\n// TODO DELETE [WS-10318] replace with AtomFileUploader\nclass MaterialFileUpload extends React.PureComponent {\n public static defaultProps: IDefaultProps = {\n label: '',\n type: 'file',\n buttonText: 'Upload',\n accept: '*',\n buttonType: 'tertiary',\n classes: {},\n };\n\n public onClick = (): void => {\n document.getElementById(`material-ui-file-input-${this.props.id}`)!.click();\n };\n\n public render(): JSX.Element {\n let { type, buttonText, fileName, onChange, id, classes, accept, label } = this.props;\n\n return (\n \n {label !== '' && (\n
    \n {label}\n
    \n )}\n
    \n \n \n\n
    \n
    \n

    \n  {fileName}\n

    \n
    \n
    \n
    \n );\n }\n}\n\nexport { MaterialFileUpload };\n","/* eslint-disable */\nimport * as React from 'react';\n\nimport InputAdornment from '@mui/material/InputAdornment';\nimport TextField from '@mui/material/TextField';\nimport { lightBlue } from '@mui/material/colors';\nimport { ThemeProvider, createTheme, Theme } from '@mui/material/styles';\n\nimport warningIcon from '@app/imageAssets/warningIcon.svg';\n\ninterface IProps {\n id: string;\n label: string; // label for the text field\n placeholder: string; // placeholder when field is empty\n attributeName: string; // name of attribute\n value: string;\n onChange: (event: React.ChangeEvent) => void;\n error: boolean;\n fullWidth?: boolean;\n errorText?: string;\n onKeyPress?: (event: React.KeyboardEvent) => void;\n}\n\nexport interface IPasswordState {\n passwordIsMasked: boolean;\n}\n\ninterface IDefaultProps {\n fullWidth: boolean;\n error: boolean;\n required: boolean;\n}\n\nconst theme: Theme = createTheme({\n palette: {\n primary: lightBlue,\n },\n typography: {\n fontSize: 22,\n fontFamily: 'Roboto',\n },\n});\n\n// TODO DELETE [WS-10321] replace with AtomTextField\nclass MaterialPasswordField extends React.Component {\n public static defaultProps: IDefaultProps = {\n fullWidth: true,\n error: false,\n required: true,\n };\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n passwordIsMasked: true,\n };\n }\n\n public renderShowOrHide(): JSX.Element {\n let { value } = this.props;\n let { passwordIsMasked } = this.state;\n\n let label: string = passwordIsMasked ? 'Show' : 'Hide';\n\n return (\n \n \n {label}\n \n \n );\n }\n\n public renderErrorIcon(): JSX.Element {\n return ;\n }\n\n public togglePasswordMask = (): void => {\n let { passwordIsMasked } = this.state;\n this.setState({ passwordIsMasked: !passwordIsMasked });\n };\n\n public render(): JSX.Element {\n let {\n id,\n label,\n placeholder,\n attributeName,\n onChange,\n fullWidth,\n error,\n errorText,\n value,\n onKeyPress,\n } = this.props;\n let { passwordIsMasked } = this.state;\n let type: string = passwordIsMasked ? 'password' : 'text';\n\n return (\n
    \n \n {label}

    }\n name={attributeName}\n placeholder={placeholder}\n onChange={onChange}\n fullWidth={fullWidth}\n error={error}\n helperText={error ? errorText : ''}\n type={type}\n value={value}\n InputProps={{\n endAdornment: (error && this.renderErrorIcon()) || (value && this.renderShowOrHide()),\n }}\n onKeyPress={onKeyPress}\n />\n
    \n
    \n );\n }\n}\n\nexport { MaterialPasswordField };\n","import * as React from 'react';\n\nimport FilledInput from '@mui/material/FilledInput';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport Input from '@mui/material/Input';\nimport InputLabel from '@mui/material/InputLabel';\nimport NativeSelect from '@mui/material/NativeSelect';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport { lightBlue } from '@mui/material/colors';\nimport { createTheme, ThemeProvider, Theme } from '@mui/material/styles';\n\nimport { IDataAttributes } from 'portal-common-library/interfaces/dataAttributes';\n\nimport { MATERIAL_UI_VARIANTS } from '../constants';\nimport { TSelectChangeEvent } from '../interfaces';\nimport './CommonComponent.css';\nimport './styles/materialSingleSelector.scss';\n\ninterface IProps {\n id: string;\n dropdownLabel?: string; // the label for the dropdown menu\n attributeName: string; // the name of the attribute we want to change with this dropdown.\n selectionOptions: DropdownOption[];\n handleChange: (event: TSelectChangeEvent) => void;\n // can be any type just as DropdownOption\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentValue: any;\n hasError?: boolean;\n errorText?: string;\n disabledText?: string;\n isDisabled?: boolean;\n shouldDisableUnderline?: boolean;\n variant?: MATERIAL_UI_VARIANTS;\n isFullWidth?: boolean;\n // optional because still needs to be added to the rest of the selectors\n dataAttributes?: IDataAttributes;\n}\n\ntype TDefaultKeys =\n | 'shouldDisableUnderline'\n | 'dropdownLabel'\n | 'variant'\n | 'isDisabled'\n | 'isFullWidth'\n | 'hasError'\n | 'errorText';\n\ntype TDefaultProps = Pick;\n\nexport interface DropdownOption {\n // can be any type: string | number | boolean | null | undefined | any enum\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n component: string | number;\n}\n\nconst theme: Theme = createTheme({\n palette: {\n primary: lightBlue,\n },\n});\n\nclass MaterialSingleSelector extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n shouldDisableUnderline: false,\n dropdownLabel: '',\n variant: 'standard' as MATERIAL_UI_VARIANTS,\n isDisabled: false,\n isFullWidth: true,\n hasError: false,\n errorText: '',\n };\n\n public renderDropdownLabel(): JSX.Element | null {\n let { dropdownLabel } = this.props;\n\n if (dropdownLabel !== '') {\n return <>{dropdownLabel};\n }\n\n return null;\n }\n\n public render(): JSX.Element {\n let {\n id,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n currentValue,\n handleChange,\n attributeName,\n hasError,\n errorText,\n selectionOptions,\n disabledText,\n dropdownLabel,\n isDisabled,\n shouldDisableUnderline,\n variant,\n isFullWidth,\n dataAttributes,\n } = this.props;\n\n const labelStyle: React.CSSProperties = {\n fontSize: '16px',\n fontWeight: 'normal',\n height: '40px',\n top: '13px',\n };\n\n let inputElement: JSX.Element = ;\n const selectStyle: React.CSSProperties = {\n width: '100%',\n fontSize: '16px',\n textAlign: 'left',\n };\n const errorDataAttribute = !!dataAttributes\n ? { 'data-qa': `${dataAttributes['data-qa']}-error` }\n : {};\n\n switch (variant) {\n case MATERIAL_UI_VARIANTS.OUTLINED:\n inputElement = ;\n labelStyle.top = '0px';\n break;\n case MATERIAL_UI_VARIANTS.FILLED:\n inputElement = ;\n labelStyle.top = '-5px';\n break;\n // case standard\n default:\n selectStyle.paddingTop = '11px';\n break;\n }\n\n // really making sure ​ does not cause weird width white padding\n const selectorInputLabel = !dropdownLabel ? { label: '\\u200B' } : {};\n\n return (\n \n \n \n {this.renderDropdownLabel()}\n \n \n {selectionOptions.map((option: DropdownOption, index: number) => {\n return (\n \n {option.component}\n \n );\n })}\n \n {hasError && (\n \n {errorText}\n \n )}\n \n \n );\n }\n}\n\nexport { MaterialSingleSelector };\n","import * as React from 'react';\n\nimport Paper from '@mui/material/Paper';\nimport Tab from '@mui/material/Tab';\nimport Tabs from '@mui/material/Tabs';\nimport { createTheme, ThemeProvider, Theme } from '@mui/material/styles';\n\nimport {\n PlayerDataTooltipWithStyle,\n BlueTooltipText,\n} from '@app/common/components/TooltipWithStyle';\n\nimport './styles/materialTabStyles.scss';\n\ntype TColor = 'primary' | 'secondary';\n\ninterface IProps {\n onChange: (event: React.SyntheticEvent, newValue: number) => void;\n value: number;\n labels: React.ReactNode[];\n id: string;\n isCentered?: boolean;\n indicatorColor?: TColor;\n textColor?: TColor | 'inherit';\n tabComponents: JSX.Element[];\n backgroundColor?: string;\n togglePlayerDataTooltip: () => void;\n showTooltip: boolean;\n tabWithTooltip?: number;\n tooltipCopy?: string;\n hasDisabled?: boolean;\n tabDisabled?: number;\n tabOnClick?: (link: string) => () => void;\n tabLinks?: string[];\n}\n\ninterface IDefaultProps {\n indicatorColor: TColor;\n textColor: TColor | 'inherit';\n isCentered: boolean;\n backgroundColor: string;\n tabComponents: JSX.Element[];\n togglePlayerDataTooltip: () => void;\n showTooltip: boolean;\n hasDisabled: boolean;\n}\ninterface Ia11yProps {\n id: string;\n 'aria-controls': string;\n}\n\nconst theme: Theme = createTheme({\n palette: {\n primary: {\n main: '#4890e8',\n },\n },\n typography: {\n fontSize: 16,\n fontFamily: 'Roboto',\n button: {\n textTransform: 'none',\n },\n },\n});\n\nfunction a11yProps(index: number): Ia11yProps {\n return {\n id: `simple-tab-${index}`,\n 'aria-controls': `simple-tabpanel-${index}`,\n };\n}\n\nconst defaultOnClick = () => {\n return () => {\n return;\n };\n};\n\nclass MaterialTab extends React.PureComponent {\n public static defaultProps: IDefaultProps = {\n indicatorColor: 'primary',\n textColor: 'primary',\n isCentered: false,\n tabComponents: [],\n backgroundColor: '#ffffff', // white\n togglePlayerDataTooltip: () => ({}),\n showTooltip: false,\n hasDisabled: false,\n };\n\n public tabLinkOverride = (links: string[] | undefined, index: number) => {\n if (!links) return '';\n if (!links[index]) return '';\n\n return links[index];\n };\n\n public render(): JSX.Element {\n let {\n onChange,\n value,\n labels,\n isCentered,\n indicatorColor,\n textColor,\n tabComponents,\n id,\n backgroundColor,\n togglePlayerDataTooltip,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n showTooltip,\n tabWithTooltip,\n tooltipCopy,\n hasDisabled,\n tabDisabled,\n tabOnClick,\n tabLinks,\n } = this.props;\n\n return (\n \n \n \n {labels.map((labelName: React.ReactNode, index: number) => {\n if (tooltipCopy && togglePlayerDataTooltip) {\n return (\n \n }\n arrow={true}\n placement={'top-start'}\n open={showTooltip && tabWithTooltip === index}\n >\n \n \n );\n } else {\n return (\n \n );\n }\n })}\n \n\n
    \n {tabComponents[value] !== undefined ? tabComponents[value] : null}\n
    \n
    \n
    \n );\n }\n}\nexport { MaterialTab };\n","import * as React from 'react';\n\nimport Grid from '@mui/material/Grid';\n\nimport './styles/modalHeadersStyles.scss';\n\ninterface ITitle {\n className: string;\n title: string | JSX.Element;\n}\n\nexport const ModalHeader = ({ className, title }: ITitle): JSX.Element => {\n return (\n \n

    {title}

    \n
    \n );\n};\n\nexport const ModalSubHeader = ({ className, title }: ITitle): JSX.Element => {\n return (\n \n

    {title}

    \n
    \n );\n};\n","import * as React from 'react';\n\nimport Grid from '@mui/material/Grid';\n\nimport './styles/pageHeaderStyles.scss';\n\nexport interface IPageHeaderProps {\n title: string | JSX.Element;\n id: string;\n}\n\nclass PageHeader extends React.PureComponent {\n public renderHeaderElement(): JSX.Element {\n let { title, id } = this.props;\n if (typeof title === 'string') {\n return (\n

    \n {title}\n

    \n );\n }\n\n return title;\n }\n\n public render(): JSX.Element {\n return (\n \n \n {this.renderHeaderElement()}\n \n \n );\n }\n}\n\nexport { PageHeader };\n","import loadable from '@loadable/component';\n\nexport const PasswordWrapper = loadable(\n () => import(/* webpackChunkName: \"common-component-password-wrapper\" */ './PasswordWrapper')\n);\n","import React from 'react';\n\nimport { AxisProps } from '@nivo/axes';\nimport { Data, ResponsiveBar, TooltipProp } from '@nivo/bar';\nimport { OrdinalColorsInstruction } from '@nivo/colors';\n\nimport { barLegends } from '@app/common/constants';\nimport { IChartKeys } from '@app/common/interfaces';\n\ninterface IDataProps {\n data: Data['data'];\n colors?: OrdinalColorsInstruction;\n keys: (keyof IChartKeys)[];\n xAxisDates: string;\n axisLeft?: AxisProps | null;\n tooltip?: TooltipProp;\n}\n\n/**\n * finds the max value of all of the bars in the chart and returns that value multiplied by 1.2\n * in order to create a buffer for the max value of the chart\n * @param { Data['data'] } data - bar chart data\n * @param { (keyof IChartKeys)[] } keys - the keys that are used in the data\n * @return { number } - returns the max value of all bars multiplied by 1.2\n */\nexport function findMaxValueFromBarChartData(\n data: Data['data'],\n keys: (keyof IChartKeys)[]\n): number {\n const values = data.map((bar) =>\n keys\n .filter(\n (key) => bar.hasOwnProperty(key) && !Number.isNaN((bar as Record)[key])\n )\n .map((key) => (bar as Record)[key])\n .reduce((val, acc) => val + acc, 0)\n );\n\n return Math.max(...values) * 1.2;\n}\n\nexport const ResponsiveBarChart = ({\n data,\n colors = { scheme: 'nivo' },\n keys,\n xAxisDates,\n axisLeft,\n tooltip,\n}: IDataProps): JSX.Element => {\n return (\n '',\n }}\n legends={[barLegends]}\n tooltip={tooltip}\n />\n );\n};\n","// documentation for nivo rocks: https://nivo.rocks/line/\nimport React from 'react';\n\nimport { AxisProps } from '@nivo/axes';\nimport { OrdinalColorsInstruction } from '@nivo/colors';\nimport { Datum, LineSvgProps, ResponsiveLine, Serie, SliceTooltip } from '@nivo/line';\n\nimport { lineLegends } from '@app/common/constants';\n\ninterface IDataProps {\n data: Serie[];\n colors?: OrdinalColorsInstruction; // string[] or {scheme: 'nivo'}\n xAxisDates: string;\n axisLeft?: AxisProps;\n sliceTooltip?: SliceTooltip;\n propOverrides?: Partial;\n}\n\n/*\n * finds the max value of all of the lines in the chart and returns that value multiplied by 1.2\n * in order to create a buffer for the max value of the chart\n * @param { Serie[] } data - line chart data\n * @return { number } - returns the max value of all lines multiplied by 1.2\n */\nexport function findMaxValueFromLineChartData(data: Serie[]): number {\n let max: number = -1;\n data.forEach((line: Serie) => {\n line.data.forEach((point: Datum) => {\n if (point.y && point.y > max) {\n max = point.y as number;\n }\n });\n });\n\n return max * 1.2;\n}\n\nexport const ResponsiveLineChart = ({\n data,\n colors = { scheme: 'nivo' }, // default set to nivo,\n xAxisDates,\n axisLeft,\n sliceTooltip,\n propOverrides,\n}: IDataProps): JSX.Element => {\n return (\n '',\n }}\n useMesh={true}\n legends={[lineLegends]}\n enableSlices=\"x\"\n sliceTooltip={sliceTooltip}\n {...(propOverrides ?? {})}\n />\n );\n};\n","import * as React from 'react';\nimport './styles/sectionHeaderStyles.scss';\n\ninterface ITitleProps {\n title: string;\n id: string;\n}\n\n// TODO DELETE [WS-10319] replace with PageHeader\nclass SectionHeader extends React.PureComponent {\n public render(): JSX.Element {\n let { title, id } = this.props;\n\n return (\n
    \n
    \n

    \n {title}\n

    \n
    \n );\n }\n}\n\nexport { SectionHeader };\n","import * as React from 'react';\n\nimport './styles/subTextStyles.scss';\n\ninterface ITitle {\n className: string;\n title?: string | JSX.Element;\n}\n\nconst SubText = ({ className, title, children }: React.PropsWithChildren): JSX.Element => {\n return
    {title || children}
    ;\n};\n\nexport { SubText };\n","import * as React from 'react';\n\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport Grid from '@mui/material/Grid';\n\n// import Link from '@mui/material/Link';\n\nconst DISMISSED_KEY = 'entry-point-workflow-change-alert-dismissed';\nenum ALERT_TYPES {\n Upcoming = '1',\n Active = '2',\n}\n\nconst alertContent = {\n [ALERT_TYPES.Upcoming]: (\n <>\n \n We are making changes to how you assign progression entry point(s) to game builds!\n \n You will no longer need to go through the trouble of assigning entry point(s) to existing game\n builds; an entry point will be assigned to all active game builds automatically after\n deployment. We will be communicating the specific timeline soon, but wanted to give you a\n heads up in advance and allow you sufficient time to prepare for the upcoming changes.\n \n ),\n [ALERT_TYPES.Active]: (\n <>\n We've implemented changes for progression entry points!\n Now when you create a new entry point, it will be assigned to all active game builds\n automatically after deployment.{/* Learn more about this here. */}\n \n ),\n};\n\nexport const EntryPointWorkflowChangeAlert: React.FunctionComponent> = () => {\n const [isDismissed, setIsDismissed] = React.useState(true);\n\n const alertType = window.appConfig.featureFlags.progressionV3SeasonsEntryPoints\n ? ALERT_TYPES.Active\n : ALERT_TYPES.Upcoming;\n\n React.useEffect(() => {\n const previouslyDismissed = localStorage.getItem(DISMISSED_KEY);\n\n if (previouslyDismissed !== alertType) {\n setIsDismissed(false);\n }\n }, []);\n\n const dismiss = () => {\n setIsDismissed(true);\n localStorage.setItem(DISMISSED_KEY, alertType);\n };\n\n if (isDismissed) {\n return null;\n }\n\n return (\n \n \n {alertContent[alertType]}\n \n \n );\n};\n","import * as React from 'react';\n\nimport { connect } from 'react-redux';\n\nimport { AtomButton } from '@app/common/atoms';\n\nimport { TooltipNoAccess } from '.';\nimport { IRootState } from '../../core/rootReducer';\nimport { GAME_PERMISSIONS } from '../constants';\nimport { IFeature, IGameInfo, IPermissions } from '../interfaces';\n\ndeclare const swal: (param: unknown) => void;\n\nexport interface ISyncButtonProps {\n gameInfo: IGameInfo;\n permissions: IPermissions;\n feature: IFeature;\n}\n\nclass ProductionSyncButton extends React.Component {\n public sync = (id: number): JQuery.jqXHR => {\n let form: FormData = new FormData();\n form.append('id', String(id));\n\n return $.ajax({\n url: `/games/${id}/sync_prod.json`,\n method: 'GET',\n data: form,\n processData: false,\n contentType: false,\n success(): void {\n swal({\n type: 'success',\n title: 'Success!',\n allowOutsideClick: false,\n confirmButtonClass: 'integration-swal-confirm',\n });\n },\n // eslint-disable-next-line\n error(XMLHttpRequest: any, textStatus: string, errorThrown: string): void {\n swal({\n type: 'error',\n title: 'Oh no!',\n // eslint-disable-next-line\n text: XMLHttpRequest.responseJSON.errors,\n allowOutsideClick: false,\n confirmButtonClass: 'integration-swal-confirm',\n });\n },\n });\n };\n\n public handleClick = (): void => {\n swal({\n title: 'Hold Please!',\n html: 'Processing ... ',\n showConfirmButton: false,\n allowOutsideClick: false,\n allowEscapeKey: false,\n });\n\n // performs sync and shows success and error swals.\n void this.sync(this.props.gameInfo.id);\n };\n\n public render(): JSX.Element {\n const { feature, permissions } = this.props;\n\n const isDisabled =\n feature.userRolesU6GameRolesAndPermissions && !permissions[GAME_PERMISSIONS.PUBLISH];\n\n return (\n
    \n \n \n \n
    \n );\n }\n}\n\nexport function mapStateToProps({ gameInfo, permissions, feature }: IRootState): ISyncButtonProps {\n return {\n gameInfo,\n permissions,\n feature,\n };\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nexport const SyncButton: any = connect(mapStateToProps, null)(ProductionSyncButton);\n","import MuiAccordion from '@mui/material/Accordion';\nimport MuiAccordionSummary from '@mui/material/AccordionSummary';\nimport withStyles from '@mui/styles/withStyles';\n\n// accordion without margins\nexport const Accordion = withStyles({\n root: {\n border: '1px solid rgba(0, 0, 0, .125)',\n boxShadow: 'none',\n '&:not(:last-child)': {\n borderBottom: 0,\n },\n '&:before': {\n display: 'none',\n },\n '&$expanded': {\n margin: 0,\n },\n display: 'flex',\n flexDirection: 'column',\n },\n expanded: {\n flexGrow: 1,\n overflow: 'hidden',\n },\n})(MuiAccordion);\n\nexport const AccordionSummary = withStyles({\n root: {\n fontSize: '16px',\n borderBottom: '1px solid rgba(0, 0, 0, .125)',\n marginBottom: -1,\n minHeight: 41,\n '&$expanded': {\n minHeight: 41,\n },\n },\n content: {\n margin: '8px 0',\n '&$expanded': {\n margin: '8px 0',\n },\n },\n expandIcon: {\n padding: 8,\n },\n expanded: {},\n})(MuiAccordionSummary);\n","import React from 'react';\n\nimport Box from '@mui/material/Box';\n\ninterface IProps {\n children: React.ReactNode;\n}\n\nexport const StickyHeader = ({ children }: IProps): JSX.Element => {\n return (\n \n {children}\n \n );\n};\n","export const NUMBER_OF_DAYS_IN_YEAR: number = 365;\n\nexport enum MONTH_NAMES_MMM {\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n}\n\nexport enum MONTH_NAMES_FULL {\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n}\n\nexport enum TIME_IN_MILLISECONDS {\n DAY = 24 * 60 * 60 * 1000,\n HOUR = 60 * 60 * 1000,\n MINUTE = 60 * 1000,\n SECOND = 1000\n}\n\nexport enum TIME_UNIT {\n WEEK = 'week',\n DAY = 'day',\n HOUR = 'hour',\n MINUTE = 'minute',\n SECOND = 'second'\n}\n","import { DISCORD_INVITE_LOCATION } from '../components/DiscordInvite';\n\nconst determineActionPrefix = (actionString: string) => {\n const isStaging = window.location.host !== 'developers.skillz.com';\n\n return isStaging ? `staging_${actionString}` : actionString;\n};\n\n// google analytics event examples are all in snake case with all lower cases\nexport const GOOGLE_ANALYTICS_4 = {\n LANDING_PAGE: {\n CATEGORY: 'landing_page',\n ACTIONS: {\n VIEW: determineActionPrefix('view_landing_page'),\n },\n },\n PUBLISHER: {\n CATEGORY: 'publisher',\n ACTIONS: {\n SIGN_UP: determineActionPrefix('sign_up'),\n FIRST_START_INTEGRATION: determineActionPrefix('first_start_integration'),\n FIRST_SDK_DOWNLOAD: determineActionPrefix('first_sdk_download'),\n FIRST_INTEGRATION_COMPLETE: determineActionPrefix('first_integration_complete'),\n FIRST_UPLOAD_BINARY: determineActionPrefix('first_upload_binary'),\n FIRST_DISTRIBUTION_COMPLETE: determineActionPrefix('first_distribution_complete'),\n },\n },\n USER: {\n CATEGORY: 'user',\n ACTIONS: {\n LEARNING_CENTER_CARD_CLICK: (category: string, name: string) => {\n return determineActionPrefix(\n `lc_${category.replace(/ /g, '_')}_${name.replace(/ /g, '_')}`\n );\n },\n DISCORD_INVITE_CLICK: (location: DISCORD_INVITE_LOCATION) => {\n return determineActionPrefix(`discord_${location}_invite`);\n },\n QUANTUM_PACKAGE_DOWNLOAD: (location: string) => {\n return determineActionPrefix(`quantum_package_${location}`);\n },\n },\n },\n};\n","export enum ANALYTICS_ATTRIBUTES {\n REVENUE = 'Revenue',\n ESTIMATED_REVENUE = 'Estimated Revenue',\n DAU = 'DAU',\n PAYING_DAU = 'Paying DAU',\n SKILLZ_INSTALLS = 'Skillz Installs',\n INSTALLS = 'Installs',\n D1_RETENTION = 'D1 Retention',\n D7_RETENTION = 'D7 Retention',\n D30_RETENTION = 'D30 Retention',\n P1_RETENTION = 'P1 Retention',\n P7_RETENTION = 'P7 Retention',\n P30_RETENTION = 'P30 Retention',\n INSTALLS_TO_D = 'I to D',\n INSTALLS_TO_DEPOSIT = 'Installs to Deposit',\n ABORT_RATE = 'Abort Rate',\n ABORT_EVENTS_INTENTIONAL = 'Intentional',\n ABORT_EVENTS_UNINTENTIONAL = 'Unintentional',\n ABORT_EVENTS_BACKGROUNDED = 'Backgrounded',\n ABORT_EVENTS_TERMINATED = 'Terminated',\n ABORT_EVENTS_TIMEOUT = 'Timeout',\n ABORT_EVENTS_UNKNOWN = 'Unknown',\n ACCELERATE_INSTALLS = 'Accelerate Installs',\n DAU_OF_MAU = 'DAU/MAU',\n GAMES_PER_USER = 'Games Per DAU',\n CASH_GAMES_PER_USER = 'Paid Games per Paying DAU',\n GAMES_PLAYED = 'Games Played',\n PRO_GAMES_PLAYED = 'Pro Games Played',\n Z_GAMES_PLAYED = 'Z Games Played',\n D1 = 'D1',\n D7 = 'D7',\n D30 = 'D30',\n P1 = 'p1',\n P7 = 'p7',\n P30 = 'p30',\n INSTALLS_TO_1Z = 'I to 1Z',\n INSTALLS_TO_2Z = 'I to 2Z',\n INSTALLS_TO_3Z = 'I to 3Z',\n ARPPU = 'Avg Rev/Paying DAU',\n ARPDAU = 'Avg Rev/DAU',\n EST_ARPPU = 'Est Avg Rev/Paying DAU',\n EST_ARPDAU = 'Est Avg Rev/DAU',\n NEW_PAYING_USERS = 'NPU',\n COMPLETION_1Z = 'Completion 1Z',\n COMPLETION_2Z = 'Completion 2Z',\n COMPLETION_3Z = 'Completion 3Z',\n DAY_1_Z_GAMES_PER_INSTALL = 'Day 1 Z Games per Install',\n IN_BAND_WIN_RATE = 'In-Band Win Rate',\n ENTRY_FEE = 'Entry Fee',\n ENTRY_FEE_PER_PRO_DAU = 'Entry Fee per Pro DAU',\n PRO_DAU = 'Pro DAU',\n FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK = 'New Paying Users',\n PRO_GAMES_PER_PRO_DAU = 'Pro Games Per Pro DAU',\n NEW_PRO_USERS = 'New Pro Playing Users',\n PAYER_PRO_RETENTION_D1 = 'Paying User Retention D1',\n PAYER_PRO_RETENTION_D7 = 'Paying User Retention D7',\n PAYER_PRO_RETENTION_D30 = 'Paying User Retention D30',\n RETENTION_D1 = 'Retention D1',\n RETENTION_D7 = 'Retention D7',\n RETENTION_D30 = 'Retention D30',\n INSTALLS_Z1 = 'Installs to 1Z',\n INSTALLS_Z2 = 'Installs to 2Z',\n INSTALLS_Z3 = 'Installs to 3Z',\n ENTRY_FEE_D1 = 'Entry Fee D1',\n ENTRY_FEE_D7 = 'Entry Fee D7',\n ENTRY_FEE_D30 = 'Entry Fee D30',\n ENTRY_FEE_LIFETIME = 'Entry Fee Lifetime',\n ARPPU_DEV_ANALYTICS = 'Avg Rev/Pro DAU',\n EST_ARPPU_DEV_ANALYTICS = 'Est Avg Rev/Pro DAU',\n}\n\nexport enum MATH_OPERATIONS {\n SUM = 'sum',\n AVERAGE = 'average',\n AVG_OVER_TOTAL_DAYS = 'averageOverDays',\n}\n\nexport enum ANALYTICS_DB_ATTRIBUTES {\n GROSS_REVENUE = 'grossRevenue',\n ESTIMATED_GROSS_REVENUE = 'estimatedGrossRevenue',\n D1 = 'd1',\n D7 = 'd7',\n D30 = 'd30',\n P1 = 'p1',\n P7 = 'p7',\n P30 = 'p30',\n SKILLZ_DAU = 'skillzDau',\n SKILLZ_PDAU = 'skillzPayingDau',\n INSTALLS_TO_1Z = 'installsTo1z',\n INSTALLS_TO_2Z = 'installsTo2z',\n INSTALLS_TO_3Z = 'installsTo3z',\n INSTALLS_TO_D = 'installsToDeposit',\n ABORT_RATE = 'abortRate',\n ABORT_EVENTS_INTENTIONAL = 'intentionalAbortRate',\n ABORT_EVENTS_UNINTENTIONAL = 'unintentionalAbortRate',\n ABORT_EVENTS_BACKGROUNDED = 'backgroundedAbortRate',\n ABORT_EVENTS_TERMINATED = 'terminatedAbortRate',\n ABORT_EVENTS_TIMEOUT = 'timeoutAbortRate',\n ABORT_EVENTS_UNKNOWN = 'unknownAbortRate',\n ACCELERATE_INSTALLS = 'accelerateInstalls',\n SKILLZ_INSTALLS = 'skillzInstalls',\n DAU_OF_MAU = 'dauOfMau',\n GAMES_PER_USER = 'gamesPerPlayer',\n CASH_GAMES_PER_USER = 'proGamesPerPlayer',\n GAMES_PLAYED = 'gamesPlayed',\n ARPPU = 'skillzArppu',\n ARPDAU = 'skillzArpdau',\n EST_ARPPU = 'estSkillzArppu',\n EST_ARPDAU = 'estSkillzArpdau',\n PRO_GAMES_PLAYED = 'proGamesPlayed',\n Z_GAMES_PLAYED = 'zGamesPlayed',\n NEW_PAYING_USERS = 'newProPlayers',\n COMPLETION_1Z = 'mmp1zCompletion',\n COMPLETION_2Z = 'mmp2zCompletion',\n COMPLETION_3Z = 'mmp3zCompletion',\n DAY_1_Z_GAMES_PER_INSTALL = 'd1ZMmpTournamentsPerMmpInstalls',\n IN_BAND_WIN_RATE = 'inBandWinRatePerc',\n ENTRY_FEE = 'entryFee',\n ENTRY_FEE_PER_PRO_DAU = 'entryFeePerProDau',\n PRO_DAU = 'proDau',\n FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK = 'firstTimePayersToSkillzNetwork',\n PRO_GAMES_PER_PRO_DAU = 'proGamesPerProDau',\n NEW_PRO_USERS = 'newProUsers',\n PAYER_PRO_RETENTION_D1 = 'payerProRetentionD1',\n PAYER_PRO_RETENTION_D7 = 'payerProRetentionD7',\n PAYER_PRO_RETENTION_D30 = 'payerProRetentionD30',\n INSTALLS_TO_DEPOSIT = 'kpiInstallsToDeposit',\n INSTALLS = 'installs',\n INSTALLS_Z1 = 'installsZ1',\n INSTALLS_Z2 = 'installsZ2',\n INSTALLS_Z3 = 'installsZ3',\n RETENTION_D1 = 'retentionD1',\n RETENTION_D7 = 'retentionD7',\n RETENTION_D30 = 'retentionD30',\n ENTRY_FEE_D1 = 'entryFeeD1',\n ENTRY_FEE_D7 = 'entryFeeD7',\n ENTRY_FEE_D30 = 'entryFeeD30',\n ENTRY_FEE_LIFETIME = 'entryFeeLifetime',\n ARPPU_DEV_ANALYTICS = 'skillzArppu',\n EST_ARPPU_DEV_ANALYTICS = 'estSkillzArppu',\n ESTIMATED_REVENUE = 'estimatedRevenue',\n}\n\nexport const ANALYTICS_KEY_ATTRIBUTES: {\n [ANALYTICS_ATTRIBUTES: string]: ANALYTICS_DB_ATTRIBUTES;\n} = {\n [ANALYTICS_ATTRIBUTES.SKILLZ_INSTALLS]: ANALYTICS_DB_ATTRIBUTES.SKILLZ_INSTALLS,\n [ANALYTICS_ATTRIBUTES.DAU]: ANALYTICS_DB_ATTRIBUTES.SKILLZ_DAU,\n [ANALYTICS_ATTRIBUTES.PAYING_DAU]: ANALYTICS_DB_ATTRIBUTES.SKILLZ_PDAU,\n [ANALYTICS_ATTRIBUTES.DAU_OF_MAU]: ANALYTICS_DB_ATTRIBUTES.DAU_OF_MAU,\n [ANALYTICS_ATTRIBUTES.D1]: ANALYTICS_DB_ATTRIBUTES.D1,\n [ANALYTICS_ATTRIBUTES.D7]: ANALYTICS_DB_ATTRIBUTES.D7,\n [ANALYTICS_ATTRIBUTES.D30]: ANALYTICS_DB_ATTRIBUTES.D30,\n [ANALYTICS_ATTRIBUTES.INSTALLS_TO_1Z]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_TO_1Z,\n [ANALYTICS_ATTRIBUTES.INSTALLS_TO_2Z]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_TO_2Z,\n [ANALYTICS_ATTRIBUTES.INSTALLS_TO_3Z]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_TO_3Z,\n [ANALYTICS_ATTRIBUTES.INSTALLS_TO_D]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_TO_D,\n [ANALYTICS_ATTRIBUTES.ABORT_RATE]: ANALYTICS_DB_ATTRIBUTES.ABORT_RATE,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_UNKNOWN]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_UNKNOWN,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_TIMEOUT]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_TIMEOUT,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_TERMINATED]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_TERMINATED,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_BACKGROUNDED]:\n ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_BACKGROUNDED,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_UNINTENTIONAL]:\n ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_UNINTENTIONAL,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_INTENTIONAL]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_INTENTIONAL,\n [ANALYTICS_ATTRIBUTES.ACCELERATE_INSTALLS]: ANALYTICS_DB_ATTRIBUTES.ACCELERATE_INSTALLS,\n [ANALYTICS_ATTRIBUTES.P1]: ANALYTICS_DB_ATTRIBUTES.P1,\n [ANALYTICS_ATTRIBUTES.P7]: ANALYTICS_DB_ATTRIBUTES.P7,\n [ANALYTICS_ATTRIBUTES.P30]: ANALYTICS_DB_ATTRIBUTES.P30,\n [ANALYTICS_ATTRIBUTES.REVENUE]: ANALYTICS_DB_ATTRIBUTES.GROSS_REVENUE,\n [ANALYTICS_ATTRIBUTES.ESTIMATED_REVENUE]: ANALYTICS_DB_ATTRIBUTES.ESTIMATED_REVENUE,\n [ANALYTICS_ATTRIBUTES.GAMES_PER_USER]: ANALYTICS_DB_ATTRIBUTES.GAMES_PER_USER,\n [ANALYTICS_ATTRIBUTES.CASH_GAMES_PER_USER]: ANALYTICS_DB_ATTRIBUTES.CASH_GAMES_PER_USER,\n [ANALYTICS_ATTRIBUTES.GAMES_PLAYED]: ANALYTICS_DB_ATTRIBUTES.GAMES_PLAYED,\n [ANALYTICS_ATTRIBUTES.PRO_GAMES_PLAYED]: ANALYTICS_DB_ATTRIBUTES.PRO_GAMES_PLAYED,\n [ANALYTICS_ATTRIBUTES.Z_GAMES_PLAYED]: ANALYTICS_DB_ATTRIBUTES.Z_GAMES_PLAYED,\n [ANALYTICS_ATTRIBUTES.ARPPU]: ANALYTICS_DB_ATTRIBUTES.ARPPU,\n [ANALYTICS_ATTRIBUTES.ARPDAU]: ANALYTICS_DB_ATTRIBUTES.ARPDAU,\n [ANALYTICS_ATTRIBUTES.EST_ARPPU]: ANALYTICS_DB_ATTRIBUTES.EST_ARPPU,\n [ANALYTICS_ATTRIBUTES.EST_ARPDAU]: ANALYTICS_DB_ATTRIBUTES.EST_ARPDAU,\n [ANALYTICS_ATTRIBUTES.NEW_PAYING_USERS]: ANALYTICS_DB_ATTRIBUTES.NEW_PAYING_USERS,\n [ANALYTICS_ATTRIBUTES.COMPLETION_1Z]: ANALYTICS_DB_ATTRIBUTES.COMPLETION_1Z,\n [ANALYTICS_ATTRIBUTES.COMPLETION_2Z]: ANALYTICS_DB_ATTRIBUTES.COMPLETION_2Z,\n [ANALYTICS_ATTRIBUTES.COMPLETION_3Z]: ANALYTICS_DB_ATTRIBUTES.COMPLETION_3Z,\n [ANALYTICS_ATTRIBUTES.DAY_1_Z_GAMES_PER_INSTALL]:\n ANALYTICS_DB_ATTRIBUTES.DAY_1_Z_GAMES_PER_INSTALL,\n [ANALYTICS_ATTRIBUTES.IN_BAND_WIN_RATE]: ANALYTICS_DB_ATTRIBUTES.IN_BAND_WIN_RATE,\n [ANALYTICS_ATTRIBUTES.ENTRY_FEE]: ANALYTICS_DB_ATTRIBUTES.ENTRY_FEE,\n [ANALYTICS_ATTRIBUTES.ENTRY_FEE_PER_PRO_DAU]: ANALYTICS_DB_ATTRIBUTES.ENTRY_FEE_PER_PRO_DAU,\n [ANALYTICS_ATTRIBUTES.PRO_DAU]: ANALYTICS_DB_ATTRIBUTES.PRO_DAU,\n [ANALYTICS_ATTRIBUTES.FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK]:\n ANALYTICS_DB_ATTRIBUTES.FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK,\n [ANALYTICS_ATTRIBUTES.NEW_PRO_USERS]: ANALYTICS_DB_ATTRIBUTES.NEW_PRO_USERS,\n [ANALYTICS_ATTRIBUTES.PRO_GAMES_PER_PRO_DAU]: ANALYTICS_DB_ATTRIBUTES.PRO_GAMES_PER_PRO_DAU,\n [ANALYTICS_ATTRIBUTES.PAYER_PRO_RETENTION_D1]: ANALYTICS_DB_ATTRIBUTES.PAYER_PRO_RETENTION_D1,\n [ANALYTICS_ATTRIBUTES.PAYER_PRO_RETENTION_D7]: ANALYTICS_DB_ATTRIBUTES.PAYER_PRO_RETENTION_D7,\n [ANALYTICS_ATTRIBUTES.PAYER_PRO_RETENTION_D30]: ANALYTICS_DB_ATTRIBUTES.PAYER_PRO_RETENTION_D30,\n [ANALYTICS_ATTRIBUTES.INSTALLS_TO_DEPOSIT]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_TO_DEPOSIT,\n [ANALYTICS_ATTRIBUTES.INSTALLS]: ANALYTICS_DB_ATTRIBUTES.INSTALLS,\n [ANALYTICS_ATTRIBUTES.INSTALLS_Z1]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_Z1,\n [ANALYTICS_ATTRIBUTES.INSTALLS_Z2]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_Z2,\n [ANALYTICS_ATTRIBUTES.INSTALLS_Z3]: ANALYTICS_DB_ATTRIBUTES.INSTALLS_Z3,\n [ANALYTICS_ATTRIBUTES.RETENTION_D1]: ANALYTICS_DB_ATTRIBUTES.RETENTION_D1,\n [ANALYTICS_ATTRIBUTES.RETENTION_D7]: ANALYTICS_DB_ATTRIBUTES.RETENTION_D7,\n [ANALYTICS_ATTRIBUTES.RETENTION_D30]: ANALYTICS_DB_ATTRIBUTES.RETENTION_D30,\n [ANALYTICS_ATTRIBUTES.ENTRY_FEE_D1]: ANALYTICS_DB_ATTRIBUTES.ENTRY_FEE_D1,\n [ANALYTICS_ATTRIBUTES.ENTRY_FEE_D7]: ANALYTICS_DB_ATTRIBUTES.ENTRY_FEE_D7,\n [ANALYTICS_ATTRIBUTES.ENTRY_FEE_D30]: ANALYTICS_DB_ATTRIBUTES.ENTRY_FEE_D30,\n [ANALYTICS_ATTRIBUTES.ENTRY_FEE_LIFETIME]: ANALYTICS_DB_ATTRIBUTES.ENTRY_FEE_LIFETIME,\n [ANALYTICS_ATTRIBUTES.EST_ARPPU_DEV_ANALYTICS]: ANALYTICS_DB_ATTRIBUTES.EST_ARPPU_DEV_ANALYTICS,\n [ANALYTICS_ATTRIBUTES.ARPPU_DEV_ANALYTICS]: ANALYTICS_DB_ATTRIBUTES.ARPPU_DEV_ANALYTICS,\n};\n\nexport enum ANALYTIC_DATA_FORMAT_TYPES {\n CURRENCY = 'currency',\n WHOLE_NUMBER = 'wholeNumber',\n WHOLE_NUMBER_FROM_DECIMAL = 'wholeNumberFromDecimal',\n DECIMAL = 'decimal',\n PERCENTAGE = 'percentage',\n}\n\nexport enum ANALYTIC_DATA_BENCHMARKS {\n GAMES_PER_DAU = 10,\n INSTALLS_TO_1Z = 90,\n}\n\nexport enum ANALYTICS_BENCHMARK_LABELS {\n BENCHMARK = 'Benchmark',\n}\n","import React from 'react';\n\nimport { AxisProps, TickFormatter } from '@nivo/axes';\nimport { LegendProps } from '@nivo/legends';\n\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { ANALYTICS_ATTRIBUTES, ANALYTICS_DB_ATTRIBUTES } from '@app/common/constants';\nimport { yAxisLabelFormatter } from '@app/common/helpers';\nimport {\n ICardProps,\n IChartContentLoaderDefaultProps,\n IChartKeys,\n TColorKey,\n} from '@app/common/interfaces';\nimport variables from '@app/core/variables.scss';\n\nexport enum CHART_TYPE {\n LINE = 'line',\n BAR = 'bar',\n}\n\nexport enum ANALYTICS_CHART_TITLES {\n REVENUE = 'Estimated Revenue',\n INSTALLS = 'Installs',\n DAU = 'Daily Active Users',\n RETENTION = 'Retention',\n PAYING_RETENTION = 'Paying User Retention',\n DAU_OF_MAU = 'DAU/MAU',\n GAMES_PER_USER = 'Games Per DAU',\n GAMES_PLAYED = 'Games Played',\n ARPPU_ARPDAU = 'Revenue Per User',\n NEW_PAYING_USERS = 'New Paying Users',\n Z_COMPLETION = 'Z Game Completion',\n DAY_1_Z_GAMES_PER_INSTALL = 'Day 1 Z Games per Install',\n ABORT_EVENTS = 'Abort Type Distribution',\n IN_BAND_WIN_RATE = 'In-Band Win Rate',\n ENTRY_FEE = 'Entry Fee',\n ENTRY_FEE_PER_PRO_DAU = 'Entry Fee per Pro DAU',\n FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK = 'New Paying Users',\n INSTALLS_TO_DEPOSIT = 'Installs to Deposit',\n NEW_PRO_USERS = 'New Pro Playing Users',\n INSTALLS_TO_Z = 'Installs to Z',\n INSTALLS_TO_2Z = 'Installs to 2Z',\n RETENTION_D1 = 'D1 Retention',\n RETENTION_D7 = 'D7 Retention',\n COHORT_PERFORMANCE = 'Entry Fee by Install Cohort',\n}\n\nexport const ANALYTICS_CHART_TOOLTIPS = {\n REVENUE: (\n <>\n An estimate of your daily game revenue calculated from actual daily Entry Fees and your\n game's revenue share percentage at the time of calculation. Estimated Revenue is only\n available from May 1st, 2023 under the new revenue model. \n \n You will see $0 for any date prior to May 1st, 2023\n \n \n ),\n SKILLZ_INSTALLS: 'Count of unique players who have signed into Skillz through your game',\n INSTALLS_TO_D: 'The percentage of installs that have made at least one deposit',\n ABORT_RATE: 'The percentage of your games that end in an abort',\n ABORT_EVENTS: (\n <>\n Intentional: user manually quit the game
    \n Unintentional: the game crashed due to functional issues
    \n Backgrounded: user put the game to the background which is then force closed
    \n Terminated: user manually force quit the game when frozen
    \n Timeout: user started the game but did not report a score within 60 minutes\n \n ),\n IN_BAND_WIN_RATE: (\n <>\n Percentage of users with a win rate between 40% and 60% in their last 25 games
    \n Note: 40%-60% is the win rate band that indicates optimal user experience. Successful games at\n Skillz typically has a in-band rate over 65%\n \n ),\n DAU: 'Count of unique players each day who have played a tournament in your game',\n DAU_OF_MAU:\n 'The ratio of Daily Active Users to Monthly Active Users. Useful to indicate how engaged your user are',\n GAMES_PER_USER: 'Average number of tournaments played in your game per daily active user',\n GAMES_PLAYED: 'Number of tournaments played in your game',\n ARPPU_ARPDAU:\n 'An estimate of your gross revenue divided by the unique number of\\\n users who played a tournament each day',\n Z_COMPLETION: 'The % of users who completed at least X games after installing',\n DAY_1_Z_GAMES_PER_INSTALL:\n 'The average number of Z games a new install plays in their first 24 hours on the system',\n ENTRY_FEE: 'Total amount paid by pro users to enter and play pro tournaments in your game',\n ENTRY_FEE_PER_PRO_DAU:\n 'Total amount of entry fees divided by the unique number of users who played a pro tournament on that day',\n FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK:\n 'Count of unique users who made their first ever deposit with Skillz in any game, and then played their first pro tournament through your game',\n NEW_PRO_USERS:\n \"Count of unique users who have played their first pro tournament in your game. Note: If viewing all games, a user's first pro tournament will be counted for each of your games they’ve played pro in\",\n PAYING_USER_RETENTION:\n 'Of the users who first deposited in Skillz’s system on a particular day, the percentage that play a pro tournament in your game N days after making their first deposit. Note that users first deposited on 1/1 will not have D7 paying retention data until 1/8.',\n INSTALLS_TO_DEPOSIT:\n \"The percentage of installs that made their first deposit in Skillz's system through your game\",\n INSTALLS:\n 'Count of unique users who installed your game on their system and signed into Skillz through your game',\n INSTALLS_TO_Z: 'The percentage of installs that enter their Nth Z tournament',\n USER_RETENTION:\n 'Of the cohort of users who installed on a particular day, the percentage that play a tournament in your game N days after installing. Note that users installed on 1/1 will not have D7 retention data until 1/8',\n COHORT_PERFORMANCE:\n 'Total entry fees paid by the cohort of users who installed your game on a particular day, within N days after installing ',\n};\n\nexport const ANALYTICS_CHART_TOOLTIPS_OLD = {\n INSTALLS_TO_Z: 'The percentage of installs that enter their nth Z match',\n RETENTION: 'The percentage of users that play a tournament in your game N days after installing',\n PAYING_RETENTION:\n 'The percentage of paying users that play a cash tournament in your game N days after their first cash tournament',\n NEW_PAYING_USERS:\n \"Count of unique players who have played their first cash tournament in your game. Note: If viewing all games, a player's first cash game will be counted for each of your games they've played cash in\",\n};\n\nexport const ANALYTICS_CHART_TOOLTIPS_PRE_PRIZE = {\n INSTALLS_TO_Z: 'The % of users who entered at least X games after installing',\n RETENTION:\n 'Among the players who installed your game on a particular day, the percentage that play a tournament N days after the install date. For example, for the player cohort installed on 1/1, D7 retention is the percentage of players play a tournament on 1/8.',\n PAYING_RETENTION:\n 'Among the players who first deposited in your game on a particular day, the percentage that play a cash tournament N days after the install date. For example, for the player cohort first deposited on 1/1, D7 cash retention is the percentage of players play a cash tournament on 1/8.',\n};\n\nexport const legends: LegendProps = {\n anchor: 'top-right',\n direction: 'column',\n justify: false,\n translateY: -44,\n translateX: 0,\n itemWidth: 58,\n itemHeight: 10,\n itemsSpacing: 8,\n symbolSize: 12,\n symbolShape: 'circle',\n itemDirection: 'right-to-left',\n effects: [\n {\n on: 'hover',\n style: {\n itemBackground: 'rgba(0, 0, 0, .03)',\n itemOpacity: 1,\n },\n },\n ],\n};\n\nexport const barLegends: { dataFrom: 'indexes' | 'keys' } & LegendProps = {\n ...cloneDeep(legends),\n ...{ dataFrom: 'keys' },\n};\n\nexport const lineLegends: LegendProps = cloneDeep(legends);\n\nexport const horizontalLegends: LegendProps = {\n ...cloneDeep(legends),\n ...{ direction: 'row', itemWidth: 100, itemDirection: 'left-to-right' },\n};\n\nexport const Z_COMPLETION_Y_AXIS_PROPERTIES: AxisProps = {\n orient: 'left',\n legendOffset: 29,\n legendPosition: 'middle',\n format: ((value: string): string => `${Math.abs(parseFloat(value))}%`) as TickFormatter,\n};\n\nexport const DAY_1_Z_GAMES_PER_INSTALL_PROPERTIES: AxisProps = {\n orient: 'left',\n legendOffset: 29,\n legendPosition: 'middle',\n format: ((value: number): string => `${yAxisLabelFormatter(value)}`) as TickFormatter,\n};\n\nexport const GENERIC_Y_AXIS_PROPERTIES: AxisProps = {\n format: ((value: number): string => yAxisLabelFormatter(value)) as TickFormatter,\n};\n\nexport const WHOLE_NUMBER_Y_AXIS_PROPERTIES: AxisProps = {\n format: ((value: number) => Math.floor(value) === value && value) as TickFormatter,\n};\n\nexport const USD_Y_AXIS_PROPERTIES: AxisProps = {\n orient: 'left',\n legendOffset: 29,\n legendPosition: 'middle',\n format: ((value: number): string => `$${yAxisLabelFormatter(value)}`) as TickFormatter,\n};\n\nexport const PERCENTAGE_Y_AXIS_PROPERTIES: AxisProps = {\n orient: 'left',\n legendOffset: 29,\n legendPosition: 'middle',\n format: ((value: string): string =>\n Math.abs(parseFloat(value)) <= 100 ? `${Math.abs(parseFloat(value))}%` : '') as TickFormatter,\n};\n\nexport const chartDefaultProps: IChartContentLoaderDefaultProps = {\n secondaryColor: '#b3b3b3',\n speed: 2,\n};\n\nexport const CHART_COLORS: TColorKey = {\n PRIMARY: [\n variables.colorFirst,\n variables.colorSecond,\n variables.colorThird,\n variables.colorFourth,\n variables.colorFifth,\n variables.colorSixth,\n ],\n LIGHT: [\n variables.colorFirstEstimated,\n variables.colorSecondEstimated,\n variables.colorThirdEstimated,\n variables.colorFourthEstimated,\n variables.colorFifthEstimated,\n variables.colorSixthEstimated,\n ],\n};\n\nexport const RETENTION_WITH_BENCHMARK: TColorKey = {\n PRIMARY: [variables.colorBrandBlue, variables.colorSecond, variables.colorThird, '#b6bdf3'],\n LIGHT: [],\n};\n\nexport const SINGLE_LINE_WITH_BENCHMARK: TColorKey = {\n PRIMARY: [variables.colorBrandBlue, '#b6bdf3'],\n LIGHT: [],\n};\n\nexport const DOUBLE_LINE_WITH_BENCHMARK: TColorKey = {\n PRIMARY: [variables.colorBrandBlue, variables.colorSecond, '#b6bdf3'],\n LIGHT: [],\n};\n\nexport const CARD_PROPS: ICardProps = {\n raised: true,\n elevation: 1,\n style: {\n marginTop: 0,\n marginBottom: 0,\n padding: 32,\n overflow: 'visible',\n },\n};\n\nexport const RETENTION_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.D1]: ANALYTICS_DB_ATTRIBUTES.D1,\n [ANALYTICS_ATTRIBUTES.D7]: ANALYTICS_DB_ATTRIBUTES.D7,\n [ANALYTICS_ATTRIBUTES.D30]: ANALYTICS_DB_ATTRIBUTES.D30,\n};\n\nexport const PAYING_RETENTION_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.P1]: ANALYTICS_DB_ATTRIBUTES.P1,\n [ANALYTICS_ATTRIBUTES.P7]: ANALYTICS_DB_ATTRIBUTES.P7,\n [ANALYTICS_ATTRIBUTES.P30]: ANALYTICS_DB_ATTRIBUTES.P30,\n};\n\nexport const ABORT_RATE_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.ABORT_RATE]: ANALYTICS_DB_ATTRIBUTES.ABORT_RATE,\n};\n\nexport const ABORT_EVENTS_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_UNKNOWN]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_UNKNOWN,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_TIMEOUT]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_TIMEOUT,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_TERMINATED]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_TERMINATED,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_BACKGROUNDED]:\n ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_BACKGROUNDED,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_UNINTENTIONAL]:\n ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_UNINTENTIONAL,\n [ANALYTICS_ATTRIBUTES.ABORT_EVENTS_INTENTIONAL]: ANALYTICS_DB_ATTRIBUTES.ABORT_EVENTS_INTENTIONAL,\n};\n\nexport const IN_BAND_WIN_RATE_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.IN_BAND_WIN_RATE]: ANALYTICS_DB_ATTRIBUTES.IN_BAND_WIN_RATE,\n};\n\nexport const Z_COMPLETION_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.COMPLETION_1Z]: ANALYTICS_DB_ATTRIBUTES.COMPLETION_1Z,\n [ANALYTICS_ATTRIBUTES.COMPLETION_2Z]: ANALYTICS_DB_ATTRIBUTES.COMPLETION_2Z,\n [ANALYTICS_ATTRIBUTES.COMPLETION_3Z]: ANALYTICS_DB_ATTRIBUTES.COMPLETION_3Z,\n};\n\nexport const DAY_1_Z_GAMES_PER_INSTALL_KEYS: IChartKeys = {\n [ANALYTICS_ATTRIBUTES.DAY_1_Z_GAMES_PER_INSTALL]:\n ANALYTICS_DB_ATTRIBUTES.DAY_1_Z_GAMES_PER_INSTALL,\n};\n","export enum PAGE_NAMES {\n INTRODUCTION = 'introduction',\n GAME_INFO = 'game_information',\n SKILLZ_SDK = 'skillz_sdk',\n FAIRNESS = 'fairness',\n SDK_THEME = 'sdk_theme',\n TOURNAMENTS = 'tournaments',\n VIRTUAL_CURRENCY = 'virtual_currency',\n APPLE_PAY = 'apple_pay',\n DEEP_LINKING = 'deep_linking',\n PUSH_NOTIFICATIONS = 'push_notifications',\n SINGLE_SIGN_ON = 'single_sign_on',\n UPLOAD_BINARY = 'upload_binary',\n VERIFY_CONFIGURATION = 'verify_configuration',\n PUBLISH_GAME = 'publish_game',\n NEXT_STEPS = 'next_steps',\n ENABLE_PRIZES = 'enable_real_prizes',\n USERS = 'users',\n LANDING_PAGE = '',\n DASHBOARD = 'dashboard',\n SDK_DOWNLOADS = 'downloads',\n SUPPORT_PAGE = 'support',\n ANALYTICS = 'analytics',\n MANAGE_ACCOUNT = 'manage_accounts',\n STATEMENTS = 'statements',\n GAME_MANAGEMENT = 'games', // TODO change to game_management\n}\n\nexport enum MAINTENANCE_FLOW_PAGE_NAMES {\n GAME_INFORMATION = 'Game Information',\n TOURNAMENTS = 'Tournaments',\n BINARIES = 'Binaries',\n PUSH_NOTIFICATIONS = 'Push Notifications',\n APPLE_PAY = 'Apple Pay',\n THEME = 'Theme',\n DEEP_LINKING = 'Deep Linking',\n SINGLE_SIGN_ON = 'Single Sign On',\n IN_APP_PURCHASE_PACKAGE = 'In App Purchase Packages',\n ANALYTICS = 'Analytics',\n}\n\nexport enum MAINTENANCE_FLOW_PAGE_LINKS {\n GAME_INFORMATION = 'game_information',\n TOURNAMENTS = 'manage_tournaments',\n BINARIES = 'binaries',\n PUSH_NOTIFICATIONS = 'manage_notifications',\n APPLE_PAY = 'apple_pay',\n THEME = 'theme',\n DEEP_LINKING = 'deep_linking',\n SINGLE_SIGN_ON = 'single_sign_on',\n IN_APP_PURCHASE_PACKAGE = 'in_app_purchases',\n ANALYTICS = 'overview',\n}\n\nexport const UPDATED_MAINTENANCE_FLOW_PAGES: string[] = [\n MAINTENANCE_FLOW_PAGE_NAMES.GAME_INFORMATION,\n MAINTENANCE_FLOW_PAGE_NAMES.THEME,\n MAINTENANCE_FLOW_PAGE_NAMES.DEEP_LINKING,\n MAINTENANCE_FLOW_PAGE_NAMES.SINGLE_SIGN_ON,\n MAINTENANCE_FLOW_PAGE_NAMES.BINARIES,\n MAINTENANCE_FLOW_PAGE_NAMES.APPLE_PAY,\n MAINTENANCE_FLOW_PAGE_NAMES.IN_APP_PURCHASE_PACKAGE,\n];\n\nexport const ORDER: string[] = [\n PAGE_NAMES.INTRODUCTION,\n PAGE_NAMES.GAME_INFO,\n PAGE_NAMES.SKILLZ_SDK,\n PAGE_NAMES.FAIRNESS,\n PAGE_NAMES.SDK_THEME,\n PAGE_NAMES.TOURNAMENTS,\n PAGE_NAMES.VIRTUAL_CURRENCY,\n PAGE_NAMES.APPLE_PAY,\n PAGE_NAMES.DEEP_LINKING,\n PAGE_NAMES.PUSH_NOTIFICATIONS,\n PAGE_NAMES.SINGLE_SIGN_ON,\n PAGE_NAMES.UPLOAD_BINARY,\n PAGE_NAMES.VERIFY_CONFIGURATION,\n PAGE_NAMES.PUBLISH_GAME,\n PAGE_NAMES.NEXT_STEPS,\n];\n\nexport const NON_VERIFY_PAGES: string[] = [\n PAGE_NAMES.INTRODUCTION,\n PAGE_NAMES.SKILLZ_SDK,\n PAGE_NAMES.FAIRNESS,\n PAGE_NAMES.PUBLISH_GAME,\n PAGE_NAMES.NEXT_STEPS,\n];\n\nexport const PUBLIC_PRIVATE_ROUTES: string[] = [\n '/learning_center/player_rewards_and_in_game_items_study',\n '/learning_center/progression_and_player_data_case_study',\n '/learning_center/developer_analytics_benchmarks',\n '/learning_center/chat_blog',\n];\n\nexport const PUBLIC_ROUTES: string[] = ['/'];\n\nexport const PUBLIC_FLOWS: string[] = [PAGE_NAMES.USERS];\n\nexport enum VIRTUAL_CURRENCY_OPTIONS {\n CASH_AND_VIRTUAL_CURRENCY = 'cash_and_virtual_currency',\n VIRTUAL_CURRENCY_ONLY = 'virtual_currency_only',\n}\n\nexport enum STATUS {\n NOT_NEEDED = -1,\n NOT_STARTED = 0,\n IN_PROGRESS = 1,\n COMPLETED = 2,\n ACTION_REQUIRED = 3,\n}\n\nexport const LIVE: string = 'live';\nexport const GAMES: string = 'games';\nexport const DATA: string = 'data';\n\nexport enum PLATFORM {\n IOS = 'ios',\n ANDROID = 'android',\n CROSS_PLATFORM = 'cross_platform',\n}\n\nexport enum SORT_DIRECTION {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum RESPONSE_STATUS {\n FORBIDDEN = 'forbidden',\n UNPROCESSABLE_ENTITY = 'unprocessable_entity',\n OK = 'ok',\n}\n\ntype TEnvironment = string | undefined;\n\nexport const ENVIRONMENTS: TEnvironment[] = ['production', 'staging'];\nexport const PRODUCTION_ONLY: TEnvironment[] = ['production'];\nexport const TOURNAMENT_NAME_INVALID_CHARACTERS: RegExp = /[%]/;\n","export enum ENVIRONMENT {\n SANDBOX = 'sandbox',\n PRODUCTION = 'production',\n}\n\nexport enum ENVIRONMENT_TABS {\n PRODUCTION = 0,\n SANDBOX = 1,\n}\n","export enum FORM_ERRORS {\n INVALID_EMAIL = 'Please enter a valid email address',\n INVALID_URL = 'Please enter a valid URL',\n INVALID_LENGTH = 'Must be less than 255 characters',\n FIELD_EMPTY = 'Must be at least one character',\n INVALID_TELEPHONE = 'Please enter a valid phone number',\n COMPANY_NAME_NOT_UNIQUE = 'Company name is taken, enter a different name',\n INVALID_VERSION = 'Please enter a valid version number',\n INVALID_SPECIAL_CHARACTERS = 'Only special characters ._- are allowed',\n HTTPS_REQUIRED = 'https:// url required',\n INVALID_OPTION = 'Please select one of the options',\n INVALID_SPACES = 'Must not include spaces',\n IS_MANDATORY = 'is mandatory',\n INVALID_HEX_CODE = 'Must be a 6 character hex code starting with # (ie: #FFFFFF)',\n}\n\n// this support urls beginning with both http:// and https://\nexport const properUrlFormat: RegExp = /^(?:http(s)?:\\/\\/)?[\\w]+(?:\\.[\\w\\.-]+)+[\\w\\-_~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=]+$/;\n\n// this only supports urls beginning with https://\n// also allows '.' to be in the extension of url\n// eslint-disable-next-line max-len\nexport const properSecuredUrlFormat: RegExp = /^(https:\\/\\/)[\\w]+(?:\\.[\\w\\.-]+)+[\\w\\-_~:/?#[\\]@!\\$&'\\(\\)\\*\\+\\.,;=]+$/;\n\n// this is to test that only allowed characters are in the phone number: 0-9 () , . + - and space\nexport const allowedPhoneNumberCharacters: RegExp = /[^\\d\\(\\)\\,\\.\\+\\-\\s]/;\n\nexport enum RESPONSE_TYPES {\n ERROR = 'error',\n SUCCESS = 'success',\n}\n\nexport const FEEDBACK_MAX_LENGTH = 5000;\n\nexport const ONE_MB_IN_KB = 1024;\n","export const COUNTRIES: string[] = [\n 'United States of America (USA)',\n 'Afghanistan',\n 'Albania',\n 'Algeria',\n 'Andorra',\n 'Angola',\n 'Antigua and Barbuda',\n 'Argentina',\n 'Armenia',\n 'Australia',\n 'Austria',\n 'Azerbaijan',\n 'Bahamas',\n 'Bahrain',\n 'Bangladesh',\n 'Barbados',\n 'Belarus',\n 'Belgium',\n 'Belize',\n 'Benin',\n 'Bhutan',\n 'Bolivia',\n 'Bosnia and Herzegovina',\n 'Botswana',\n 'Brazil',\n 'Brunei',\n 'Bulgaria',\n 'Burkina Faso',\n 'Burundi',\n 'Cabo Verde',\n 'Cambodia',\n 'Cameroon',\n 'Canada',\n 'Central African Republic (CAR)',\n 'Chad',\n 'Chile',\n 'China',\n 'Colombia',\n 'Comoros',\n 'Democratic Republic of theCongo',\n 'Republic of the Congo',\n 'Costa Rica',\n \"Cote d'Ivoire\",\n 'Croatia',\n 'Cyprus',\n 'Czech Republic',\n 'Denmark',\n 'Djibouti',\n 'Dominica',\n 'Dominican Republic',\n 'Ecuador',\n 'Egypt',\n 'El Salvador',\n 'Equatorial Guinea',\n 'Eritrea',\n 'Estonia',\n 'Ethiopia',\n 'Fiji',\n 'Finland',\n 'France',\n 'Gabon',\n 'Gambia',\n 'Georgia',\n 'Germany',\n 'Ghana',\n 'Greece',\n 'Grenada',\n 'Guatemala',\n 'Guinea',\n 'Guinea-Bissau',\n 'Guyana',\n 'Haiti',\n 'Honduras',\n 'Hungary',\n 'Iceland',\n 'India',\n 'Indonesia',\n 'Iraq',\n 'Ireland',\n 'Israel',\n 'Italy',\n 'Jamaica',\n 'Japan',\n 'Jordan',\n 'Kazakhstan',\n 'Kenya',\n 'Kiribati',\n 'Kosovo',\n 'Kuwait',\n 'Kyrgyzstan',\n 'Laos',\n 'Latvia',\n 'Lebanon',\n 'Lesotho',\n 'Liberia',\n 'Libya',\n 'Liechtenstein',\n 'Lithuania',\n 'Luxembourg',\n 'Macedonia',\n 'Madagascar',\n 'Malawi',\n 'Malaysia',\n 'Maldives',\n 'Mali',\n 'Malta',\n 'Marshall Islands',\n 'Mauritania',\n 'Mauritius',\n 'Mexico',\n 'Micronesia',\n 'Moldova',\n 'Monaco',\n 'Mongolia',\n 'Montenegro',\n 'Morocco',\n 'Mozambique',\n 'Myanmar (Burma)',\n 'Namibia',\n 'Nauru',\n 'Nepal',\n 'Netherlands',\n 'New Zealand',\n 'Nicaragua',\n 'Niger',\n 'Nigeria',\n 'Norway',\n 'Oman',\n 'Pakistan',\n 'Palau',\n 'Palestine',\n 'Panama',\n 'Papua New Guinea',\n 'Paraguay',\n 'Peru',\n 'Philippines',\n 'Poland',\n 'Portugal',\n 'Qatar',\n 'Romania',\n 'Russia',\n 'Rwanda',\n 'Saint Kitts and Nevis',\n 'Saint Lucia',\n 'Saint Vincent and the Grenadines',\n 'Samoa',\n 'San Marino',\n 'Sao Tome and Principe',\n 'Saudi Arabia',\n 'Senegal',\n 'Serbia',\n 'Seychelles',\n 'Sierra Leone',\n 'Singapore',\n 'Slovakia',\n 'Slovenia',\n 'Solomon Islands',\n 'Somalia',\n 'South Africa',\n 'South Korea',\n 'South Sudan',\n 'Spain',\n 'Sri Lanka',\n 'Sudan',\n 'Suriname',\n 'Swaziland',\n 'Sweden',\n 'Switzerland',\n 'Taiwan',\n 'Tajikistan',\n 'Tanzania',\n 'Thailand',\n 'Timor-Leste',\n 'Togo',\n 'Tonga',\n 'Trinidad and Tobago',\n 'Tunisia',\n 'Turkey',\n 'Turkmenistan',\n 'Tuvalu',\n 'Uganda',\n 'Ukraine',\n 'United Arab Emirates (UAE)',\n 'United Kingdom (UK)',\n 'Uruguay',\n 'Uzbekistan',\n 'Vanuatu',\n 'Vietnam',\n 'Yemen',\n 'Zambia',\n 'Zimbabwe',\n];\n\nexport const EU_COUNTRIES: string[] = [\n 'Austria',\n 'Belgium',\n 'Bulgaria',\n 'Croatia',\n 'Cyprus',\n 'Czechia',\n 'Czech Republic',\n 'Denmark',\n 'Estonia',\n 'Finland',\n 'France',\n 'Germany',\n 'Greece',\n 'Hungary',\n 'Ireland',\n 'Italy',\n 'Latvia',\n 'Lithuania',\n 'Luxembourg',\n 'Malta',\n 'Netherlands',\n 'Poland',\n 'Portugal',\n 'Romania',\n 'Slovakia',\n 'Slovenia',\n 'Spain',\n 'Sweden',\n 'United Kingdom (UK)',\n];\n","export enum GAME_ATTRIBUTE_NAME {\n TITLE = 'title',\n UPDATED_AT = 'updatedAt'\n}\n\n// TODO change this number if pagination is needed for games\nexport const GAMES_PAGE_PAGE: number = 20000;\n","export enum KEY_CONSTANT {\n ENTER = 'Enter',\n}\n","export enum LOCALE {\n DE = 'de',\n EN = 'en',\n ES = 'es',\n FR = 'fr',\n IT = 'it',\n JA = 'ja',\n PT = 'pt',\n RU = 'ru',\n ZH = 'zh',\n}\n","export enum MATERIAL_UI_VARIANTS {\n OUTLINED = 'outlined',\n STANDARD = 'standard',\n FILLED = 'filled'\n}\n","import { IMenuItem } from '@app/common/atoms';\n\nexport enum MENU_ITEM_ATTRIBUTES {\n ARCHIVE = 'archive',\n UNARCHIVE = 'unarchive',\n MANAGE = 'manage',\n DEFAULT = 'default'\n}\n\nexport enum MENU_ITEM_COPY {\n ARCHIVE = 'Archive',\n UNARCHIVE = 'Unarchive',\n MANAGE = 'Manage game',\n DEFAULT = 'default'\n}\n\nexport const DEFAULT_MENU_ITEMS: IMenuItem[] = [\n {\n attributeName: MENU_ITEM_ATTRIBUTES.DEFAULT,\n itemBody: MENU_ITEM_COPY.DEFAULT,\n handleItemClick: (): void => {\n return;\n }\n }\n];\n","export const GOOGLE_ANALYTICS = {\n HELP_BITS: {\n CATEGORY: 'Help Bits',\n ACTIONS: {\n CLICK_HELP: 'Click Help',\n HELP_BIT_VIEW: 'Help Bit View',\n CLICK_BACK: 'Click Back',\n CLICK_NEXT: 'Click Next',\n CLICK_SEARCH: 'Click Search',\n SEARCH_TERM: 'Search Term',\n },\n },\n ZENDESK_DASHBOARD: {\n CATEGORY: 'Zendesk Dashboard',\n ACTIONS: {\n OPEN_TAB: 'Open Tab',\n OPEN_TICKET: 'Open Ticket',\n CHANGE_PAGE: 'Change Page',\n CHANGE_PAGE_SIZE: 'Change Page Size',\n CHANGE_TICKET: 'Change Ticket',\n CHANGE_CATEGORY: 'Change Category',\n CHANGE_DATE_RANGE: 'Change Date Range',\n },\n },\n};\n","export enum CRUD {\n CREATE = 'create',\n READ = 'read',\n UPDATE = 'update',\n DESTROY = 'destroy',\n}\n\nexport enum RESOURCES {\n PUBLISHER = 'Publisher',\n USER = 'User',\n GAME_CHALLENGE_PROPOSAL = 'GameChallengeProposal',\n GAME = 'Game',\n ANALYTICS = 'DeveloperAnalytic',\n AUDIT = 'CustomAudit',\n}\n\nexport const PUBLISHER_PERMISSIONS = {\n CREATE: `${RESOURCES.PUBLISHER}::${CRUD.CREATE}`,\n READ: `${RESOURCES.PUBLISHER}::${CRUD.READ}`,\n UPDATE: `${RESOURCES.PUBLISHER}::${CRUD.UPDATE}`,\n DESTROY: `${RESOURCES.PUBLISHER}::${CRUD.DESTROY}`,\n};\n\nexport const USER_PERMISSIONS = {\n CREATE: `${RESOURCES.USER}::${CRUD.CREATE}`,\n READ: `${RESOURCES.USER}::${CRUD.READ}`,\n UPDATE: `${RESOURCES.USER}::${CRUD.UPDATE}`,\n DESTROY: `${RESOURCES.USER}::${CRUD.DESTROY}`,\n};\n\nexport const GAME_CHALLENGE_PROPOSAL_PERMISSIONS = {\n CREATE: `${RESOURCES.GAME_CHALLENGE_PROPOSAL}::${CRUD.CREATE}`,\n READ: `${RESOURCES.GAME_CHALLENGE_PROPOSAL}::${CRUD.READ}`,\n UPDATE: `${RESOURCES.GAME_CHALLENGE_PROPOSAL}::${CRUD.UPDATE}`,\n};\n\nexport const GAME_PERMISSIONS = {\n CREATE: `${RESOURCES.GAME}::${CRUD.CREATE}`,\n READ: `${RESOURCES.GAME}::${CRUD.READ}`,\n UPDATE: `${RESOURCES.GAME}::${CRUD.UPDATE}`,\n DESTROY: `${RESOURCES.GAME}::${CRUD.DESTROY}`,\n PUBLISH: `${RESOURCES.GAME}::publish`,\n};\n\nexport const ANALYTICS_PERMISSIONS = {\n READ: `${RESOURCES.ANALYTICS}::${CRUD.READ}`,\n};\n\nexport const BILLING_PERMISSIONS = {\n DOWNLOAD_STATEMENTS: `${RESOURCES.GAME}::download_statements`,\n};\n\nexport const AUDIT_PERMISSIONS = {\n READ: `${RESOURCES.AUDIT}::${CRUD.READ}`,\n};\n","export const GAMES_SKILLZ_URL = 'https://games.skillz.com/game/';\nexport const GAMES_SKILLZ_URL_GAMES = 'https://games.skillz.com/games';\n\nexport const SKILLZ_URL = (): string => window.appConfig?.environment.skillzUrl ?? '';\n\nexport const NFL_CHALLENGE_URL = () => `${SKILLZ_URL()}/nflchallenge/`;\nexport const NFL_TERMS_CONDITIONS_URL = () => `${SKILLZ_URL()}/nflchallenge-official-rules/`;\n\nexport const UFC_GAME_URL = () => `${SKILLZ_URL()}/ufcgame/`;\n\nconst determineSkillzDocsLink = (docSubPage: string): string => {\n // index page for Skillz doc is just SKILLZ_DOC_BASE_URL\n // url ending with `/docs/` is a 404 page\n const subUrl = docSubPage ? `docs/${docSubPage}` : '';\n\n return `${window.appConfig.environment.skillzDocBaseUrl}/${subUrl}`;\n};\n\nexport const SKILLZ_DOCS_RELEASE_NOTES_URL = () => determineSkillzDocsLink('release-notes/');\n\nexport const SKILLZ_DOCS_PLAYER_DATA_API_URL = () =>\n determineSkillzDocsLink('prog-overview/#progression-namespaces');\n\nexport const SKILLZ_DOCS_STANDARD_GAMEPLAY_URL = () =>\n determineSkillzDocsLink('play-and-compare-gameplay/');\n\nexport const SKILLZ_DOCS_IN_GAME_ITEM_URL = () =>\n determineSkillzDocsLink('virtual-rewards-in-game-items');\n\nexport const SKILLZ_DOCS_PROGRESSION_API_URL = () =>\n determineSkillzDocsLink('api-unity/#progression-methods');\n\nexport const SKILLZ_DOCS_REAL_TIME_FTUE_URL = () =>\n determineSkillzDocsLink('next/first-time-user-experience');\n\nexport const SKILLZ_DOCS_BASE_URL = () => determineSkillzDocsLink('');\n\nexport const GDWC_BACKGROUND_COLOR = '#184c6c';\nexport const GDWC_BLOG_URL = 'https://www.skillz.com/exciting-new-skillz-categories-for-gdwc-2023/';\n\nexport const enum DC_RELATIVE_URLS {\n HOME = '/',\n PROGRESSION_AND_PLAYER_DATA_CASE_STUDY = '/learning_center/progression_and_player_data_case_study',\n}\n\nexport const PLAY_AND_COMPARE_TOURNAMENT_DOCS =\n 'https://docs.skillz.com/docs/tournaments-and-gameplay-parameters/';\n\nexport const REAL_TIME_TOURNAMENT_DOCS = 'https://docs.skillz.com/docs/real-time-setup/';\n","export enum USER_ROLES {\n NORMAL_USER = 'normal_user',\n ACCOUNT_ADMIN = 'account_admin',\n ACCOUNT_OWNER = 'account_owner'\n}\n","export const UTM_TERMS: string[] = [\n 'utmMedium',\n 'utmSource',\n 'utmCampaign',\n 'utmContent',\n 'utmTerm'\n];\n","export const PEEK_COOKIE = 'peek_header_on';\n\nexport const isPeekPageRegex = /.+peek$/;\n","import { createContext } from 'react';\n\nimport { IUser } from '@app/common/interfaces/user';\n\nconst UserContext = createContext(undefined);\n\nexport default UserContext;\n","// TODO REPLACE [WS-10403] remove the below disable and fix error\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport snakeCase from 'lodash/snakeCase';\n\nexport interface IObject {\n [key: string]: any;\n}\n\ntype TCaseConverter = (object: IObject) => IObject;\nexport const snakeCaseConverter: TCaseConverter = (object: IObject): IObject => {\n let result: IObject = {};\n\n const isObject: boolean = object && typeof object === 'object' && object.constructor === Object;\n const isArray: boolean = Array.isArray(object);\n if (!isObject && !isArray) {\n return object;\n } else if (isArray) {\n return object.map(snakeCaseConverter);\n }\n\n Object.keys(object).forEach((key: string) => {\n let snakeCaseKey: string = snakeCase(key);\n let value: any = object[key.toString()];\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n if (value && typeof value === 'object' && value.constructor === Object) {\n result[snakeCaseKey.toString()] = snakeCaseConverter(value);\n } else if (value instanceof Array) {\n result[snakeCaseKey.toString()] = value.map(snakeCaseConverter);\n } else {\n result[snakeCaseKey.toString()] = object[key.toString()];\n }\n });\n\n return result;\n};\n","import { Cookies } from 'react-cookie';\n\nimport { PEEK_COOKIE, isPeekPageRegex } from '@app/common/constants';\nimport { ITabTooltip } from '@app/modules/GameManagement/modules/GameHome/common/interfaces';\n\nimport { EU_COUNTRIES } from '../constants';\nimport { ICurrentUser, IPublisher2, IUser } from '../interfaces';\nimport { isSkillzSupport } from './';\n\ndeclare global {\n interface Window {\n 'ga-disable-UA-40410914-4': boolean;\n }\n}\n\nconst cookies = new Cookies();\n\nexport function setGDPRCookie(value: boolean): void {\n let date: Date = new Date();\n let convertedDate: string = new Date(date.setFullYear(date.getFullYear() + 1)).toUTCString();\n document.cookie = `gdpr-cookie=${value.toString()}; path=/; Expires=${convertedDate}`;\n}\n\nexport function deleteCookie(name: string): void {\n const expiration = 'Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n document.cookie = `${name}=; Path=/; Domain=.skillz.com; ${expiration}`;\n document.cookie = `${name}=; Path=/; Domain=${window.location.hostname}; ${expiration}`;\n document.cookie = `${name}=; Path=/; Domain=.${window.location.hostname}; ${expiration}`;\n // safari\n const keyDivider = name.indexOf('=');\n const cookieKey = name.substring(0, keyDivider);\n document.cookie = `${cookieKey}=;${expiration}`;\n}\n\nexport function removeGDPRCookies(): void {\n let cookieArray: string[] = document.cookie.split(';');\n cookieArray.forEach((name: string): void => {\n if (name.indexOf('close-banner=true') !== -1) {\n return;\n }\n\n if (name.includes('notifications')) {\n return;\n }\n\n if (name.includes('gdpr-cookie')) {\n return;\n }\n\n if (name.includes('drift')) {\n return;\n }\n\n if (name.includes('peek_header_on')) {\n return;\n }\n\n deleteCookie(name);\n });\n\n setGDPRCookie(false);\n}\n\nexport function addGDPRCookies(): void {\n // this is to get the GMT one year from now\n setGDPRCookie(true);\n\n // TODO [WS-10956] Remove the dangling _ga cookie\n // eslint-disable-next-line no-underscore-dangle\n let _ga: string[][] = [];\n _ga.push(['_setAccount', 'UA-40410914-4']);\n _ga.push(['_trackPageview']);\n window['ga-disable-UA-40410914-4'] = false;\n}\n\nexport const addTooltipCookie = (tooltip: ITabTooltip): void => {\n const expiration = new Date(tooltip.expirationDate);\n cookies.set(tooltip.cookieName, true, { path: '/', expires: expiration });\n};\n\nexport const getTooltipCookie = (tooltip: ITabTooltip): boolean => {\n return !!cookies.get(tooltip.cookieName);\n};\n\nexport function checkCookieExists(): boolean {\n return document.cookie.indexOf('gdpr-cookie') === -1;\n}\n\nexport const hasCookies = (cookieName: string): boolean => {\n return !!cookies.get(cookieName);\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\nexport const shouldViewPeekPage = (user: any, publisher: IPublisher2): boolean => {\n return isSkillzSupport(user, publisher) || hasCookies(PEEK_COOKIE);\n};\n\nexport const shouldShowPeekHeader = (user: IUser | ICurrentUser, publisher: IPublisher2) => {\n return (\n (user.id !== undefined && !!cookies.get(PEEK_COOKIE)) ||\n (isPeekPageRegex.test(window.location.pathname) && isSkillzSupport(user, publisher))\n );\n};\n\nexport function checkEUcountries(country: string): boolean {\n return EU_COUNTRIES.includes(country);\n}\n","/** prepares a filename will '...' appended to the filename if it is too long\n * @params { fileName } string - the filename of the file being uploaded\n * @return { string } - the modified filename ready to be rendered\n */\nexport function fileNameHelper(filename: string): string {\n if (filename.length > 11) {\n return filename.substring(0, 11) + '...';\n }\n\n return filename;\n}\n/**\n * calculates the percentage difference from A -> B\n * @param valueA\n * @param valueB\n */\nexport function calculatePercentageDifference(valueA: number, valueB: number): number {\n return ((valueB - valueA) / valueA) * 100;\n}\n","import { lastDayOfMonth } from 'date-fns';\nimport { startOfDay, endOfDay } from 'date-fns';\nimport { format } from 'date-fns-tz';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { MONTH_NAMES_FULL, MONTH_NAMES_MMM, TIME_IN_MILLISECONDS } from '@app/common/constants';\nimport { IDateRange } from '@app/common/interfaces';\nimport { DATE_RANGE_OPTIONS } from '@app/modules/Analytics/constants';\nimport { GAME_SNAPSHOT_DATE_RANGE_OPTIONS } from '@appGameHome/modules/Overview/constants';\n\n/** creates an IDateRange object with the 'startDate' daysBack number of days back before\n * the 'maxEndDate'\n * @param { Date } maxEndDate - the endDate to be used for the 'endDate' in the IDateRange object\n * @param { number } daysBack - the number of days back to subtract from 'maxEndDate' to get the 'startDate'\n * for the IDateRange object\n * @returns { IDateRange }\n */\nexport function calculateStartEndDates(maxEndDate: Date, daysBack: number): IDateRange {\n let startDate: Date = cloneDeep(maxEndDate);\n startDate.setDate(startDate.getDate() - daysBack);\n\n let query: IDateRange = {\n startDate: `${startDate.getUTCFullYear()}-${\n startDate.getUTCMonth() + 1\n }-${startDate.getUTCDate()}`,\n endDate: `${maxEndDate.getUTCFullYear()}-${\n maxEndDate.getUTCMonth() + 1\n }-${maxEndDate.getUTCDate()}`,\n };\n\n return query;\n}\n\n/** turns a date string YYYY-MM-DD to Month Day, Year\n * function needed in createXAxisDatesFromDateRangeOptions\n * the monthIndex is -1 because January is the first index\n * the day has 0 removed if the day is less than 10\n * @params { string } date YYYY-MM-DD\n * @params { boolean } should return month be in full month\n * @return { string } returns a month as Sept 10, 2019 or September 10, 2019\n */\nexport function formatDate(date: string, isFullMonth: boolean = false): string {\n let dateArr: string[] = date.split('-');\n\n let monthIndex: number = parseInt(dateArr[1], 10) - 1; // monthIndex 0 = Jan\n let day: string = parseInt(dateArr[2], 10) < 10 ? dateArr[2][1] : dateArr[2]; // remove 0 if less than 10\n\n if (isFullMonth) {\n return `${MONTH_NAMES_FULL[monthIndex]} ${day}, ${dateArr[0]}`;\n }\n\n return `${MONTH_NAMES_MMM[monthIndex]} ${day}, ${dateArr[0]}`;\n}\n/** creates a string array with all dates between and including the start/end Dates\n * @param { Date} startDate - the start date for the string array\n * @param { Date } endDate - the end date for the string array\n * @returns { string[] }\n */\nexport function createDateStringArray(startDate: Date, endDate: Date): string[] {\n let dateRangeArray: string[] = [];\n\n for (let i: Date = startDate; i <= endDate; i.setDate(i.getDate() + 1)) {\n dateRangeArray.push(new Date(i).toISOString().slice(0, 10));\n }\n\n return dateRangeArray;\n}\n\nexport function calculateDateRangeHelper(\n startDateInput: Date,\n endDateInput: Date,\n selectedDateRange: DATE_RANGE_OPTIONS | GAME_SNAPSHOT_DATE_RANGE_OPTIONS\n): IDateRange {\n const startDate = startOfDay(startDateInput);\n const endDate = endOfDay(endDateInput);\n\n switch (selectedDateRange) {\n case DATE_RANGE_OPTIONS.LAST_7_DAYS:\n startDate.setDate(endDate.getDate() - 6);\n\n return { startDate, endDate };\n\n case DATE_RANGE_OPTIONS.LAST_30_DAYS:\n startDate.setDate(endDate.getDate() - 29);\n\n return { startDate, endDate };\n\n case DATE_RANGE_OPTIONS.MTD:\n startDate.setDate(1);\n\n return { startDate, endDate };\n\n case DATE_RANGE_OPTIONS.PRIOR_MONTH:\n startDate.setMonth(startDate.getMonth() - 1);\n startDate.setDate(1);\n\n endDate.setMonth(startDate.getMonth());\n endDate.setDate(lastDayOfMonth(endDate).getDate());\n endDate.setFullYear(startDate.getFullYear());\n\n return { startDate, endDate };\n\n case DATE_RANGE_OPTIONS.LAST_90_DAYS:\n startDate.setDate(endDate.getDate() - 89);\n\n return { startDate, endDate };\n\n case DATE_RANGE_OPTIONS.LAST_180_DAYS:\n startDate.setDate(endDate.getDate() - 179);\n\n return { startDate, endDate };\n\n default:\n startDate.setDate(1);\n startDate.setMonth(0);\n\n return { startDate, endDate };\n }\n}\n\n/** creates an IDateRange object with predefined date ranges for the dropdown selector\n * @param { DATE_RANGE_OPTIONS } selectedDateRange\n * @returns { IDateRange }\n */\nexport function calculateDateRange(\n endDate: Date,\n selectedDateRange: DATE_RANGE_OPTIONS | GAME_SNAPSHOT_DATE_RANGE_OPTIONS\n): IDateRange {\n let startDate: Date = cloneDeep(endDate);\n\n return calculateDateRangeHelper(startDate, endDate, selectedDateRange as DATE_RANGE_OPTIONS);\n}\n\n/** creates an IDateRange object with predefined date ranges for the dropdown selector\n * @param { string } isoStringDate // the dateTime string passed in isoDate standard\n * @param { number } numberOfDays // number of days to be added\n * @returns { number } // time in milliseconds elapsed since January 1, 1970 00:00:00 UTC.\n */\nexport function calculateDateNDaysAfter(isoStringDate: string, numberOfDays: number): number {\n return Date.parse(isoStringDate) + numberOfDays * TIME_IN_MILLISECONDS.DAY;\n}\n\nexport function calculateUnitOfTimeFromMilliseconds(\n unit: TIME_IN_MILLISECONDS,\n milliseconds: number\n): number {\n return Math.floor(milliseconds / unit);\n}\n\nexport const calculatePSTTime = (isoStringDate: string): string => {\n const isoStrToDate: Date = new Date(Date.parse(isoStringDate));\n\n return format(isoStrToDate, 'PPp', {\n timeZone: 'America/Los_Angeles',\n });\n};\n\n/** formats the provided ISO DateTime string according to the options\n * @param { string } isoStringDate // the DateTime string in ISO format\n * @param { number } options // DateTimeFormatOptions object with the desired format\n * @returns { string } // Formatted Date String\n */\nexport const formatIsoDate = (\n isoStringDate: string,\n options: Intl.DateTimeFormatOptions\n): string => {\n return new Date(isoStringDate).toLocaleString('en', options);\n};\n","import { Data } from '@nivo/bar';\nimport { Serie } from '@nivo/line';\n\nimport isEmpty from 'lodash/isEmpty';\n\nimport { ANALYTICS_ATTRIBUTES, CHART_TYPE, MATH_OPERATIONS } from '@app/common/constants';\nimport { IAnalyticInfo, IKeysObj, ITempData, ITotalCount } from '@app/common/interfaces';\n\n/**\n * creates an createTempData for calculateTotalAndCountByDate (totals and count)\n * and calculateSumOrAverageByDate (number)\n * @template T\n * @param { IKeysObj } keysObj - an object of desiredKeys (desired frontend keys) and analyticsKeys (from the database)\n * @returns { ITempData } - an tempLineData object with the { desiredKey: { } }\n */\nexport function createTempData(keysObj: IKeysObj): ITempData {\n let tempData: ITempData = {};\n\n Object.keys(keysObj).forEach((key: string) => {\n tempData[key] = {};\n });\n\n return tempData;\n}\n\n/**\n * step 1: Takes in the analytics and calculates the total and count (number of times at that startTime)\n * @param { IAnalyticInfo[] } analyticsInfo - an array of filtered analytics\n * @param { IKeysObj } keysObj - an object of desiredKeys (desired chart keys) and analyticsKeys (from the database)\n * @returns { ITempData } - a tempLineData object with the {desiredKey: {startTime: { total, count }}}\n */\nexport function calculateTotalAndCountByDate(\n analyticsInfo: IAnalyticInfo[],\n keysObj: IKeysObj\n): ITempData {\n const tempLineData: ITempData = createTempData(keysObj);\n // database names or the actual keys\n const analyticsKeys: string[] = Object.values(keysObj);\n\n // iterate through the desired keys\n Object.keys(keysObj).forEach((key: string, index: number) => {\n // current analytic key can be 'skillzDau', 'd1', 'installs'\n const currentAnalyticKey = analyticsKeys[index] as keyof IAnalyticInfo;\n\n for (const analytic of analyticsInfo) {\n const analyticValue: number = analytic[currentAnalyticKey] as number;\n\n // if null stop the current iteration in the loop\n if (analyticValue === null) {\n continue;\n }\n\n if (tempLineData[key].hasOwnProperty(analytic.startTime)) {\n const currentAccValue: number = tempLineData[key][analytic.startTime].total;\n // store the total total of the accumulator and database analytic total\n tempLineData[key][analytic.startTime].total = analyticValue + currentAccValue;\n tempLineData[key][analytic.startTime].count++;\n } else {\n tempLineData[key][analytic.startTime] = { total: analyticValue, count: 1 };\n }\n }\n });\n\n return tempLineData;\n}\n\n/**\n * step 2: Takes in the tempLineData from calculateTotalsForLineChart and returns tempData with number value\n * This number value is calculated by (total / count)\n * In the case where count = 1, the total will be (total / 1) = total\n * @param { ITempData } calculateTotals - the temp with total and count\n * @param { IKeysObj } keysObj - an object of desiredKeys (desired frontend keys) and analyticsKeys (from the database)\n * @param { string } mathOperation - to either sum or average the passed in values\n * @returns { Object } - an tempLineData with { desiredKey: { startTime: avgValue } }\n */\nexport function calculateSumOrAverageByDate(\n calculateTotals: ITempData,\n keysObj: IKeysObj,\n mathOperation: MATH_OPERATIONS\n): ITempData {\n const tempData: ITempData = createTempData(keysObj);\n const desiredKeys: string[] = Object.keys(keysObj);\n\n for (const key of desiredKeys) {\n if (isEmpty(calculateTotals[key])) {\n continue;\n }\n\n const startTimesByKey: string[] = Object.keys(calculateTotals[key]);\n // iterate through all the dates for each key d1, d7, d30\n startTimesByKey.forEach((startTime: string) => {\n const currentData: ITotalCount = calculateTotals[key][startTime];\n\n if (currentData.hasOwnProperty('total') && currentData.hasOwnProperty('count')) {\n const { total, count } = currentData;\n\n if (mathOperation === MATH_OPERATIONS.AVERAGE) {\n tempData[key][startTime] = Number((total / count).toFixed(2));\n } else {\n tempData[key][startTime] = Number(total.toFixed(2));\n }\n }\n });\n }\n\n return tempData;\n}\n\n/**\n * step 3: Converts the tempData into data for the line chart\n * @param { ITempData } tempData - a line accumulator object with the desiredKey: {startTime: avgValue}\n * @param { IKeysObj } keysObj - an object of desiredKeys (desired frontend keys) and analyticsKeys (from the database)\n * @param { string[] } dateRange - selected date range of the retention data\n * @returns { string[] } - a line series data for nivo line with id as the key and data x: startTime,\n * y: avg / sum / null values\n */\nexport function normalizeDataForLineChart(\n tempData: ITempData,\n keysObj: IKeysObj,\n dateRange: string[]\n): Serie[] {\n let buildLineData: Serie[] = [];\n let desiredKeys: string[] = Object.keys(keysObj);\n\n for (const key of desiredKeys) {\n let lineDataObj: Serie = { id: key, color: 'hsl(62, 70%, 50%)', data: [] }; // color is arbitrary\n\n // in the case of all d1 is empty, it will push an empty line obj\n if (isEmpty(tempData[key])) {\n buildLineData.push(lineDataObj);\n continue;\n }\n\n // create an array with date as the x and the y is the value (sum or avg)\n // if the data point does not exist on that startTime, that startTime is set to null\n lineDataObj.data = dateRange.map((startTime: string) => {\n if (tempData[key].hasOwnProperty(startTime)) {\n return { x: startTime, y: tempData[key][startTime] };\n } else {\n return { x: startTime, y: null };\n }\n });\n\n buildLineData.push(lineDataObj);\n }\n\n return buildLineData;\n}\n\n/**\n * step 3: Converts the tempLineData into data for the bar chart\n * @param { ITempData } tempData - a line accumulator object with the desiredKey: {startTime: avgValue}\n * @param { IKeysObj } keysObj - an object of desiredKeys (desired frontend keys) and analyticsKeys (from the database)\n * @returns { Data['data'] } - nivo bar data set\n */\nexport function normalizeDataForBarChart(\n tempData: ITempData,\n keysObj: IKeysObj\n): Data['data'] {\n const buildBarData: Data['data'] = [];\n\n const dateValue: { [date: string]: Data['data'] } = {};\n\n Object.keys(keysObj).forEach((key) => {\n Object.keys(tempData[key as ANALYTICS_ATTRIBUTES]).forEach((date: string) => {\n dateValue[date] = Object.assign({}, dateValue[date], {\n label: date,\n [key]: tempData[key][date],\n [`${key}Color`]: 'hsl(62, 70%, 50%)',\n });\n });\n });\n\n Object.keys(dateValue)\n .sort()\n .forEach((date: string) => {\n buildBarData.push(dateValue[date]);\n });\n\n return buildBarData;\n}\n\n/**\n * sum of Steps 1 - 3: Converts temp data into the nivo bar or line data\n * @param { CHART_TYPE } type - a string to determine the chart type\n * @param { ITempData } calculateTotalsCount - analytics total count obj\n * @param { IKeysObj } keysObj - an object of desiredKeys (desired frontend keys) and analyticsKeys (from the database)\n * @param { MATH_OPERATIONS } mathOperation - used to tell 'calculateSumOrAverageByDate' which math operation to use\n * @param { string[] } dateRange? - optional date range\n * @returns { Data['data'] } - nivo bar or line data set\n */\nexport function normalizeGraph(\n type: CHART_TYPE,\n calculateTotalsCount: ITempData,\n keysObj: IKeysObj,\n mathOperation: MATH_OPERATIONS,\n dateRange?: string[]\n): Serie[] | Data['data'] {\n if (isEmpty(calculateTotalsCount)) {\n if (type === CHART_TYPE.LINE) {\n return [] as Serie[];\n } else {\n return [] as Data['data'];\n }\n }\n\n let calculateData: ITempData = calculateSumOrAverageByDate(\n calculateTotalsCount,\n keysObj,\n mathOperation\n );\n\n if (type === CHART_TYPE.LINE && dateRange) {\n return normalizeDataForLineChart(calculateData, keysObj, dateRange);\n } else if (type === CHART_TYPE.BAR) {\n return normalizeDataForBarChart(calculateData, keysObj);\n }\n\n return [];\n}\n","import { parseISO, startOfDay } from 'date-fns';\nimport { calculateTotalAndCountByDate } from './normalizeData';\nimport { ANALYTICS_DB_ATTRIBUTES } from '@app/common/constants';\nimport {\n IAnalyticInfo,\n ITempData,\n ITotalCount,\n IAnalyticReducer,\n IDashboardGame\n} from '@app/common/interfaces';\n\nexport function filterData(\n data: IAnalyticInfo[],\n gameProductionId: number,\n startDate: Date,\n endDate: Date\n): IAnalyticInfo[] {\n return data.filter((point: IAnalyticInfo) => {\n let tempDate: Date = startOfDay(parseISO(point.startTime));\n\n return (\n tempDate <= endDate &&\n tempDate >= startDate &&\n (point.gameProductionId === gameProductionId || gameProductionId === -1)\n );\n });\n}\n\nexport function createTotalCountDataObject(\n selectedGameProductionId: number,\n analytics: IAnalyticReducer,\n keyAttributes: { [ANALYTICS_ATTRIBUTES: string]: ANALYTICS_DB_ATTRIBUTES },\n startDate: Date,\n endDate: Date\n): ITempData {\n let filteredDate: IAnalyticInfo[] = filterData(\n analytics.rawData,\n selectedGameProductionId,\n startDate,\n endDate\n );\n\n return calculateTotalAndCountByDate(filteredDate, keyAttributes);\n}\n\nexport function findNestedIndex(array: IDashboardGame[], selectedId: number): number {\n return array.findIndex((element: IDashboardGame) => element.id === selectedId);\n}\n","import isEmpty from 'lodash/isEmpty';\n\nimport { MATH_OPERATIONS } from '@app/common/constants';\nimport { IDateTotalCount, ITotalCount } from '@app/common/interfaces';\n\n/**\n * calculates either the sum or the average of ITotalCounts passed to it in the IDateTotalCount\n * @param { IDateTotalCount } data - An object containing dateStrings as keys with ITotalCounts as values\n * @param { MATH_OPERATIONS } mathOperation - A ENUM with string key with the name of the math operation to perform,\n * will be either 'sum' or 'average'\n * @returns { number } - either the sum or average of the values of the ITotalCounts\n */\n\nexport function calculateSumOrAverage(\n data: IDateTotalCount,\n mathOperation: MATH_OPERATIONS\n): number {\n // on the initial render, return 0 when the data object is empty\n if (isEmpty(data)) {\n return 0;\n }\n\n let { total, count } = calculateTotalAndCountOfAttribute(data);\n\n if (mathOperation === MATH_OPERATIONS.AVERAGE && !!count) {\n return parseFloat((total / count).toFixed(2));\n } else {\n return total;\n }\n}\n\n/**\n * sums all of the values and counts of ITotalCounts passed to it in the IDateTotalCount\n * @param { IDateTotalCount } data - An object containing dateStrings as keys with ITotalCounts as values\n * @returns { ITotalCount } - returns a total and count\n * of the values and the second index is the sum of the counts\n */\n\nexport function calculateTotalAndCountOfAttribute(data: IDateTotalCount): ITotalCount {\n let total: number = 0;\n let count: number = 0;\n\n Object.values(data).forEach((point: ITotalCount) => {\n total += point.total;\n count += point.count;\n });\n\n return { total, count };\n}\n","// TODO UPDATE [WS-10976] remove eslint comments & fix issues\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/* eslint-disable react/display-name */\nimport * as React from 'react';\n\nimport { AxisProps } from '@nivo/axes';\nimport { BarExtendedDatum, Data, TooltipProp as TooltipPropBar } from '@nivo/bar';\nimport { LineSvgProps, Point, Serie, SliceTooltipProps } from '@nivo/line';\n\nimport { ResponsiveBarChart, ResponsiveLineChart } from '@app/common/components';\nimport { ANALYTICS_BENCHMARK_LABELS, CHART_TYPE, MATH_OPERATIONS } from '@app/common/constants';\nimport { formatDate, normalizeGraph } from '@app/common/helpers';\nimport { IChartKeys, ITempData, ITotalCount } from '@app/common/interfaces';\n\nexport function xAxisLabelFormatter(startDate: Date, endDate: Date): string {\n // if either date picker is being updated via keyboard inputs then make sure the\n // page doesn't break while edits are being made\n if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {\n return '';\n }\n\n let formattedStartDate: string = formatDate(startDate.toISOString().split('T')[0]);\n let formattedEndDate: string = formatDate(endDate.toISOString().split('T')[0]);\n\n return `${formattedStartDate} - ${formattedEndDate}`;\n}\n\nexport function yAxisLabelFormatter(value: number): string {\n // suffixes is the standard abbreviations for large numbers\n let suffixes: string[] = ['', 'k', 'm', 'b', 't'];\n\n // we take the absolute value because when the actual value of the data points is 0\n // the default y-axis labels seem to be negative, which throws off the rest of our calculations\n let absoluteValue: number = Math.abs(value);\n\n // just return with the proper precision if the absoluteValue is a float less than 1\n if (absoluteValue < 1) return `${parseFloat(absoluteValue.toPrecision(2))}`;\n\n // suffixNum is the power of 1000 and also the index number in suffixes\n // relating to that power (eg. 1000 is 1, 1000000 is 2, etc)\n let suffixNum: number = Math.floor((`${Math.abs(absoluteValue)}`.length - 1) / 3);\n\n // the shortValue is a float derived from the first two digits of the\n // large number (eg. 1000 is 1.0, 4300000 is 4.3, etc)\n let shortValue: number = parseFloat(\n (suffixNum !== 0 ? absoluteValue / Math.pow(1000, suffixNum) : absoluteValue).toPrecision(2)\n );\n\n // this combines the shortValue with the appropriate suffix (eg. 4300000 is 4.3m)\n return `${shortValue}${suffixes[suffixNum]}`;\n}\n\n/** returns the function used to render a custom tooltip\n * @params { (value: number | string) => string } formatter - function called on the yFormatted value to format\n * the data on the tooltip, the formatter will be: formatCurrency | formatWholeNumber | formatWholeNumberFromDecimal |\n * formatPercentage\n * @returns { JSX.Element } - returns the formatted tooltip\n */\nexport const renderLineChartTooltip = (formatter: (value: number | string) => string) => {\n return ({ slice }: SliceTooltipProps): JSX.Element => {\n return (\n \n \n {formatDate(slice.points[0].data.xFormatted as string)}\n \n {slice.points.map((point: Point) => (\n \n {point.serieId}\n {formatter(point.data.yFormatted)}\n
    \n ))}\n \n );\n };\n};\n\n/** returns the function used to render a custom tooltip\n * @params { (value: number) => string } formatter - function called on the indexValue\n * the data on the tooltip, the formatter will be: formatCurrency | formatWholeNumber | formatWholeNumberFromDecimal |\n * formatPercentage\n * @returns { React.ReactNode } - returns the formatted tooltip\n */\nexport function renderBarChartTooltip(\n formatter: (value: number) => string\n): (data: BarExtendedDatum) => React.ReactNode {\n return ({ id, value, color, indexValue }: BarExtendedDatum): React.ReactNode => {\n return (\n
    \n \n {formatDate(indexValue as string)}\n \n \n {id}\n {formatter(value)}\n
    \n \n );\n };\n}\n\nexport function renderBarChart(\n keysObj: IChartKeys,\n colors: string[],\n startDate: Date,\n endDate: Date,\n filteredData: ITempData,\n axisLeft?: AxisProps | null,\n formatter?: (value: number) => string\n): JSX.Element {\n let xAxisDates: string = xAxisLabelFormatter(startDate, endDate);\n let barKeys: string[] = Object.keys(keysObj);\n\n if (formatter) {\n return (\n \n );\n }\n\n return (\n \n );\n}\n\ninterface ILineChartProps {\n keysObj: IChartKeys;\n colors: string[];\n mathOperation: MATH_OPERATIONS;\n dateRangeArray: string[];\n startDate: Date;\n endDate: Date;\n filteredData: ITempData;\n axisLeft?: AxisProps;\n formatter?: (value: number) => string;\n benchmarkValue?: number;\n benchmarkLabel?: ANALYTICS_BENCHMARK_LABELS;\n propOverrides?: Partial;\n}\n\nexport function renderLineChart({\n keysObj,\n colors,\n mathOperation,\n dateRangeArray,\n startDate,\n endDate,\n filteredData,\n axisLeft,\n formatter,\n benchmarkValue,\n benchmarkLabel,\n propOverrides,\n}: ILineChartProps): JSX.Element {\n let xAxisDates: string = xAxisLabelFormatter(startDate, endDate);\n let lineGraphData: Serie[] = normalizeGraph(\n CHART_TYPE.LINE,\n filteredData,\n keysObj,\n mathOperation,\n dateRangeArray\n ) as Serie[];\n\n if (!!benchmarkValue && !!benchmarkLabel) {\n lineGraphData.push(addBenchmarkLine(benchmarkValue, dateRangeArray, benchmarkLabel));\n }\n\n return (\n \n );\n}\n\nexport function addBenchmarkLine(\n value: number,\n dateRangeArray: string[],\n benchmarkLabel: ANALYTICS_BENCHMARK_LABELS\n): Serie {\n let benchMarkLine: Serie = {\n id: benchmarkLabel,\n data: [],\n };\n\n for (let date of dateRangeArray) {\n benchMarkLine.data.push({ x: date, y: value });\n }\n\n return benchMarkLine;\n}\n\nexport function isEstimatedRevenueEnabled(): boolean {\n return window.appConfig.featureFlags.estimatedRevenueChart;\n}\n","import { isString } from 'lodash';\n\nimport { IAnalyticInfo } from '@app/common/interfaces';\nimport {\n COMMON_ANALYTICS_METRICS,\n GAME_ANALYTICS_METRICS,\n GAME_ANALYTICS_REPLACED_METRICS,\n ESTIMATED_REVENUE_METRIC,\n} from '@app/modules/Analytics/constants';\n\nimport { isEstimatedRevenueEnabled } from './chartHelper';\n\nexport function isFloat(n: string | number | null | undefined): boolean {\n if (!n || typeof n === 'string') {\n return false;\n }\n\n return n % 1 !== 0;\n}\n\nexport function formatFileName(selectedGame: string, startDate: Date, endDate: Date): string {\n const upperSnakeCaseGame = selectedGame.toUpperCase().replace(/\\s/g, '_');\n\n const startDateString = startDate.toISOString().split('T')[0].replace(/-/g, '_');\n const endDateString = endDate.toISOString().split('T')[0].replace(/-/g, '_');\n\n const upperSnakeDateRange = `${startDateString}__${endDateString}`;\n\n return upperSnakeCaseGame + '_' + upperSnakeDateRange + '.csv';\n}\n\nfunction getAnalyticsAttributes() {\n const attributes = {\n ...COMMON_ANALYTICS_METRICS,\n ...GAME_ANALYTICS_REPLACED_METRICS,\n ...GAME_ANALYTICS_METRICS,\n };\n\n return isEstimatedRevenueEnabled() ? { ...attributes, ...ESTIMATED_REVENUE_METRIC } : attributes;\n}\n\nexport function formatAnalyticsToCsv(analytics: IAnalyticInfo[]): string[][] {\n const csvKeys: string[] = Object.values(getAnalyticsAttributes());\n const csvData: string[][] = [];\n csvData.push(csvKeys);\n\n analytics.forEach((analytic: IAnalyticInfo) => {\n const csvDataRow: string[] = [];\n\n Object.keys(getAnalyticsAttributes()).forEach((csvKey) => {\n // the value could be any IAnalytic Attribute\n let value: string | number | null | undefined = analytic[csvKey as keyof IAnalyticInfo];\n\n if (isString(value)) {\n value = `\"${value}\"`;\n }\n\n if (isFloat(value)) {\n value = (value as number).toFixed(2);\n }\n\n csvDataRow.push(value as string);\n });\n\n csvData.push(csvDataRow);\n });\n\n return csvData;\n}\n","import uniqBy from 'lodash/uniqBy';\nimport ReactGA from 'react-ga';\n\nimport { IAnalyticInfo, IGAEvent, IPublisher2 } from '@app/common/interfaces';\nimport { ALL_GAMES } from '@app/modules/Analytics/constants';\n\nexport function sendGaEvent(\n selectedGameName: string,\n selectedDateRange: string,\n analytics: IAnalyticInfo[],\n selectedGameProductionId: number,\n publisher: IPublisher2\n): IGAEvent {\n let gameIdsString: string;\n let event: IGAEvent = { category: '', action: '', label: '' };\n let clientId: string = '';\n // assign clientId from the ReactGA clientId\n ReactGA.ga((tracker: any): void => {\n clientId = tracker.get('clientId');\n });\n\n // if the selected game is All the games, then the GameID sent to the GA\n // event is a long string all the Game IDs separated by a '_'\n if (selectedGameName === ALL_GAMES) {\n // filter out the analytics data to not duplicate games\n let unique: IAnalyticInfo[] = uniqBy(analytics, 'gameProductionId');\n // create an array of only gameIds\n let gameIds: string[] = unique.map((analytic: IAnalyticInfo) => {\n return analytic.gameProductionId.toString();\n });\n // create a string of all game ids separated by '_'\n gameIdsString = gameIds.join('_');\n } else {\n // if only one game was selected nothing special has to be done to the string\n gameIdsString = selectedGameProductionId.toString();\n }\n\n event.category = 'Analytics Data Download';\n event.action = `${publisher.id}`;\n event.label = `${gameIdsString}:${selectedDateRange}`;\n\n // send event to google analytics\n ReactGA.event({\n category: event.category,\n action: event.action,\n label: event.label\n });\n\n return event;\n}\n","import parseISO from 'date-fns/parseISO';\n\n/** returns a string formatted as US currency\n * @params { number } value - the number to format\n * @returns { string } - returns the formatted string\n */\nexport function formatCurrency(value: number): string {\n return `${value.toLocaleString('en-US', {\n style: 'currency',\n currency: 'USD',\n })}`;\n}\n\n/** returns a string formatted as a whole number (with commas where necessary)\n * @params { number } value - the number to format\n * @returns { string } - returns the formatted string\n */\nexport function formatWholeNumber(value: number): string {\n return `${value.toLocaleString()}`;\n}\n\n/** returns a string formatted as a whole number (with commas where necessary)\n * @params { number } value - the number to format (decimal removed)\n * @returns { string } - returns the formatted string\n */\nexport function formatWholeNumberFromDecimal(value: number): string {\n let wholeNumber: number = Math.round(value);\n\n return `${wholeNumber.toLocaleString()}`;\n}\n\n/** returns a string formatted as a decimal (with commas where necessary)\n * @params { number } value - the number to format\n * @returns { string } - returns the formatted string\n */\nexport function formatDecimal(value: number): string {\n return value.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n}\n\n/** returns a string formatted as a percentage\n * @params { number } value - the number to format\n * @returns { string } - returns the formatted string\n */\nexport function formatPercentage(\n value: number,\n minimumFractionDigits: number = 2,\n maximumFractionDigits: number = 2\n): string {\n return `${value.toLocaleString('en-US', {\n minimumFractionDigits,\n maximumFractionDigits,\n })}%`;\n}\n\n/**\n * returns an ISO string of the passed in date with all of the 'time' stripped out\n * @param date the date to be formatted\n */\nexport function formatDateToIsoString(date: Date): string {\n return date.toISOString().split('T')[0];\n}\n\n/**\n * returns an ISO string of the passed in date with all of the 'time' stripped out\n * example: '2021-12-31T21:26:22.000Z' -> '12-31-2021'\n * @param string the date to be formatted\n */\nexport const formatStringDateToIsoString = (date: string): string => {\n const cleanDate: Date = parseISO(date.split('T')[0]);\n\n const prefixedMonth: string = (cleanDate.getUTCMonth() + 1).toString().padStart(2, '0');\n const prefixedDate: string = cleanDate.getUTCDate().toString().padStart(2, '0');\n\n return `${prefixedMonth}-${prefixedDate}-${cleanDate.getUTCFullYear()}`;\n};\n","import { Location } from 'history';\n\nimport { IAnalyticInfo, IDateRange, ISearchParams } from '@app/common/interfaces';\nimport {\n ALL_GAMES,\n DATE_RANGE_OPTIONS,\n DEFAULT_DATE_RANGE,\n TABS,\n} from '@app/modules/Analytics/constants';\n\n/**\n * return the index of the tab for the Analytics page\n * @param { string } tab - the string of the tab names\n * @returns { number }\n */\nexport function getTabIndex(tab: string): number {\n let tabIndex: number = TABS.indexOf(tab);\n\n if (tabIndex < 0) {\n tabIndex = 0;\n }\n\n return tabIndex < 0 ? 0 : tabIndex;\n}\n\n/**\n * returns the game name and the game production ID of the game, (a gameProductionId of -1 means ALL_GAMES)\n * @param { string } gameId - the string of the game option\n * @param { IAnalyticInfo[] } data - the raw analytic data\n * @returns { string }\n */\nexport function getGameName(gameId: number, data: IAnalyticInfo[]): string {\n let selectedGameName: string = ALL_GAMES;\n\n if (gameId && gameId !== -1) {\n for (const point of data) {\n if (point.gameProductionId === gameId) {\n selectedGameName = point.gameTitle;\n break;\n }\n }\n }\n\n return selectedGameName;\n}\n\n/**\n * returns an object containing the URL search params\n * @param { Location } location - the history's location\n * @returns { URLSearchParams }\n */\nexport function getSearchParams(location: Location): ISearchParams {\n let searchParams: URLSearchParams = new URLSearchParams(location.search);\n\n return {\n tab: searchParams.get('tab'),\n dateRange: searchParams.get('date_range'),\n gameId: searchParams.get('game_id'),\n };\n}\n\n/**\n * returns the startDate & endDate extracted from the date_range URL query\n * @param { string } dateRangeQuery - the string after date_range= in the URL\n * @returns { IDateRange }\n */\nexport function getDateRangeFromUrl(dateRangeQuery: string): IDateRange {\n let splitQuery: string[] = dateRangeQuery.split('--');\n\n return {\n startDate: splitQuery[0],\n endDate: splitQuery[1],\n };\n}\n\n/**\n * returns true if the dateRangeQuery is in the format of YYYY-MM-DD--YYYY-MM-DD\n * where MM could be M | MM and DD could be D | DD\n * @param { string } dateRangeQuery - the string after date_range= in the URL\n * @returns { boolean }\n */\nexport function isValidCustomDateRange(dateRangeQuery: string): boolean {\n return /^\\d{4}-\\d{1,2}-\\d{1,2}--\\d{4}-\\d{1,2}-\\d{1,2}$/.exec(dateRangeQuery) !== null;\n}\n\n/**\n * formats the date into a YYYY-MM-DD string\n * @param { Date } date - the date object to be formatted\n * @returns { string }\n */\nexport function dateToUrlFormatter(date: Date): string {\n return `${date.getUTCFullYear()}-${date.getUTCMonth() + 1}-${date.getUTCDate()}`;\n}\n\n/**\n * returns the dateRange to be used as the selectedDateRange to update the state\n * @param { string | null } dateRange - URL's date range\n * @returns { DATE_RANGE_OPTIONS }\n */\nexport function dateRangeUrlParamHelper(dateRange: string | null): DATE_RANGE_OPTIONS {\n // if the URL had no dateRange then we default it to DEFAULT_DATE_RANGE\n if (dateRange === null) {\n return DEFAULT_DATE_RANGE;\n }\n\n // if the URL had a dateRange that was a DATE_RANGE_OPTION (not a YYYY-MM-DD--YYYY-MM-DD format)\n if (Object.values(DATE_RANGE_OPTIONS).includes(dateRange as DATE_RANGE_OPTIONS)) {\n return dateRange as DATE_RANGE_OPTIONS;\n }\n\n // if the URL had a dateRange that wasn't a DATE_RANGE_OPTION make sure it is\n // in the YYYY-MM-DD--YYYY-MM-DD format\n if (isValidCustomDateRange(dateRange)) {\n return DATE_RANGE_OPTIONS.CUSTOM_DATE_RANGE;\n }\n\n return DEFAULT_DATE_RANGE;\n}\n\n/**\n * returns the string to be passed to the URL for the dateRange depending on the state's values\n * @param { DATE_RANGE_OPTIONS | string }selectedDateRange - state's selectedDateRange\n * @param { Date } startDate - state's selected startDate\n * @param { Date } endDate - state's selected endDate\n */\nexport function dateRangeUrlParamFormatter(\n selectedDateRange: DATE_RANGE_OPTIONS | string,\n startDate: Date,\n endDate: Date\n): DATE_RANGE_OPTIONS | string {\n if (selectedDateRange === DATE_RANGE_OPTIONS.CUSTOM_DATE_RANGE) {\n let startDateQuery: string = dateToUrlFormatter(startDate);\n let endDateQuery: string = dateToUrlFormatter(endDate);\n\n return `${startDateQuery}--${endDateQuery}`;\n }\n\n return selectedDateRange;\n}\n","import { DropdownOption } from '@app/common/components';\n\nexport function formatDropdownOptions(options: string[]): DropdownOption[] {\n return options.map((option: string) => {\n return {\n value: option,\n component: option\n };\n });\n}\n","export const postRequest = (url, data) => {\n return $.ajax({\n url,\n method: 'POST',\n data,\n processData: false,\n contentType: false\n });\n};\n","import { DropdownOption } from '@app/common/components';\n// TODO REPLACE [WS-10403] remove the below disable and fix error\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype TFormattedOptions = (array: any[], value: string, component: string) => DropdownOption[];\ntype TOptions = (value: string[]) => DropdownOption[];\n\nexport const dropdownOptionsConverter: TOptions = (options: string[]): DropdownOption[] => {\n return options.map((option: string) => {\n return {\n value: option,\n component: option\n };\n });\n};\n\n// TODO: replace formatDropdownOptions and formatDropdownOptionsGame with this function\nexport const formatToDropDownOptions: TFormattedOptions = (\n array: any[],\n value: string,\n component: string\n): DropdownOption[] => {\n return array.map((object: any) => {\n return { value: object[value.toString()], component: object[component.toString()] };\n });\n};\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { IModalGame } from '@app/common/interfaces';\n\nexport function generateModalGameFormData(game: IModalGame): FormData {\n let form: FormData = new FormData();\n form.append('game[platform]', game.platform);\n form.append('game[title]', game.title);\n form.append('game[description]', game.description);\n form.append('game[development_environment]', game.developmentEnvironment as string);\n if (game.icon) {\n form.append('game[icon]', game.icon);\n }\n\n return form;\n}\n","import capitalize from 'lodash/capitalize';\n\nimport {\n allowedPhoneNumberCharacters,\n FORM_ERRORS,\n properSecuredUrlFormat,\n properUrlFormat,\n} from '@app/common/constants';\nimport { PASSWORD_ERRORS } from '@app/modules/Account/modules/User/constants';\nimport { UserFlowErrors } from '@app/modules/SignUpFlow/subcomponents';\n\nimport PasswordWrapper from '../components/PasswordWrapper/PasswordWrapper';\nimport { ICurrentUser, IPublisher2, IUser, TSkillzSupport } from '../interfaces';\nimport { VALID_EMAIL_REGEX } from '../regex';\n\nexport interface IValidation {\n status: boolean;\n error: string;\n}\n\ntype TPasswordValidation = (password: string) => IValidation;\ntype TEmailValidation = (password: string) => IValidation;\ntype TPhoneNumberValidation = (phoneNumber: string) => IValidation;\n\nexport const DEFAULT_VALID_RESPONSE: IValidation = { status: true, error: '' };\n\nexport const passwordValidation: TPasswordValidation = (password: string): IValidation => {\n if (password.length < 8) {\n return { status: false, error: UserFlowErrors.PasswordMinimum };\n }\n if (password.length > 128) {\n return { status: false, error: UserFlowErrors.PasswordMaximum };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n\nexport const emailValidation: TEmailValidation = (email: string): IValidation => {\n let formatCheck: RegExp = RegExp(/^([\\w.%+-]+)@([\\w-]+\\.)+([\\w]{2,})$/i);\n if (!formatCheck.exec(email)) {\n return { status: false, error: FORM_ERRORS.INVALID_EMAIL };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n\nexport function lengthValidation(\n attributeName: string,\n attributeValue: string,\n maximumLength: number = 250\n): IValidation {\n if (attributeValue && attributeValue.length > maximumLength) {\n if (attributeName === '') {\n return {\n status: false,\n error: `Must be fewer than ${maximumLength} characters`,\n };\n }\n\n return {\n status: false,\n error: `${capitalize(attributeName)} must be fewer than ${maximumLength} characters`,\n };\n }\n\n return DEFAULT_VALID_RESPONSE;\n}\n\nexport const phoneNumberValidation: TPhoneNumberValidation = (phoneNumber: string): IValidation => {\n let hasInvalidCharacters: boolean = allowedPhoneNumberCharacters.test(phoneNumber);\n // this is replacing all non-digit characters with an empty string thus removing them\n let digitsFromPhoneNumber: string = phoneNumber.replace(/\\D/gi, '');\n let hasInvalidNumberOfDigits: boolean =\n digitsFromPhoneNumber.length < 7 || digitsFromPhoneNumber.length > 12;\n if (hasInvalidCharacters || hasInvalidNumberOfDigits) {\n return { status: false, error: FORM_ERRORS.INVALID_TELEPHONE };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n\nexport const urlValidation = (website: string): IValidation => {\n if (!properUrlFormat.test(website)) {\n return { status: false, error: FORM_ERRORS.INVALID_URL };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n\nexport const securedUrlValidation = (website: string): IValidation => {\n let httpsPattern: RegExp = /^(https:\\/\\/)/;\n\n if (!properSecuredUrlFormat.test(website)) {\n if (!httpsPattern.test(website)) {\n return { status: false, error: FORM_ERRORS.HTTPS_REQUIRED };\n }\n\n return { status: false, error: FORM_ERRORS.INVALID_URL };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n\nexport const emptyValidation = (value: string | undefined): IValidation => {\n if (value === '' || value === undefined) {\n return { status: false, error: FORM_ERRORS.FIELD_EMPTY };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n\nexport function semverValidation(version: string): IValidation {\n let formatCheck: RegExp = RegExp(/^([\\w.]+)$/i);\n if (!formatCheck.exec(version)) {\n return { status: false, error: FORM_ERRORS.INVALID_VERSION };\n }\n\n return DEFAULT_VALID_RESPONSE;\n}\n\nexport function specialCharacterValidation(value: string): IValidation {\n let formatCheck: RegExp = RegExp(/^([\\w._\\-\\s]+)$/i);\n if (!formatCheck.exec(value)) {\n return { status: false, error: FORM_ERRORS.INVALID_SPECIAL_CHARACTERS };\n }\n\n return DEFAULT_VALID_RESPONSE;\n}\n\nexport const isSkillzSupport = (user: IUser | ICurrentUser, publisher: IPublisher2): boolean => {\n return publisher.id === 1 && user.skillzSupport === ('full_access' as TSkillzSupport);\n};\n\nexport const validateStrongPassword = (\n password: string,\n email: string = '',\n currentPassword: string = ''\n): UserFlowErrors | PASSWORD_ERRORS | string => {\n if (password === '') {\n return UserFlowErrors.Blank;\n }\n\n if (password.length > 128) {\n return UserFlowErrors.PasswordMaximum;\n }\n\n // needed for the accounts page and password comparison of password vs currentPassword\n if (!!currentPassword && password === currentPassword) {\n return PASSWORD_ERRORS.DIFFERENT_PASSWORD;\n }\n\n let passwordExtraError: string = PasswordWrapper.extraValidation(password, email);\n if (!!passwordExtraError) {\n return passwordExtraError;\n }\n\n return '';\n};\n\nexport const validateEmail = (email: string): UserFlowErrors | '' => {\n if (email === '') {\n return UserFlowErrors.Blank;\n }\n\n if (!VALID_EMAIL_REGEX.test(email)) {\n return UserFlowErrors.InvalidEmail;\n }\n\n return '';\n};\n\nexport const validateInputForEmptyField = (input: string): UserFlowErrors | '' => {\n if (input === '') {\n return UserFlowErrors.Blank;\n }\n\n return '';\n};\n\nexport const emptyFileNameValidation = (name: string, value: string | undefined): IValidation => {\n if (!value) {\n return { status: false, error: `${name} ${FORM_ERRORS.IS_MANDATORY}` };\n }\n\n return DEFAULT_VALID_RESPONSE;\n};\n","export function isDefaultCompany(name: string | null, id: number): boolean {\n return name === null || name === '' || `Game Creators ${id}` === name;\n}\n\nexport function isDefaultFirstName(firstName: null | string): boolean {\n return firstName === null || firstName === 'Game' || firstName === '';\n}\n\nexport function isDefaultLastName(lastName: null | string): boolean {\n return lastName === null || lastName === 'Creator' || lastName === '';\n}\n\nexport function isDefaultUserName(firstName: string | null, lastName: string | null): boolean {\n // both first name and last name need to be empty or the default name is Game Creator\n return (!firstName && !lastName) || /Game\\s*Creator/.test(`${firstName ?? ''} ${lastName ?? ''}`);\n}\n","export const removeUnwantedCharacters = (input: string): string => {\n let output: string = '';\n for (let i: number = 0; i < input.length; i++) {\n output += input.charCodeAt(i) <= 127 ? input.charAt(i) : '';\n }\n\n return output;\n};\n","export const ONE_KB_IN_BYTES: number = Math.pow(1024, 1); // 1KB\n\nexport const ONE_MB_IN_BYTES: number = Math.pow(1024, 2); // 1MB\n\nexport const ONE_GB_IN_BYTES: number = Math.pow(1024, 3);\n\nexport enum BYTE_UNIT {\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n}\n\nexport const convertByteToUnit = (byteSize: number, unit: BYTE_UNIT): string => {\n let bytes = 0;\n switch (unit) {\n case BYTE_UNIT.KB:\n bytes = byteSize / ONE_KB_IN_BYTES;\n break;\n case BYTE_UNIT.MB:\n bytes = byteSize / ONE_MB_IN_BYTES;\n break;\n case BYTE_UNIT.GB:\n bytes = byteSize / ONE_GB_IN_BYTES;\n break;\n default:\n bytes = byteSize / ONE_MB_IN_BYTES;\n break;\n }\n\n return `${bytes.toFixed(2)} ${unit}`;\n};\n","export const hasBothUpperAndLowerCaseLetters = (input: string): boolean => {\n // has at least one upper and at least one lower case\n return new RegExp('(?=.*[a-z])(?=.*[A-Z])').test(input);\n};\n\nexport const hasAtLeastOneNumber = (input: string): boolean => {\n return new RegExp('(?=.*[0-9])').test(input);\n};\n\nexport const hasMinimumEightCharacters = (input: string): boolean => {\n return input.length >= 8;\n};\n\nexport const hasAtLeastOneSpecialCharacter = (input: string): boolean => {\n return new RegExp('[^a-zA-Z0-9]', 'i').test(input);\n};\n\nexport const hasSubstring = (input: string, substring: string): boolean => {\n return input.toLowerCase().includes(substring.toLowerCase());\n};\n\nexport const hasOnlyAsciiCharacters = (input: string): boolean => {\n return new RegExp('^[\\x00-\\x7F]*$').test(input);\n};\n","export const printFile = (file: File): Promise => {\n return new Promise((resolve, reject) => {\n let reader = new FileReader();\n reader.onload = (e) => {\n if (!!e.target) {\n resolve(e.target.result);\n } else {\n reject(e);\n }\n };\n reader.readAsText(file);\n });\n};\n","type WithoutNulls = { [P in keyof T]: Exclude };\n\nexport const replaceNullsWith = (replacement: unknown) => (obj: T): WithoutNulls =>\n Object.entries(obj).reduce(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n (acc, [key, value]) => ({ ...acc, [key]: value !== null ? value : replacement }),\n {} as WithoutNulls\n );\n","import { PUBLIC_FLOWS, PUBLIC_ROUTES, PUBLIC_PRIVATE_ROUTES } from '../constants';\n\n// TODO: Remove flow; keeping it now to maintain original logic\nexport function isPublicRoute(flow: string, pathName: string): boolean {\n return PUBLIC_FLOWS.includes(flow) || PUBLIC_ROUTES.includes(pathName);\n}\n\nexport function isPublicOrPrivateRoute(pathName: string): boolean {\n return PUBLIC_PRIVATE_ROUTES.includes(pathName);\n}\n","import axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\n\nimport { IErrors, IPermissions } from '@app/common/interfaces';\n\nexport type TGameAccess = { productionId: number }[];\n\ntype TResponseProgressionRooms = AxiosResponse;\n\nexport const fetchGameAccessRequest = async (userId: string) => {\n return axios\n .get(`/api_internal/v1/users/${userId}/game_access`)\n .then(camelize)\n .then((response: TResponseProgressionRooms) => {\n return response.data;\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\ninterface IAccessGameCheck {\n productionId: number;\n permissions: IPermissions;\n gameAccess: TGameAccess;\n permissionToCheck: string;\n}\n\nexport const hasAccessGameForPermission = ({\n productionId,\n permissions,\n gameAccess,\n permissionToCheck,\n}: IAccessGameCheck) => {\n return (\n !!permissions[permissionToCheck] && gameAccess.some((el) => el.productionId === productionId)\n );\n};\n","import { IErrors, IError } from '@app/common/interfaces';\nimport { AxiosError, AxiosResponse } from '@app/common/setup/axiosWithHeader';\n\nexport const handleResponse = (response: AxiosResponse) => response.status;\n\nexport const handleError = (axiosError: AxiosError) => {\n if (axiosError.response?.data) {\n const { data } = axiosError.response;\n const errorMessage = (data as IError).error ?? (data as IErrors).errors;\n\n throw new Error(errorMessage);\n }\n\n throw new Error('Unknown error');\n};\n","// TODO [WS-24677] Implement a proper way to cancel in-flight requests. eg. AbortController\nexport const makeCancelable = (promise: Promise) => {\n let hasCanceled = false;\n\n const wrappedPromise = new Promise((resolve, reject) => {\n promise.then(\n (val) => (hasCanceled ? reject({ isCanceled: true }) : resolve(val)),\n (error) => (hasCanceled ? reject({ isCanceled: true }) : reject(error))\n );\n });\n\n return {\n promise: wrappedPromise,\n cancel(this: void) {\n hasCanceled = true;\n },\n };\n};\n","import * as React from 'react';\n\nimport { ISnackBar, useSnackbarContext } from '@skillzet/components';\n\n// utility function to pass the snackbar hook into a class component\n\nexport function WithSnackbar(Component: typeof React.Component) {\n return function WrappedComponent(props: Record) {\n const snackbar = useSnackbarContext();\n\n return ;\n };\n}\n\nexport interface IWithSnackbarProp {\n snackbar: ISnackBar;\n}\n\nexport function snackbarErrorMessage(error: Error) {\n return `An error occurred: ${error?.message || error.toString()}`;\n}\n","interface IPluralOverride {\n suffix: string;\n replaceChars: number;\n}\n\nconst basePluralCases = (word: string) => {\n switch (true) {\n case word.endsWith('y'):\n return { defaultSuffix: 'ies', defaultCount: 1 };\n case word.endsWith('f'):\n return { defaultSuffix: 'ves', defaultCount: 1 };\n case word.endsWith('fe'):\n return { defaultSuffix: 'ves', defaultCount: 2 };\n default:\n return { defaultSuffix: 's', defaultCount: 0 };\n }\n};\n\nexport const pluralize = (word: string, count: number, override?: IPluralOverride) => {\n const { defaultSuffix, defaultCount } = basePluralCases(word);\n\n const suffix = override ? override.suffix : defaultSuffix;\n const replaceCharsCount = override ? override.replaceChars : defaultCount;\n\n return `${count} ${\n count !== 1 ? word.substr(0, word.length - replaceCharsCount).concat(suffix) : word\n }`;\n};\n\nexport const truncateWithElipses = (text: string, maxLength: number = 200) => {\n return text.substring(0, maxLength) + (text.length > maxLength ? '...' : '');\n};\n","import { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n\n return {\n width,\n height,\n };\n};\n\n// resizing can cause up to 200 renders going from 1200px to 600px\nconst debounce = (func: () => void) => {\n let timer: ReturnType;\n\n return () => {\n if (timer) clearTimeout(timer);\n timer = setTimeout(func, 100);\n };\n};\n\nconst useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n const handleResize = () => {\n setWindowDimensions(getWindowDimensions());\n };\n\n window.addEventListener('resize', debounce(handleResize));\n\n return () => window.removeEventListener('resize', debounce(handleResize));\n }, []);\n\n return windowDimensions;\n};\n\nexport default useWindowDimensions;\n","import * as React from 'react';\n\nimport { IDataAttributes } from 'portal-common-library/interfaces/dataAttributes';\n\nimport { AtomColoredCircle } from '@app/common/atoms';\n\nimport './styles/banner.scss';\n\ntype TBannerState = 'info' | 'warn' | 'error';\n\nexport interface IBannerProps {\n id: string;\n bannerContent: string | JSX.Element;\n circleContent?: string;\n customContent?: JSX.Element;\n state: TBannerState;\n iconCircumference: string;\n fontSize: string;\n dataAttributes?: IDataAttributes;\n isDismissed?: boolean;\n}\n\nexport type TDefaultProps = Required>;\n\nclass Banner extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n iconCircumference: '24px',\n fontSize: '16px',\n };\n\n public renderIcon(): JSX.Element {\n let { circleContent, state, iconCircumference, fontSize, customContent } = this.props;\n let iconId: string = 'banner__icon';\n\n if (state === 'warn') {\n return (\n
    \n \n {circleContent}\n \n
    \n );\n }\n\n if (customContent) {\n return customContent;\n }\n\n return (\n \n );\n }\n\n public render(): JSX.Element | null {\n let { id, bannerContent, state, dataAttributes, isDismissed } = this.props;\n\n if (isDismissed) return null;\n\n return (\n \n {this.renderIcon()}\n
    \n {bannerContent}\n
    \n \n );\n }\n}\n\nexport { Banner };\n","import * as React from 'react';\n\nimport AtomButton from 'portal-common-library/atoms/AtomButton';\nimport PulseLoader from 'react-spinners/PulseLoader';\n\nimport variables from '@app/core/variables.scss';\n\nimport './styles/buttonWithLoader.scss';\n\ninterface IButtonWithLoaderProps {\n loading: boolean;\n}\n\ntype TButtonWithLoaderProps = React.ComponentProps & IButtonWithLoaderProps;\n\nclass ButtonWithLoader extends React.PureComponent {\n public static defaultProps = {\n isDisabled: false,\n size: 'large',\n isErrorMode: false\n };\n\n public render(): JSX.Element {\n let {\n onClick,\n buttonContent,\n buttonType,\n classes,\n id,\n size,\n loading: isLoading,\n isDisabled,\n isErrorMode,\n dataAttributes\n } = this.props;\n\n if (isLoading) {\n return (\n
    \n
    \n \n
    \n null}\n />\n
    \n );\n } else {\n return (\n \n );\n }\n }\n}\n\nexport { ButtonWithLoader };\n","import * as React from 'react';\n\nimport AtomLink from 'portal-common-library/atoms/AtomLink';\n\nimport './styles/cardWithIconAndLinkStyles.scss';\n\nexport interface ICardWithIconAndLinkProps {\n id: string;\n cardIcon: JSX.Element;\n cardText: string[];\n linkTitle: string;\n linkUrl: string;\n linkIcon?: boolean;\n linkNewTab?: boolean;\n}\n\ntype TCardWithIconAndLinkOptionalProps = 'linkIcon' | 'linkNewTab';\n\ntype TDefaultProps = Required>;\n\nclass CardWithIconAndLink extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n linkIcon: false,\n linkNewTab: false\n };\n\n public render(): JSX.Element {\n let {\n cardIcon,\n id,\n cardText,\n linkTitle,\n linkUrl,\n linkIcon: hasLinkIcon,\n linkNewTab: shouldLinkNewTab\n } = this.props;\n\n return (\n
    \n
    {cardIcon}
    \n

    \n {cardText.map(\n (text: string, index: number): JSX.Element => {\n return {text};\n }\n )}\n

    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport { CardWithIconAndLink };\n","import * as React from 'react';\n\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport AtomTextField from 'portal-common-library/atoms/AtomTextField';\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\n\nimport eyeClosed from '@app/imageAssets/eyeClosed.svg';\nimport eyeOpened from '@app/imageAssets/eyeOpened.svg';\n\nimport './styles/passwordTextFieldStyles.scss';\n\ninterface IPasswordTextFieldProps extends IBaseProps {\n attributeName: string;\n autoComplete?: string;\n errorText?: string;\n InputProps?: { [key: string]: JSX.Element };\n hasError?: boolean;\n isDisabled?: boolean;\n isFullWidth?: boolean;\n isMultiline?: boolean;\n label: string;\n onChange: (event: React.ChangeEvent) => void;\n onKeyPress?: (event: React.KeyboardEvent) => void;\n placeholder: string;\n isRequired?: boolean;\n rows?: number;\n value: string;\n variant?: 'outlined' | 'standard' | 'filled';\n}\n\nexport interface IPasswordTextFieldState {\n shouldShowPassword: boolean;\n}\n\nclass PasswordTextField extends React.Component {\n constructor(props: IPasswordTextFieldProps) {\n super(props);\n this.state = {\n shouldShowPassword: false\n };\n }\n\n public handleClickShowPassword = (): void => {\n this.setState({ shouldShowPassword: !this.state.shouldShowPassword });\n };\n\n public renderInputAdornment(): JSX.Element {\n let { shouldShowPassword } = this.state;\n\n // note eye is closed when showing password to indicate the eye means to HIDE\n return (\n \n \n <>\n {shouldShowPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n}\n\nexport { PasswordTextField };\n","import * as React from 'react';\n\nimport SearchIcon from '@mui/icons-material/Search';\nimport InputAdornment from '@mui/material/InputAdornment';\n\nimport AtomTextField from 'portal-common-library/atoms/AtomTextField';\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\n\nimport { AtomInteractiveIcon } from '@app/common/atoms';\nimport { TInputChangeEvent } from '@app/common/interfaces';\n\nimport './styles/iconToSearchBar.scss';\n\ninterface IIconToSearchBarState {\n isExpanded: boolean;\n shouldAnimate: boolean;\n timer?: NodeJS.Timeout;\n}\n\nexport interface IIconToSearchBarProps extends IBaseProps {\n search: string;\n handleChange: (event: TInputChangeEvent) => void;\n growDirection: 'right' | 'left';\n minScreenWidth: number;\n}\n\ntype TDefaultProps = Pick;\nclass IconToSearchBar extends React.Component {\n public static defaultProps: TDefaultProps = {\n minScreenWidth: 0,\n };\n\n constructor(props: IIconToSearchBarProps) {\n super(props);\n\n this.state = {\n isExpanded: false,\n shouldAnimate: this.shouldAnimate(),\n timer: undefined,\n };\n }\n\n public setTimer = () => {\n const timer = setTimeout(() => {\n this.setState({ isExpanded: false });\n }, 500); // the transition animation is 0.4s\n\n this.setState({ timer });\n };\n\n public componentDidMount(): void {\n window.addEventListener('resize', this.updateShouldAnimate);\n }\n\n public componentWillUnmount(): void {\n if (this.state.timer) {\n clearTimeout(this.state.timer);\n }\n window.removeEventListener('resize', this.updateShouldAnimate);\n }\n\n public updateShouldAnimate = () => {\n const { search } = this.props;\n const isScreenWideEnough = this.shouldAnimate();\n this.setState({\n shouldAnimate: isScreenWideEnough,\n isExpanded: !isScreenWideEnough || search !== '',\n });\n };\n\n public shouldAnimate = () => {\n return this.getWindowWidth() >= (this.props.minScreenWidth ?? 0);\n };\n\n public getWindowWidth = (): number => {\n return window.innerWidth;\n };\n\n public handleSearchExpand = () => {\n this.setState({ isExpanded: true });\n };\n\n public handleSearchCompress = () => {\n if (!this.props.search) {\n this.setTimer();\n }\n };\n\n public render(): JSX.Element {\n const { id, search, handleChange, dataAttributes, growDirection } = this.props;\n const { isExpanded, shouldAnimate } = this.state;\n\n const searchIcon = (\n
    \n \n
    \n );\n\n const shouldShowIcon = !isExpanded && shouldAnimate;\n\n return (\n
    \n {shouldShowIcon && (\n \n )}\n {!shouldShowIcon && (\n \n \n \n ),\n }}\n />\n )}\n
    \n );\n }\n}\n\nexport { IconToSearchBar };\n","import * as React from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport PhotoSizeSelectActual from '@mui/icons-material/PhotoSizeSelectActual';\nimport Autocomplete, {\n AutocompleteProps,\n AutocompleteRenderInputParams,\n AutocompleteRenderGetTagProps,\n} from '@mui/material/Autocomplete';\nimport Avatar from '@mui/material/Avatar';\nimport Box from '@mui/material/Box';\nimport Chip, { ChipProps } from '@mui/material/Chip';\n\nimport omit from 'lodash/omit';\nimport AtomTextField from 'portal-common-library/atoms/AtomTextField';\nimport { IBaseProps } from 'portal-common-library/interfaces/componentBase';\nimport { IDataAttributes } from 'portal-common-library/interfaces/dataAttributes';\n\ninterface OptionDetails {\n iconUrl: string;\n label: string;\n isDisabled?: boolean;\n}\n\nexport interface IRequiredKey {\n key: string;\n}\n\nexport interface IBaseAutocompleteProps\n extends Omit, // conflicts with AutocompleteProps?.id\n Omit, 'renderInput' | 'ref'> {\n placeholder?: string;\n allowRemove?: boolean;\n shouldShowIcon?: boolean;\n getOptionDetails: (option: T) => OptionDetails;\n}\n\n// this is globally styled via app.scss\nclass BaseAutocomplete extends React.Component> {\n public static defaultProps = {\n placeholder: '',\n allowRemove: true,\n shouldShowIcon: true,\n };\n\n private readonly getOptionLabel = (option: T) => {\n const { getOptionDetails } = this.props;\n\n return getOptionDetails(option).label;\n };\n\n private readonly renderOption = (\n passDownProps: React.HTMLAttributes,\n option: T\n ) => {\n const { getOptionDetails, shouldShowIcon, dataAttributes } = this.props;\n\n const details = getOptionDetails(option);\n\n const dataQa: IDataAttributes = { 'data-qa': `${dataAttributes['data-qa']}_option` };\n const optionDataAttributes: IDataAttributes = { ...dataAttributes, ...dataQa };\n\n return (\n \n {shouldShowIcon && (\n \n \n \n )}\n {/* TODO: WS-16165 Add uniq id to span for QA purposes */}\n {details.label}\n \n );\n };\n\n private readonly renderTags = (tags: T[], getTagProps: AutocompleteRenderGetTagProps) => {\n const { getOptionDetails, shouldShowIcon, allowRemove, dataAttributes } = this.props;\n\n return tags.map((option, index) => {\n const dataQa: IDataAttributes = { 'data-qa': `${dataAttributes['data-qa']}_chip` };\n const chipDataAttributes: IDataAttributes = { ...dataAttributes, ...dataQa };\n const { iconUrl, label, isDisabled } = getOptionDetails(option);\n const avatar = shouldShowIcon ? (\n \n \n \n ) : undefined;\n\n let tagProps: ChipProps = getTagProps({ index });\n\n if (!allowRemove || isDisabled) {\n tagProps = omit(tagProps, 'onDelete');\n }\n\n return (\n // eslint-disable-next-line react/jsx-key -- key provided by tagProps\n }\n disabled={isDisabled}\n />\n );\n });\n };\n\n private readonly noop = () => null;\n\n private readonly renderInput = (params: AutocompleteRenderInputParams) => {\n const { placeholder } = this.props;\n\n return (\n \n );\n };\n\n public render(): JSX.Element {\n const { dataAttributes } = this.props;\n\n return (\n \n );\n }\n}\n\nexport { BaseAutocomplete };\n","import * as React from 'react';\n\nimport { IDashboardGame } from '@app/common/interfaces';\nimport {\n BaseAutocomplete,\n IBaseAutocompleteProps,\n IRequiredKey,\n} from '@app/common/molecules/BaseAutocomplete';\n\nimport { TGameAccess } from '../helpers';\n\nexport type TGamesAutocompleteOption = IDashboardGame & IRequiredKey;\n\ntype IGamesAutocompleteProps = Omit<\n IBaseAutocompleteProps,\n 'getOptionDetails'\n> & {\n userRolesU6GameRolesAndPermissions: boolean;\n gameAccess?: TGameAccess;\n};\n\nclass GamesAutocomplete extends React.Component {\n private readonly isDisabled = (game: IDashboardGame) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { gameAccess, userRolesU6GameRolesAndPermissions } = this.props;\n\n return (\n userRolesU6GameRolesAndPermissions &&\n (gameAccess?.every(({ productionId }) => productionId !== game.productionId) ?? false)\n );\n };\n\n private readonly getOptionDetails = (game: TGamesAutocompleteOption) => {\n return {\n iconUrl: game.iconUrl,\n label: game.title,\n isDisabled: this.isDisabled(game),\n };\n };\n\n public render(): JSX.Element {\n return (\n \n placeholder=\"Games\"\n getOptionDetails={this.getOptionDetails}\n {...this.props}\n getOptionDisabled={this.isDisabled}\n />\n );\n }\n}\n\nexport { GamesAutocomplete };\n","export const ALPHA_NUMERIC_CHARACTERS: RegExp = /[^a-zA-Z0-9]/;\n// eslint-disable-next-line security/detect-unsafe-regex\nexport const VALID_EMAIL_REGEX: RegExp = /^([\\w.%+-]+)@([\\w-]+\\.)+([\\w]{2,})$/i;\n\nexport const WHITE_SPACES = new RegExp('\\\\s');\n","import axios, {\n AxiosResponse as AxiosResponseOriginal,\n AxiosError as AxiosErrorOriginal,\n} from 'axios';\n\n// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\nconst token: string = document.querySelector(\"meta[name='csrf-token']\")!.getAttribute('content')!;\naxios.defaults.headers.common['X-CSRF-TOKEN'] = token;\n\n// this is to avoid separate imports.\nexport type AxiosResponse = AxiosResponseOriginal;\nexport type AxiosError = AxiosErrorOriginal;\nexport default axios;\n","import { AxiosPromise } from 'axios';\nimport * as rax from 'retry-axios';\n\nimport { IFeature } from '@app/common/interfaces';\nimport axios from '@app/common/setup/axiosWithHeader';\n\nexport interface IEnvironment {\n appEnv: string;\n nodeEnv: string;\n railsEnv: string;\n skillzUrl: string;\n cmsBaseUrl: string;\n skillzDocBaseUrl: string;\n themeImagesAwsS3Bucket: string;\n bestPracticeProductionIds: number[];\n progressionPlayerDataMaxCount: [number, number][];\n progressionInGameItemsMaxCount: [number, number][];\n zendeskDashboardEarlyAdopterGameIds: number[];\n prePrizeAnalyticsPublisherIds: number[];\n discordInviteUrl: string;\n oAuthClientId: string | null;\n oAuthRedirectUri: string;\n oAuthDomain: string;\n}\n\nexport interface IAppConfig {\n featureFlags: IFeature;\n environment: IEnvironment;\n}\n\nexport const initialAppConfig = {\n featureFlags: {},\n environment: {\n appEnv: '',\n nodeEnv: '',\n railsEnv: '',\n skillzUrl: '',\n cmsBaseUrl: '',\n skillzDocBaseUrl: '',\n discordInviteUrl: '',\n themeImagesAwsS3Bucket: '',\n bestPracticeProductionIds: [],\n progressionPlayerDataMaxCount: [],\n progressionInGameItemsMaxCount: [],\n zendeskDashboardEarlyAdopterGameIds: [],\n prePrizeAnalyticsPublisherIds: [],\n oAuthClientId: '',\n oAuthRedirectUri: '',\n oAuthDomain: '',\n },\n};\n\nconst axiosWithRetry = axios.create();\naxiosWithRetry.defaults.raxConfig = {\n instance: axiosWithRetry,\n};\nrax.attach(axiosWithRetry);\n\nexport const fetchEnvironmentConfig = () =>\n axiosWithRetry({\n method: 'get',\n url: `/api_internal/v1/configuration?name=developer-console`,\n raxConfig: {\n retry: 10,\n },\n }) as AxiosPromise;\n","/**\n * !TRANSITIONAL COMPONENT\n * This component does not render anything, it exists to pass\n * data from old redux snackbar actions to the new snackbar function.\n * No longer required when we fully move away from redux\n */\nimport React, { useEffect } from 'react';\n\nimport { useSnackbarContext } from '@skillzet/components';\n\nimport { ISnackbar } from '../interfaces';\n\nexport interface IProps extends ISnackbar {\n closeSnackbar: () => void;\n}\n\nfunction ReduxSnackbarAdaptor({ isSnackbarOpen, text, autoHideDuration, closeSnackbar }: IProps) {\n const { show } = useSnackbarContext();\n\n useEffect(() => {\n if (isSnackbarOpen) {\n // updated that redux snackbar will be info snackbar with no icon and with close icon\n show(\n text,\n 'success',\n { duration: autoHideDuration as number, icon: false },\n { alertProps: { style: { backgroundColor: '#ffffff' } } }\n );\n\n /**\n * calling `closeSnackbar` immediately here to update the old snackbar's state and set it to closed\n * this does not close the new snackbar\n */\n closeSnackbar();\n }\n }, [isSnackbarOpen]);\n\n return <>;\n}\n\nexport default ReduxSnackbarAdaptor;\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n// TODO UPDATE [U3] update types when types are defined\nimport { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { fetchCurrentUser, fetchPermissions, updateCurrentUser } from '@app/common/actions';\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst Account = loadable(\n () => import(/* webpackChunkName: \"account\" */ './Account')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState) => {\n let {\n currentUser,\n publisher: { publisherInfo },\n feature,\n permissions,\n } = state;\n\n return {\n publisherInfo,\n currentUser,\n feature,\n permissions,\n };\n};\n\nconst mapDispatchToProps = {\n fetchCurrentUser,\n updateCurrentUser,\n fetchPermissions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TAccountConnectedProps = ConnectedProps & IWithSnackbarProp;\n\nexport default connector(withRouter(Account));\n","import { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { fetchAnalytics, fetchAnalyticsDateRangeLimit, openSnackbar } from '@app/common/actions';\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IRootState } from '@app/core/rootReducer';\nimport { showSurvey } from '@app/modules/Survey/actions';\n\nconst Analytics = loadable(\n () => import(/* webpackChunkName: \"analytics\" */ './Analytics')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState) => {\n let {\n publisher: { publisherInfo },\n analytics,\n feature,\n } = state;\n\n return {\n publisher: publisherInfo,\n analytics,\n feature,\n };\n};\n\nconst mapDispatchToProps = {\n fetchAnalytics,\n fetchAnalyticsDateRangeLimit,\n showSurvey,\n openSnackbar,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TAnalyticsConnectedProps = ConnectedProps &\n RouteComponentProps &\n IWithSnackbarProp;\n\nexport default connector(withRouter(Analytics));\n","import * as ApiUtils from './utils';\nimport { Dispatch } from 'redux';\nimport { TThunkAction, TDispatch, IAction, IGame } from '@app/common/interfaces';\n\nexport enum CONTACT_US {\n RECEIVE_GAMES = 'contactUs/RECEIVE_GAMES',\n RECEIVE_SDK_VERSIONS = 'contactUs/RECEIVE_SDK_VERSIONS'\n}\n\ntype TReceiveContactUs = (data: T) => IAction;\n\nexport const receiveGames: TReceiveContactUs = (data: IGame[]): IAction => {\n return {\n type: CONTACT_US.RECEIVE_GAMES,\n data\n };\n};\n\nexport const receiveSdkVersions: TReceiveContactUs = (\n data: string[]\n): IAction => {\n return {\n type: CONTACT_US.RECEIVE_SDK_VERSIONS,\n data\n };\n};\nexport const fetchGames: TThunkAction = (): TDispatch => {\n return (dispatch: Dispatch): any => {\n return ApiUtils.fetchGames().then((response: IGame[]) => {\n return dispatch(receiveGames(response));\n });\n };\n};\n\nexport const fetchSdkVersions: TThunkAction = (): TDispatch => {\n return (dispatch: Dispatch): any => {\n return ApiUtils.fetchSdkVersions().then((response: string[]) => {\n return dispatch(receiveSdkVersions(response));\n });\n };\n};\n","import loadable from '@loadable/component';\nimport {\n connect,\n ConnectedProps\n} from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n fetchGames,\n openSnackbar\n} from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { fetchSdkVersions } from './actions';\n\nconst ContactUs = loadable(() => import(/* webpackChunkName: \"contact-us\" */ './ContactUs'));\n\nconst mapStateToProps = (state: IRootState) => {\n const { user, contactUs, games } = state;\n\n return { user, contactUs, games };\n};\n\nconst mapDispatchToProps = {\n fetchGames,\n fetchSdkVersions,\n openSnackbar\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TContactUsConnectedProps = ConnectedProps;\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(ContactUs));\n","import loadable from '@loadable/component';\n\nconst CookieBanner = loadable(\n () => import(/* webpackChunkName: \"cookie-banner\" */ './CookieBanner')\n);\n\nexport default CookieBanner;\n","import { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport {\n clearGameInfo,\n fetchGames,\n fetchPermissions,\n openGameInfoModal,\n openProfileModal,\n} from '@app/common/actions';\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst Dashboard = loadable(\n () => import(/* webpackChunkName: \"dashboard\" */ './Dashboard')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState) => {\n let {\n publisher: { publisherInfo },\n user,\n games,\n feature,\n permissions,\n } = state;\n\n return {\n publisher: publisherInfo,\n user,\n games,\n feature,\n permissions,\n };\n};\n\nconst mapDispatchToProps = {\n openGameInfoModal,\n clearGameInfo,\n fetchGames,\n fetchPermissions,\n openProfileModal,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TDashboardConnectProps = ConnectedProps &\n RouteComponentProps &\n IWithSnackbarProp;\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(Dashboard));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { updateGame, closeGameInfoModal } from '@app/common/actions';\nimport { IGameInfo } from '@app/common/interfaces';\nimport { IRootState } from '@app/core/rootReducer';\nimport { fetchGameStateByGameId } from '@app/modules/GameManagement/common/actions';\n\nimport { createGame } from './actions';\n\nconst GameInfoModal = loadable(\n () => import(/* webpackChunkName: \"game-management-game-info-modal\" */ './GameInfoModal')\n);\n\ninterface IStateProps {\n gameInfo: IGameInfo;\n isOpen: boolean;\n totalGames: number;\n}\n\nconst mapStateToProps = ({ gameInfo, modalManagement, games }: IRootState): IStateProps => {\n return {\n gameInfo,\n isOpen: modalManagement.isGameInfoModalOpen,\n totalGames: games.totalCount,\n };\n};\n\nconst mapDispatchToProps = {\n createGame,\n updateGame,\n closeGameInfoModal,\n fetchGameStateByGameId,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TGameInfoModalProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(GameInfoModal));\n","import { Dispatch } from 'redux';\nimport { AxiosResponse } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport axios from '@app/common/setup/axiosWithHeader';\nimport { generateModalGameFormData } from '@app/common/helpers';\nimport { receiveModalGameInfo } from '@app/common/actions';\nimport { IGameInfo, IAction, IModalGame } from '@app/common/interfaces';\n\nexport const createGame = (game: IModalGame) => {\n return (dispatch: Dispatch>): Promise => {\n let data: FormData = generateModalGameFormData(game);\n\n return axios\n .post('/api_internal/v1/games/', data)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveModalGameInfo(response.data));\n });\n };\n};\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { fetchGameAccess, fetchGames, fetchPermissions, findGame } from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\nimport { fetchGameLatestSdkDownload } from '@appIntegration/modules/SetupSDK/actions';\nimport { clearGamePerformanceStatus } from '@appOverview/actions';\n\nimport { fetchGameStateByGameId } from './common/actions';\nimport { IMatchParamsGameId } from './common/interfaces';\n\nconst GameManagement = loadable(\n () => import(/* webpackChunkName: \"game-management\" */ './GameManagement')\n);\n\nconst mapStateToProps = (state: IRootState) => {\n return {\n gameInfo: state.gameInfo,\n permissions: state.permissions,\n gameAccess: state.gameAccess,\n feature: state.feature,\n };\n};\n\nconst mapDispatchToProps = {\n fetchGames,\n fetchGameStateByGameId,\n fetchGameLatestSdkDownload,\n clearGamePerformanceStatus,\n findGame,\n fetchPermissions,\n fetchGameAccess,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TGameManagementConnectedProps = ConnectedProps &\n RouteComponentProps;\n\nexport default connector(withRouter(GameManagement));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { IRootState } from '@app/core/rootReducer';\n\nconst HomePage = loadable(() => import(/* webpackChunkName: \"home-page\" */ './HomePage'));\n\nconst mapStateToProps = (state: IRootState) => {\n let { feature } = state;\n\n return {\n feature,\n };\n};\n\nconst connector = connect(mapStateToProps);\n\nexport type THomePageProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(HomePage));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { openGameInfoModal } from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nexport const Introduction = loadable(\n () => import(/* webpackChunkName: \"integration-introduction\" */ './Introduction')\n);\n\nconst mapStateToProps = (state: IRootState) => {\n let { gameInfo } = state;\n\n return {\n gameInfo,\n };\n};\n\nconst mapDispatchToProps = { openGameInfoModal };\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TIntroductionConnectedProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(Introduction));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { openSnackbar } from '@app/common/actions';\n\nconst Jobs = loadable(() => import(/* webpackChunkName: \"jobs\" */ './Jobs'));\n\nconst mapDispatchToProps = { openSnackbar };\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport type TJobsConnectedProps = ConnectedProps;\n\nexport default connector(withRouter(Jobs));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { showSurvey } from '@app/modules/Survey/actions';\n\nconst CaseStudyBenchmarks = loadable(\n () => import(/* webpackChunkName: \"case-study-benchmarks\" */ './CaseStudyBenchmarks')\n);\n\nconst mapDispatchToProps = { showSurvey };\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport type TCaseStudyBenchmarksConnectedProps = ConnectedProps &\n RouteComponentProps;\n\nexport default connector(withRouter(CaseStudyBenchmarks));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nconst CaseStudyChat = loadable(\n () => import(/* webpackChunkName: \"case-study-chat\" */ './CaseStudyChat')\n);\n\nconst mapStateToProps = () => {\n return {} as Record;\n};\n\nconst mapDispatchToProps = {};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TCaseStudyChatConnectedProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(CaseStudyChat));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nconst CaseStudyInGameItems = loadable(\n () => import(/* webpackChunkName: \"case-study-in-game-items\" */ './CaseStudyInGameItems')\n);\n\nconst mapStateToProps = () => {\n return {} as Record;\n};\n\nconst mapDispatchToProps = {};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TCaseStudyInGameItemsConnectedProps = ConnectedProps &\n RouteComponentProps;\n\nexport default connector(withRouter(CaseStudyInGameItems));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nconst CaseStudyProgression = loadable(\n () => import(/* webpackChunkName: \"case-study-progression\" */ './CaseStudyProgression')\n);\n\nconst mapStateToProps = () => {\n return {} as Record;\n};\n\nconst mapDispatchToProps = {};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TCaseStudyProgressionConnectedProps = ConnectedProps &\n RouteComponentProps;\n\nexport default connector(withRouter(CaseStudyProgression));\n","import React from 'react';\n\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIosNew';\nimport { Typography } from '@mui/material';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\n\nimport { AxiosResponse } from 'axios';\nimport { useHistory } from 'react-router-dom';\n\nimport { PageHeader } from '@app/common/components';\nimport LoadingIndicator from '@app/modules/ContentManagementSystem/modules/LoadingIndicator/LoadingIndicator';\nimport { hasLaunchedToStore } from '@app/modules/Dashboard/helpers';\n\nimport { sortAndRenderLearningCenterCards, learningCenterSortComparator } from './helpers';\nimport { ILearningCenterCard, ILearningCenterCategory, TSortKey } from './interfaces';\nimport { useLearningCenterCategories, useLearningCenterCards, useGames } from './queries';\n\nfunction BackButton() {\n const history = useHistory();\n\n const handleClick = () => {\n // https://stackoverflow.com/questions/37385570/how-to-know-if-react-router-can-go-back-to-display-back-button-in-react-app\n if (history.action === 'POP') {\n return history.push('/dashboard');\n }\n\n history.goBack();\n };\n\n return (\n }\n onClick={handleClick}\n data-qa={'back-button'}\n >\n Back\n \n );\n}\n\nconst renderLearningCenterContent = (\n { data: categories }: AxiosResponse,\n { data: cards }: AxiosResponse,\n cardsSortBy: keyof ILearningCenterCard,\n categoriesSortBy: keyof ILearningCenterCategory,\n shouldCardsMaintainAspectRation?: boolean\n) => {\n return categories\n .sort(learningCenterSortComparator('asc', categoriesSortBy as TSortKey))\n .map((category) => (\n \n \n {category.CategoryName}\n \n \n {/* cards should maintain aspect ratio in learning center only */}\n {sortAndRenderLearningCenterCards(\n category.id,\n cards,\n cardsSortBy,\n shouldCardsMaintainAspectRation\n )}\n \n \n ));\n};\n\nexport default function ManagedLearningCenterIndex() {\n const learningCenterCategoriesQuery = useLearningCenterCategories();\n const learningCenterCardsQuery = useLearningCenterCards();\n const gamesQuery = useGames();\n\n const learningCenterCategories = learningCenterCategoriesQuery.data;\n const learningCenterCards = learningCenterCardsQuery.data;\n const games = gamesQuery.data;\n\n if (!learningCenterCategories || !learningCenterCards || !games) {\n return (\n \n \n \n );\n }\n\n const cardsSortByColumn = hasLaunchedToStore(games.items)\n ? 'learningCenterNonFtueOrder'\n : 'learningCenterFtueOrder';\n\n return (\n <>\n \n \n \n \n\n \n {renderLearningCenterContent(\n learningCenterCategories,\n learningCenterCards,\n cardsSortByColumn,\n 'Order',\n true\n )}\n \n \n );\n}\n","import React from 'react';\n\nimport { Switch, Route } from 'react-router-dom';\n\nimport NotFoundPage from '@app/modules/NotFoundPage';\n\nimport CaseStudyBenchmarks from './../CaseStudyBenchmarks';\nimport CaseStudyChat from './../CaseStudyChat';\nimport CaseStudyInGameItems from './../CaseStudyInGameItems';\nimport CaseStudyProgression from './../CaseStudyProgression';\nimport ManagedLearningCenterIndex from './ManagedLearningCenterIndex';\n\nexport default function ManagedLearningCenter() {\n return (\n
    \n \n {window.appConfig.featureFlags.progressionPr3iIgiCaseStudy && (\n \n )}\n {window.appConfig.featureFlags.progressionPr7LearningCenterAndCaseStudy && (\n \n )}\n \n \n\n \n \n \n
    \n );\n}\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { fetchPublisher, findUser, fetchGames } from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst NavBar = loadable(() => import(/* webpackChunkName: \"nav-bar\" */ './NavBar'));\n\nconst mapStateToProps = (state: IRootState, ownProps: Record) => {\n return {\n ...ownProps,\n user: state.user,\n publisher: state.publisher.publisherInfo,\n games: state.games,\n };\n};\n\nconst mapDispatchToProps = {\n fetchPublisher,\n findUser,\n fetchGames,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TNavBarConnectedProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(NavBar));\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n fetchGameChallenge,\n fetchGameChallengeProposal,\n fetchPermissions,\n} from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst NflChallenge = loadable(\n () => import(/* webpackChunkName: \"nfl-challenge\" */ './NflChallenge')\n);\n\nconst mapStateToProps = (state: IRootState) => {\n const { feature } = state;\n\n return {\n feature,\n };\n};\n\nconst mapDispatchToProps = {\n fetchGameChallenge,\n fetchGameChallengeProposal,\n fetchPermissions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TNflChallengeConnectedProps = ConnectedProps;\n\nexport default connector(withRouter(NflChallenge));\n","import loadable from '@loadable/component';\n\nimport { ConnectedProps, connect } from 'react-redux';\n\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { fetchNotificationItems } from './actions';\n\nconst Notification = loadable(\n () => import(/* webpackChunkName: \"notification\" */ './Notification')\n);\n\nconst mapStateToProps = (state: IRootState) => {\n const {\n publisher: { publisherInfo },\n user,\n } = state;\n\n return {\n publisherInfo,\n user,\n };\n};\n\nconst mapDispatchToProps = {\n fetchNotificationItems,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TNotificationConnectedProps = ConnectedProps;\n\nexport default connector(Notification);\n","import Loadable from 'react-loadable';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { fetchPublisher, findUser, openSnackbar } from '@app/common/actions';\nimport { Loading } from '@app/common/components';\nimport { ILoadableComponent } from '@app/common/interfaces';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst PeekHeader: ILoadableComponent['component'] = Loadable({\n loader: () => import(/* webpackChunkName: \"peek-header\" */ './PeekHeader'),\n loading: Loading,\n});\n\nconst mapStateToProps = (state: IRootState) => {\n let {\n publisher: { publisherInfo },\n user,\n } = state;\n\n return {\n publisher: publisherInfo,\n user,\n };\n};\n\nconst mapDispatchToProps = {\n openSnackbar,\n findUser,\n fetchPublisher,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TPeekHeaderConnectedProps = ConnectedProps;\n\nexport default connector(withRouter(PeekHeader));\n","import Loadable from 'react-loadable';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { openSnackbar } from '@app/common/actions';\nimport { Loading } from '@app/common/components';\nimport { ILoadableComponent } from '@app/common/interfaces';\n\nconst PeekPage: ILoadableComponent['component'] = Loadable({\n loader: () => import(/* webpackChunkName: \"peek-page\" */ './PeekPage'),\n loading: Loading\n});\n\nconst mapDispatchToProps = { openSnackbar };\n\nexport default connect(null, mapDispatchToProps)(withRouter(PeekPage));\n","import loadable from '@loadable/component';\n\nconst Playground = loadable(() => import(/* webpackChunkName: \"playground\" */ './Playground'));\n\nexport default Playground;\n","import loadable from '@loadable/component';\nimport {\n connect,\n ConnectedProps\n} from 'react-redux';\nimport {\n RouteComponentProps,\n withRouter\n} from 'react-router-dom';\n\nimport { openSnackbar } from '@app/common/actions';\n\nconst Playground = loadable(() => import(/* webpackChunkName: \"playground-old\" */ './Playground'));\n\nconst mapDispatchToProps = {\n openSnackbar\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport type TPlayGroundOldConnectedProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(Playground));\n","import loadable from '@loadable/component';\n\nconst PrivacyPolicySnackBar = loadable(\n () => import(/* webpackChunkName: \"cookie-banner\" */ './PrivacyPolicyBar')\n);\n\nexport default PrivacyPolicySnackBar;\n","import loadable from '@loadable/component';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport {\n closeProfileModal,\n fetchPublisher,\n findUser,\n openSnackbar,\n fetchPermissions\n} from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst ProfileModal = loadable(\n () => import(/* webpackChunkName: \"profile-modal\" */ './ProfileModal')\n);\n\nconst mapStateToProps = ({\n publisher: { publisherInfo },\n user,\n modalManagement: { isProfileModalOpen },\n feature,\n permissions\n}: IRootState) => {\n return {\n publisher: publisherInfo,\n user,\n isProfileModalOpen,\n feature,\n permissions\n };\n};\n\nconst mapDispatchToProps = {\n closeProfileModal,\n fetchPublisher,\n findUser,\n openSnackbar,\n fetchPermissions\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TProfileModalConnectedProps = ConnectedProps & RouteComponentProps;\n\nexport default connector(withRouter(ProfileModal));\n","import axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { useQuery } from 'react-query';\n\nimport { handleError } from '@app/common/helpers';\nimport { IPublisher2 } from '@app/common/interfaces';\n\nconst fetchPublisher = () =>\n axios\n .get(`/api_internal/v1/publisher`)\n .then(camelize)\n .then(({ data }: AxiosResponse) => data)\n .catch(handleError);\n\nexport const updatePublisherRevenueModelAgreedOn = (publisherId: number) =>\n axios\n .patch(`/api_internal/v1/publishers/${publisherId}/agreed_to_revenue_model`)\n .then(camelize)\n .catch(handleError);\n\nexport const usePublisherQuery = (options = {}) => {\n const fetcher = () => fetchPublisher();\n\n return useQuery(['publisher'], fetcher, options);\n};\n","import * as React from 'react';\n\nimport { Typography, Stack, Theme } from '@mui/material';\n\nexport const COOKIE_REVENUE_MODEL_CHANGE = 'revenue_model_change_seen';\n\ninterface IProps {\n theme: Theme;\n}\n\nexport function WithActionModalHeader({ theme }: IProps) {\n return (\n \n IMMEDIATE ACTION NEEDED \n \n Skillz will transition to the new Developer Revenue Share Model on \n \n May 1st, 2023\n \n . We are excited for you to reap the rewards from this new revenue model. To get started,\n please review our updated Developer Terms and Conditions of Service and click the "I\n Agree" button to let us know that you are onboard and ready to roll. Please complete\n this action before May 1st, 2023, in order to avoid any disruption to your game(s) in the\n service.\n \n \n );\n}\n\nexport function WithNoActionModalHeader({ theme }: IProps) {\n return (\n \n Announcement\n \n Skillz will transition to the new Developer Revenue Share Model on \n \n May 1st, 2023\n \n . We are excited for you to reap the rewards from this new revenue model. To get started,\n please review our updated Developer Terms and Conditions of Service.\n \n \n );\n}\n\nexport const revenueModelNotificationCheckboxLabel =\n 'I have fully read through the terms and conditions';\n\nexport const revenueModelNotificationAgreedSnackbar =\n 'You have agreed to the updated terms and conditions';\n\nexport const revenueModelNotificationContent = `\n\n### Guiding Principles\n\nWhen reviewing our Developer Terms, please keep in mind our two guiding principles:\n* We love gaming and have a deep respect for game creators. We work hard to support developers in unlocking economic opportunity through their craft, in a way that’s beneficial for everyone. \n* Our players and their experience are very important to us. We take multiple steps to ensure fair play across our platform so that players can thrive, win and enjoy the thrill of competition.\n\n### Terms and Conditions\nThese Developer Terms define the relationship between SKILLZ Inc. together with its subsidiary, Skillz Platform Inc. (collectively, “Skillz”) and you, the person registering for developer services or the organization or entity that has authorized you to register for developer services (in either case, “Company”). By clicking “I Agreed and Accepted” at the end of this agreement, and in creating a developer account, Company agrees that (i) he, she, or it has read, understands, agrees, and accepts these Developer Terms and Conditions of Service and agrees to be bound by these Terms and Conditions of Service and all terms, policies and guidelines incorporated in the Terms of Service by reference (collectively, the “Agreement”); and (ii) if Company is an individual, is at least eighteen (18) years old. If Company does not agree to be bound by this Agreement, Company must not create a developer account nor use the Monetization Services (as defined below) in any way, and Company must check the button indicating non-acceptance. The Monetization Services are offered to Company conditioned on Company’s acceptance without modification of this Agreement. The date of Company’s acceptance of these Developer Terms and Conditions of Service is the “Effective Date” of the Agreement.\n\nSkillz may modify the Agreement at any time by posting such modifications to the Skillz website (https://skillz.com/legal) and Company’s account homepage. Modifications will be effective either upon such posting, or, if Skillz informs Company by email, when Skillz sends that email. Changes will not apply retroactively and generally will become effective 14 days after they are posted or, if emailed, at the time Skillz sends that email. If Company does not agree to any modified terms in the Agreement, Company must terminate this Agreement and stop using the Monetization Services.\n\n### BACKGROUND\n\nSkillz designs and provides online, real-money, tournament-based competitions (“Competitions”) to developers who wish to enable users of their gaming applications to participate in such Competitions. Company has developed a game (“Game”) and wishes to modify such Game to enable the end users who register for such Game (“Users”) to participate in Competitions. Skillz is willing to license its software developer kit (together with all content thereof, and all updates, enhancements, modifications and derivative works thereof, including updates, upgrades or error corrections, the “SDK”) to Company to allow Company to modify its Game to enable Users to participate in Competitions, and to establish and maintain Competitions that are specific to the Game, all in accordance with this Agreement. Skillz and Company agree to the following:\n\n### 1. MONETIZATION SERVICES\n\n1.1. Services. Upon deployment of the Modified Game (defined in Section 2) in a live production environment and subject to the terms and conditions of this Agreement, Skillz shall (i) establish and manage Competitions through its proprietary online, hosted monetization platform (“Monetization Platform”) by creating Game tournaments, facilitating User-entry into Competitions, managing and hosting User’s Competition accounts, collecting User entry fees, distributing User payouts, resolving User disputes pertaining to his/her participation in Competitions, and providing all tiers of customer support for User inquiries related to the Competitions (but not related to the Game) and (ii) provide Company with access to reporting data that details activity under such Competitions, including the number of tournaments played, User actions, and related revenue (“Competition Data”) (provision of the Monetization Platform and the Competition Data are collectively referred to as “Monetization Services”). Skillz may modify, enhance, update or provide appropriate replacements for Monetization Services or any element thereof at any time, and remove functionalities or features of the Monetization Services at any time, and Skillz may suspend or stop providing Monetization Services altogether.\n\n1.2. SDK License. Skillz grants to Company during the Term a limited, non-exclusive and non-transferable license to install, run and copy the SDK solely for the limited purpose of modifying the Game to enable Skillz to provide Monetization Services with respect to such Game. This license does not include the right to reproduce the SDK, the Monetization Platform or the Monetization Services, or to sublicense, resell, or distribute the foregoing. Company shall not allow any third party to access the Monetization Services. Company shall not itself and shall not allow any third party to (i) decompile, disassemble, or otherwise reverse engineer or attempt to reconstruct or discover any source code or underlying ideas, user interface techniques or algorithms, file formats or programming or interoperability interfaces of the Monetization Services, the SDK or any portion thereof, (ii) remove any product identification, copyright or other notices, or (iii) modify the Monetization Services or the SDK or incorporate the Monetization Services or SDK into or with other software or services or make derivative works thereof, or (iv) take any action that would cause the Monetization Services or the SDK to be placed in the public domain. All rights not expressly granted to Company herein are expressly reserved by Skillz, and nothing in this Agreement will be deemed to grant, by implication or estoppel, a license under any of Skillz’s or its licensors’ existing or future rights in or to the SDK, Monetization Platform or Competition Data.\n\n1.3. Suspension. Company may suspend its User’s access to and/or participation in a Game’s Competitions at any time in its sole discretion and upon notice to Skillz. Skillz may suspend or terminate provision of Monetization Services or part thereof (including without limitation provision of Competitions) at any time in its sole discretion upon notice to Company. Company may display Advertisements preceding, following, or during any virtual currency tournament-based competitions that do not include a real money entry fee. Skillz may immediately suspend Monetization Services or part thereof in the event that Company displays any content that promotes or references a third party product or service or any hyperlinked content (collectively, “Advertisements”) preceding, immediately following, or during any Competition.\n\n1.4. Promotion. Skillz and the entities that participate in Skillz’s affiliate program (“Affiliates”) may use Company’s name, trademarks and logos solely for the purpose of indicating that Company is a client of Skillz in Skillz’s and its Affiliates’ advertising, marketing or other promotional materials, and Skillz and its Affiliates may identify the Company and the Game as part of Skillz’ network.\n\n1.5. User Information. As a condition to access to Competitions, each User shall be required to read and agree to the User Terms and Conditions of Service provided by Skillz from time to time (“Terms of Use”). Skillz may suspend or terminate any User’s access to a Competition, in Skillz’s sole discretion. Skillz may collect and store personally identifiable information from Users in providing Monetization Services, in which case Skillz will comply with all applicable laws and its then-current privacy policy (see https://skillz.com/privacy-policy). Skillz may collect anonymous aggregated and/or statistical data reflecting Company’s and Users’ use of Monetization Services and may use such data for tracking, reporting and other activities in connection with Skillz’s business. Skillz will not (i) sell personally identifiable User data to any third party, nor (ii) aggregate or present User data in a form or manner that would permit a third party to identify any individual’s personal information or identify the data as associated with Company or the Game. Skillz will endeavor to resolve User disputes regarding participation in Competitions. If there is a dispute between Company and a User apart from Monetization Services, however, Skillz is under no obligation to become involved, and Company will manage such dispute or disagreement directly. Company will not make any claims against Skillz with respect to Company’s User dealings.\n\n1.6. Exclusivity. From the Effective Date through the later of either (i) the first anniversary of the Effective Date (even if such anniversary occurs after termination of this Agreement); or (ii) ninety (90) days after termination or expiration of this Agreement, Company shall not enter into any agreement with any third party that provides services similar to the Monetization Services or Monetization Platform, nor will Company offer to customers any in-Game competition functionality similar to the Monetization Services or Monetization Platform.\n\n1.7. Restricted Use. To maintain User trust, Company and Company’s affiliates and their respective officers, directors, managers, partners, employees (and their immediate family members) and agents may not enter tournament-based competitions against Users in the Modified Game.\n\n### 2. COMPANY OBLIGATIONS AND RESTRICTIONS\n\nCompany shall modify and upload the Game(s) through the SDK and developer.skillz.com (“**Modified Game**”). Skillz may review each Modified Game and determine, in Skillz’s sole discretion, if the Modified Game is eligible for the Monetization Services. Company represents and warrants that it owns or has all necessary rights to the Game and its content and components (“Content”) in order to allow both parties to perform this Agreement. Company represents and warrants that the Game and Content shall not contain, or contain links to, content which is unlawful, libelous, defamatory, or contrary to public policy.\n\n### 3. REVENUE SHARE\n\nAt Skillz, we passionately operate with fairness so everyone can win. This philosophy extends to our revenue share terms, which provide a sliding scale of revenue, based on an individual developer's contributions to the network. The more players engaging in real-money play your game brings to the network, the more revenue you earn. \n\nOn a monthly basis, Skillz shall, for each Modified Game, pay Company a percentage (the “**Company Revenue Percentage**”) of the aggregate entry fees paid by Users within such Modified Game less a percentage (the “**Company Tax Percentage**”) of Taxes incurred by Skillz which are directly attributable to Competitions and Users within such Modified Game. The Company Revenue Percentage and Company Tax Percentage will correspond to the highest Tier achieved by such Modified Game during the trailing three-month period ending with the applicable month. The Tier for each Modified Game shall be determined by the number of new User installations of such Modified Game from all sources within a particular month and the number of Users within such Modified Game that converted into first time depositors on the Skillz Monetization Platform (“**First Time Payers**”) during such month as reflected in the below schedule. “**Taxes**” for purposes of this provision means all taxes imposed on Skillz by any governmental authority (whether national, state, provincial, regional, local or any other subdivision) in connection with the provision of the Monetization Services to Company and shall be prorated if imposed in connection with multiple developers to reflect that portion of the Taxes attributable to Company. For each Modified Game, the Company’s “**Net Revenue Share**” is (a) the Company’s Revenue Percentage multiplied by the aggregate entry fees, less (b) the Company Tax Percentage multiplied by Taxes (“**Company Tax Allocation**”). \n\n| Tier | Install Threshold | First Time Payers to Skillz Network Threshold | Company Revenue Percentage | Company Tax Percentage |\n| -----| ----------------- | --------------------------------------------- | -------------------------- | ---------------------- |\n| A | 0 | 0 | 4.00% | 50% |\n| B | 1,000 | 30 | 4.45% | 56% |\n| C | 10,000 | 300 | 5.00% | 63% |\n| D | 35,000 | 1,050 | 6.70% | 84% |\n| E | 350,000 and more | 10,500 and more | 7.50% | 94% |\n\nFor illustrative purposes only:\n* If, with respect to a Modified Game during a particular month, there were 20,000 new User installations of such Modified Game, and 200 First Time Payers, the Modified Game would achieve Tier B for that Month. \n* If a Modified Game achieves Tier A in January, Tier B in February and Tier A in March, with respect to March revenue, the highest Tier achieved during the three-month trailing period would be Tier B; therefore, the Company Revenue Percentage and Company Expense Percentage to be applied to March entry fees would be 4.45% and 56%, respectively. \n* If, in November, a Modified Game has $100,000 in entry fees, and the best performance of the Modified Game in any one month within the September, October and November time period was 200,000 new User installations and 400 First Time Payers, that would result in a Tier C ranking for the November revenue share. ($100,000 * 5.00%, less 63% of Taxes)\n\nIf Company’s Tax Allocation exceeds the corresponding Revenue Share in any given month (the excess Tax Allocation, “**Tax Overage**”), Skillz will carry-forward the Tax Overage to the immediately following month(s) and deduct such amount from subsequent Revenue Share in arriving at Net Revenue Share payments. In no event will Company pay Skillz any amounts in respect of Revenue Share or Tax Allocation. For Net Revenue Share that exceeds two hundred fifty dollars ($250) in any given calendar month, Skillz shall pay Company the Net Revenue Share within forty-five (45) days following the end of the calendar month with respect to which the Net Revenue Share pertains. For Net Revenue Share that does not exceed two hundred fifty dollars ($250) in any given calendar month, Skillz will accrue and hold such Net Revenue Share until either the aggregate Net Revenue Share held exceeds two hundred fifty dollars ($250), at which time Skillz will pay Company such Net Revenue Share in the next-occurring calendar month, or at the time that this Agreement is terminated, at which time Skillz will pay Company such Net Revenue Share.\n\n### 4. COMPANY INFORMATION\n\nCompany shall provide Skillz with access to Company’s Game information and data to enable Skillz to perform Monetization Services. Company is responsible for ensuring all Game information is accurate, and acknowledges that Skillz may rely upon such information without investigation, and is not responsible for any inaccuracies therein, or for Skillz’s reliance upon Company’s instructions. Company shall notify Skillz immediately if Company receives complaints related to the Monetization Services. If any error results from incorrect input supplied by Company, Company shall be responsible for discovering and reporting such error to Skillz and supplying all information necessary to correct such error at the earliest possible time.\n\n### 5. CONFIDENTIAL INFORMATION\n\n“Confidential Information” means this Agreement, and all confidential or proprietary information disclosed by one party (“Disclosing Party”) to the other party (“Receiving Party”) hereunder, including information which is orally or visually disclosed to the Receiving Party. The Receiving Party shall: (a) not use any of the Disclosing Party’s Confidential Information for any purpose except in performance of its rights and obligations hereunder; (b) disclose the Disclosing Party’s Confidential Information only to its employees or contractors who need to know such information in order to carry out obligations hereunder, and certifies that such individuals have previously agreed, either as a condition to employment or in order to obtain the Confidential Information, to be bound by terms and conditions substantially similar to those of this Section; and (c) treat all of the Disclosing Party’s Confidential Information with the same degree of care as it accords its own Confidential Information of a similar nature, but in no case less than reasonable care. The forgoing obligations shall continue for a period of five (5) years following termination of this Agreement. The Receiving Party shall have no obligation with respect to information of the Disclosing Party which (i) was rightfully in possession of or known to the Receiving Party without any obligation of confidentiality prior to receiving it from the Disclosing Party as evidenced by the Receiving Party’s contemporaneous written records; (ii) is, or subsequently becomes, legally and publicly available without breach of this Agreement or wrongful act by the Receiving Party; or (iii) is rightfully obtained by the Receiving Party from a source other than the Disclosing Party without any obligation of confidentiality. The Receiving Party may disclose the Disclosing Party’s Confidential Information to the extent required by a valid order of a court or government agency having jurisdiction, provided that the Receiving Party provides prior written notice to the Disclosing Party of such obligation and the opportunity to oppose such disclosure. Upon written demand of the Disclosing Party, the Receiving Party shall cease using the Disclosing Party’s Confidential Information and return the Confidential Information and all copies, notes or extracts thereof in the Receiving Party’s possession to the Disclosing Party within seven (7) days of receipt of notice.\n\n### 6. DISCLAIMER\n\nMONETIZATION SERVICES, COMPETITION DATA AND COMPETITIONS ARE MADE AVAILABLE “AS IS” AND WITHOUT WARRANTY. SKILLZ MAKES NO REPRESENTATION OR WARRANTY EXPRESS OR IMPLIED WITH RESPECT TO ANY PRODUCTS, SERVICES, INFORMATION OR TECHNOLOGY PROVIDED OR MADE AVAILABLE HEREUNDER, INCLUDING WITHOUT LIMITATION, NETWORK FAILURES, THIRD-PARTY PRODUCTS AND SERVICES, SOFTWARE PROGRAMS, AND OUTPUT OR RESULTS OF THE MONETIZATION SERVICES. SKILLZ DOES NOT WARRANT THAT THE SERVICE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SERVICE. SKILLZ DISCLAIMS ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE.\n\nSkillz is not responsible or liable for any damage, loss, or injury resulting from, relating to or arising out of (1) use, access, or attempted use or access of Services, Digital Assets, the Software or the Website; (2) downloading any information from the Software, Services or Website; and/or (3) violations of these Terms by other users. Skillz has no responsibility to enforce these terms for the benefit of any user.\n\nSome states do not allow the disclaimer of implied warranties; as such the foregoing disclaimer may not apply to you in its entirety.\n\n### 7. LIMITATIONS OF LIABILITY\n\nTO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAW: (1) SKILLZ’S TOTAL AGGREGATE LIABILITY ARISING OUT OF OR RELATING TO THIS AGREEMENT, WHETHER BASED ON CONTRACT, TORT OR OTHERWISE, SHALL NOT EXCEED THE LESSER OF EITHER (A) THE FEES PAID AND PAYABLE BY SKILLZ TO COMPANY DURING THE THREE (3) MONTHS IMMEDIATELY PRECEDING THE COMPANY’S FIRST CAUSE OF ACTION ARISING HEREUNDER, or (B) $1,000; AND (2) EXCEPT FOR DAMAGES CAUSED BY A BREACH OF SECTION 1.6 OR SECTION 5, for INFRINGEMENT OR MISAPPROPRIATION OF THE OTHER PARTY’S INTELLECTUAL PROPERTY RIGHTS, AND AMOUNTS OWED BY A PARTY PURSUANT TO ITS INDEMNIFICATION OBLIGATIONS IN SECTION 8, IN NO EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, LOSS OF USE, OR LOSS OF PROFITS), ARISING OUT OF OR RELATING TO THIS AGREEMENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR THEY WERE OTHERWISE FORESEEABLE.\n\n### 8. INDEMNIFICATION\n\n8.1. By Company. Company shall defend, hold harmless and indemnify Skillz, its officers, directors, employees, agents, representatives and Affiliates from and against any and all third-party claims, actions, proceedings, and suits brought against any of the foregoing persons or entities, and pay all related third party liabilities, damages, judgments, settlements, penalties, fines, costs or expenses (including, without limitation, reasonable attorneys’ fees and other litigation expenses) to the extent arising out of or relating to Company’s breach of Section 1.6 and/or Content.\n\n8.2. By Skillz. Skillz shall defend, indemnify, and hold Company, its officers, directors, employees, agents, representatives and Affiliates harmless from and against any and all third-party claims, actions, proceedings, and suits brought against any of the foregoing persons or entities, and pay all related third party liabilities, damages, judgments, settlements, penalties, fines, costs or expenses (including, without limitation, reasonable attorneys’ fees and other litigation expenses) to the extent arising out of or relating to a third-party claim that the Monetization Platform or SDK infringes or misappropriate such third party intellectual property right. Skillz shall have no obligation under this Section with respect to any claim based upon (i) Content; (ii) modification of the SDK by Company; (iii) the combination, operation or use of the SDK with non-Skillz software program(s) or data; or (iii) use of the SDK or Monetization Platform other than in compliance with this Agreement. If any portion of the SDK or Monetization Platform, in the opinion of Skillz, is likely to or does become the subject of a claim of infringement or misappropriation, Skillz may, at its sole option and expense: (x) modify the SDK or Monetization Platform (as applicable) to be non-infringing, provided that such modification does not materially diminish the terms of usage of the Monetization Platform; (y) obtain for Company a right to continue using the SDK or Monetization Platform at no additional charge; or (z) terminate this Agreement upon notice to Company. This Section represents Skillz’s sole liability, and Company’s sole and exclusive remedy, regarding infringement or misappropriation of intellectual property rights.\n\n8.3. Process. The indemnified party shall promptly notify the indemnifying party in writing of any claim covered by this Section. The indemnified party shall give the indemnifying party sole control over the defense and/or settlement of any such claim, except that the indemnifying party shall not agree to any settlement or compromise that (1) would require the indemnified party to make any payments, admit liability, or bear any obligations, or (2) does not include an unconditional release of the indemnified party, unless the indemnifying party obtains the indemnified party’s prior written approval. The indemnified party shall give the indemnifying Party reasonable assistance and cooperation in such defense at the indemnifying party’s expense.\n\n8.4. Other Claims. If any U.S. governmental or regulatory agency, or any consumer resident within the U.S., brings any claim, suit or proceeding against Company alleging that the Monetization Platform (excluding the Game and Content) in the form provided by Skillz violates applicable laws, rules or regulations, then Skillz, at its own expense, shall defend (or at its option settle) such claim, suit or proceeding, and shall pay any final and non-appealable fine, penalty or judgment entered or settlement against the Company thereon; provided, however, that (a) Skillz shall not be responsible for any compromise or settlement made without its prior consent; and (b) Skillz shall have no such obligation unless Company gives Skillz prompt notice of the claim, the right to control and direct the investigation, preparation, defense and settlement of the claim, and full cooperation (at Skillz’s expense), in any such investigation, preparation, defense and/or settlement.\n\n### 9. TERM AND TERMINATION\n\nThis Agreement shall have an initial term of one (1) year from the Effective Date (“Initial Term”) and shall automatically renew for periods of six months thereafter (each a “Renewal Term”, together with the Initial Term, the “Term”) unless either party provides forty-five (45) days written notice of its intent to terminate the Agreement prior to the expiration of any Initial Term or Renewal Term, in which case this Agreement will terminate upon expiration of the then-current Initial Term or Renewal Term, as applicable. This Agreement may be terminated by either party’s convenience upon thirty (30) days written notice from the other party. This Agreement may be terminated by a party if the other party materially breaches any provision hereof and does not cure such breach within thirty (30) days of receipt of notice describing such breach. Sections 1.6, 5, 6, 7, 8, 9 and 10 and this sentence shall survive termination of this Agreement, as well as any other obligations of the parties that contemplate performance by a party following such termination. Termination of this Agreement shall automatically terminate all licenses granted in this Agreement. Upon termination of this Agreement, Company will return or destroy all materials regarding the Monetization Services and Monetization Platform in its possession or control, including deleting all references to Skillz on its website and in marketing materials.\n\n### 10. MISCELLANEOUS\n\nNothing in this Agreement shall be deemed to create a partnership or joint venture between the parties and neither Skillz nor Company shall hold itself out as the agent of the other, except as set forth in this Agreement. Neither party shall be liable to the other for delays or failures in performance resulting from causes beyond the reasonable control of that party. Any notice required or permitted to be given by either party under this Agreement shall be in writing and shall be personally delivered or sent by a reputable overnight mail service (e.g., Federal Express), or by prepaid first class mail (certified or registered). Notices to Skillz shall be sent to Skillz Inc., Corporation Service Company, 2710 Gateway Oaks Drive, Suite 150 N, Sacramento, CA 95833, and notices to Company shall be sent to the name and physical address provided on the account page of Company’s profile or, if no physical address is submitted, then to the email address provided on the account page. This Agreement shall be interpreted under the laws of the Commonwealth of Massachusetts without regard to conflict of laws principles dictating another states’ laws. The United Nations Convention for the International Sale of Goods shall not apply to this Agreement. This Agreement may not be assigned by Company without the prior written consent by Skillz. This Agreement shall be binding on permitted successors and assigns. This Agreement and its Appendix constitutes the entire agreement between the parties with respect to the subject matter hereof, and supersedes and replaces all prior and contemporaneous understandings or agreements, written or oral, regarding such subject matter. This Agreement may be executed in counterparts, each of which will be considered an original, but all of which together will constitute the same instrument. All rights and remedies, whether conferred hereunder, or by any other instrument or law, unless otherwise expressly stated, will be cumulative and may be exercised singularly or concurrently. The failure of any party to enforce any of the provisions hereof will not be construed to be a waiver of the right of such party thereafter to enforce such provisions. If one or more provisions in this Agreement are ruled entirely or partly invalid or unenforceable by any court or governmental authority of competent jurisdiction, then the validity and enforceability of all provisions not ruled to be invalid or unenforceable shall remain unaffected. EVERY PROVISION OF THIS AGREEMENT WHICH PROVIDES LIMITATION OF LIABILITY, DISCLAIMER OF WARRANTIES OR EXCLUSION OF DAMAGES IS A FUNDAMENTAL PART OF THE BASIS OF THE BARGAIN HEREUNDER. IF ANY REMEDY HEREUNDER IS DETERMINED TO HAVE FAILED OF ITS ESSENTIAL PURPOSE, ALL LIMITATIONS OF LIABILITY AND EXCLUSIONS OF DAMAGES SET FORTH HEREIN SHALL REMAIN IN EFFECT TO THE MAXIMUM ALLOWED BY APPLICABLE LAW.\n\n**We look forward to raising the game with you.**\n`;\n","import { IPublisher2 } from '@app/common/interfaces';\n\nexport function shouldRenderNotificationWithNoAction() {\n return (\n !window.appConfig.featureFlags.developerRevenueOverhaulContract &&\n window.appConfig.featureFlags.developerRevenueOverhaulContractNoAction\n );\n}\n\nexport function shouldRenderNotificationWithAction(publisher: IPublisher2) {\n return (\n window.appConfig.featureFlags.developerRevenueOverhaulContract &&\n !publisher.revenueModelAgreedOn\n );\n}\n\nexport function shouldRenderRevenueModelNotification(publisher: IPublisher2) {\n return shouldRenderNotificationWithAction(publisher) || shouldRenderNotificationWithNoAction();\n}\n","import React, { useState, useEffect } from 'react';\n\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n Typography,\n DialogActions,\n Checkbox,\n FormGroup,\n FormControlLabel,\n Stack,\n useTheme,\n} from '@mui/material';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport { useSnackbarContext } from '@skillzet/components';\n\nimport { Cookies } from 'react-cookie';\nimport ReactMarkdown from 'react-markdown';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { TIME_IN_MILLISECONDS } from '@app/common/constants';\n\nimport '../Notifications/styles/notificationModal.scss';\nimport { updatePublisherRevenueModelAgreedOn, usePublisherQuery } from './actions';\nimport {\n revenueModelNotificationContent,\n revenueModelNotificationCheckboxLabel,\n revenueModelNotificationAgreedSnackbar,\n WithNoActionModalHeader,\n WithActionModalHeader,\n COOKIE_REVENUE_MODEL_CHANGE,\n} from './constants';\nimport {\n shouldRenderNotificationWithAction,\n shouldRenderNotificationWithNoAction,\n shouldRenderRevenueModelNotification,\n} from './helpers';\nimport './styles.scss';\n\ninterface IProps {\n reduxFetchPublisher: () => Promise;\n}\n\nconst staleTime = 10 * TIME_IN_MILLISECONDS.MINUTE;\nconst reOpenTime = 10 * TIME_IN_MILLISECONDS.MINUTE;\n\nexport function RevenueModelNotification({ reduxFetchPublisher }: IProps) {\n const [isOpen, setIsOpen] = useState(true);\n const [isAgreeChecked, setIsAgreeChecked] = useState(false);\n\n const [isAtBottom, setIsAtBottom] = useState(false);\n\n // react query doesn't have isRefetched state\n const [isRefetched, setIsRefetched] = useState(false);\n const { show: showSnackbar } = useSnackbarContext();\n\n const queryClient = useQueryClient();\n\n const theme = useTheme();\n\n const cookies = new Cookies();\n\n const publisherQuery = shouldRenderNotificationWithNoAction()\n ? usePublisherQuery({ staleTime: Infinity })\n : usePublisherQuery({ staleTime });\n\n const closeModal = () => setIsOpen(false);\n\n const openModal = () => setIsOpen(true);\n\n const openModalTimeout = () => {\n if (!publisherQuery.data?.revenueModelAgreedOn && !isOpen) {\n openModal();\n }\n };\n\n const handleClose = (): void => {\n setIsAtBottom(false);\n setIsAgreeChecked(false);\n\n if (shouldRenderNotificationWithNoAction()) {\n cookies.set(COOKIE_REVENUE_MODEL_CHANGE, true, {\n path: '/',\n });\n }\n\n closeModal();\n };\n\n const handleCheckboxClick = (): void => {\n setIsAgreeChecked(!isAgreeChecked);\n };\n\n // const handleDialogClose = (event: unknown, reason: string): void => {\n // if (reason === 'escapeKeyDown') {}\n // if (reason === 'backdropClick') {}\n // closeModal();\n // };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleScroll = (e: any) => {\n // set to true once been scroll to the bottom\n if (isAtBottom) {\n return;\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n const hasReachedBottom =\n e.target.scrollHeight - e.target.scrollTop < (e.target.clientHeight as number) + 1 &&\n e.target.scrollHeight - e.target.scrollTop > (e.target.clientHeight as number) - 1;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n setIsAtBottom(hasReachedBottom);\n };\n\n const updatePublisherMutation = useMutation(\n () => {\n return updatePublisherRevenueModelAgreedOn(publisherQuery.data?.id ?? 0);\n },\n {\n onSuccess: () => {\n cookies.set(COOKIE_REVENUE_MODEL_CHANGE, true, {\n path: '/',\n });\n\n showSnackbar(revenueModelNotificationAgreedSnackbar);\n closeModal();\n },\n onError: (error: Error) => {\n showSnackbar(`An error occurred: ${error.message}. Please try again.`, 'error');\n },\n onSettled: async () => {\n void reduxFetchPublisher();\n await queryClient.invalidateQueries(['publisher']);\n },\n }\n );\n\n useEffect(() => {\n if (\n !isOpen &&\n !!publisherQuery.data &&\n shouldRenderNotificationWithAction(publisherQuery.data)\n ) {\n const timer = setTimeout(openModalTimeout, reOpenTime);\n\n return () => clearTimeout(timer);\n }\n\n return;\n }, [isOpen]);\n\n useEffect(() => {\n if (isRefetched && !publisherQuery.data?.revenueModelAgreedOn && !isOpen) {\n openModal();\n }\n }, [isRefetched]);\n\n // userQuery does not have a isRefetched prop\n useEffect(() => {\n if (isOpen) {\n return;\n }\n\n if (publisherQuery.isRefetching && isRefetched) {\n setIsRefetched(false);\n }\n\n if (!publisherQuery.isRefetching && !isRefetched) {\n setIsRefetched(true);\n }\n }, [publisherQuery.isRefetching]);\n\n /* eslint-disable react/prop-types */\n const renderLinks = (props: { href: string; children: string }): JSX.Element => {\n if (!props.href.startsWith('http')) {\n return (\n \n {props.children}\n \n );\n }\n\n return (\n // eslint-disable-next-line react/jsx-no-target-blank\n \n {props.children}\n \n );\n };\n /* eslint-enable react/prop-types */\n\n /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access*/\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const renderItems = (props: { children: any[] }) => {\n // if item starts with image, use it as the list icon\n // this avoids writing custom CSS for every notification\n // eslint-disable-next-line react/prop-types\n let children = props.children;\n // eslint-disable-next-line react/prop-types\n const img = children[0]?.props?.src;\n let style = {};\n if (img) {\n style = {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n listStyleImage: `url(${img})`,\n };\n // eslint-disable-next-line react/prop-types\n children = props.children.slice(1);\n }\n\n return
  • {children}
  • ;\n };\n /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const renderImages = (props: any) => {\n return ;\n };\n\n if (\n publisherQuery.isLoading ||\n !!cookies.get(COOKIE_REVENUE_MODEL_CHANGE) ||\n (!!publisherQuery.data && !shouldRenderRevenueModelNotification(publisherQuery.data))\n ) {\n return null;\n }\n\n if (!isOpen) {\n return (\n \n to allow publisher query to stay alive\n \n );\n }\n\n return (\n \n \n {shouldRenderNotificationWithNoAction() && }\n {!shouldRenderNotificationWithNoAction() && }\n \n \n \n \n Developer Terms and Conditions of Service\n \n Updated as of April 14th, 2023\n \n \n Hello and welcome to Skillz. We"re glad to have you on our team. These Developer\n Terms and Conditions of Service \n \n (“Developer Terms”)\n \n  will help ensure we"re all able to achieve more together.\n \n \n \n \n \n \n \n {!shouldRenderNotificationWithNoAction() && (\n \n \n }\n label={revenueModelNotificationCheckboxLabel}\n />\n \n )}\n
    \n
    \n \n Close\n \n
    \n {!shouldRenderNotificationWithNoAction() && (\n
    \n updatePublisherMutation.mutate()}\n variant=\"contained\"\n disabled={!isAgreeChecked}\n >\n I Agree\n \n
    \n )}\n
    \n
    \n \n \n );\n}\n","import { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { fetchSdkDownloads } from '@app/common/actions';\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst SdkDownloads = loadable(\n () => import(/* webpackChunkName: \"sdk-downloads\" */ './SdkDownloads')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState) => {\n let { sdkDownloads } = state;\n\n return { sdkDownloads };\n};\n\nconst mapDispatchToProps = {\n fetchSdkDownloads,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TSdkDownloadsConnectedProps = ConnectedProps &\n RouteComponentProps &\n IWithSnackbarProp;\n\nexport default connector(withRouter(SdkDownloads));\n","import loadable from '@loadable/component';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { IRootState } from '@app/core/rootReducer';\nimport { ISignInProps } from '@app/modules/SignUpFlow/modules/SignIn/SignIn';\n\nconst SignInComponent = loadable(() => import(/* webpackChunkName: \"sign-in\" */ './SignIn'));\n\nconst mapStateToProps = (state: IRootState) => {\n let { feature } = state;\n\n return {\n feature\n };\n};\n\nconst connector = connect(mapStateToProps);\n\nexport type TSignInProps = ConnectedProps & ISignInProps & RouteComponentProps;\n\nexport const SignIn = connector(withRouter(SignInComponent));\n","import loadable from '@loadable/component';\n\nimport { withRouter } from 'react-router-dom';\n\nconst ChangePassword = loadable(\n () => import(/* webpackChunkName: \"change-password\" */ './ChangePassword')\n);\n\nexport default withRouter(ChangePassword);\n","import * as React from 'react';\n\nimport { Route, Switch } from 'react-router-dom';\n\nimport { SignIn } from '@app/modules/SignUpFlow/modules/SignIn';\n\nimport ChangePassword from './modules/ChangePassword';\nimport { SignUp } from './modules/SignUp';\nimport './styles.scss';\nimport { ForgotPassword } from './subcomponents';\n\nfunction SignUpFlow() {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\nexport { SignUpFlow };\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { IAction } from '@app/common/interfaces';\nimport axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\n\nimport { IStatement } from './interfaces';\n\nexport enum STATEMENTS {\n RECEIVE = 'statements/RECEIVE',\n}\n\nexport function receiveStatements(statements: IStatement[]): IAction {\n return {\n type: STATEMENTS.RECEIVE,\n data: statements,\n };\n}\n\nexport function fetchStatements(year: number, month: number) {\n const paddedMonth = String(month).padStart(2, '0');\n\n return async (dispatch: Dispatch>): Promise => {\n const response: AxiosResponse = await axios.get(`/api/v1/statements`, {\n params: { month: paddedMonth, year },\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(receiveStatements(camelize(response.data)));\n };\n}\n","import { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\n\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { fetchStatements } from './actions';\n\nconst Statements = loadable(\n () => import(/* webpackChunkName: \"statements\" */ './Statements')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState) => {\n return { statements: state.statements };\n};\n\nconst mapDispatchToProps = {\n fetchStatements,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TStatementsConnectedProps = ConnectedProps & IWithSnackbarProp;\n\nexport default connector(Statements);\n","import Loadable from 'react-loadable';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { Loading } from '@app/common/components';\nimport { IFeature, ILoadableComponent, ISurveyTool, IUser } from '@app/common/interfaces';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport { fetchAllQuestions, hideSurvey } from './actions';\nimport { ICreateResponseData, IPatchResponseData } from './interfaces';\nimport { createResponse, updateResponse } from './utils';\n\nconst Survey: ILoadableComponent['component'] = Loadable({\n loader: (): Promise => import(/* webpackChunkName: \"survey-tool\" */ './Survey'),\n loading: Loading\n});\n\ninterface IStateProps {\n feature: IFeature;\n survey: ISurveyTool;\n user: IUser;\n}\n\nconst mapStateToProps = (state: IRootState): IStateProps => {\n return {\n feature: state.feature,\n survey: state.survey,\n user: state.user\n };\n};\ninterface IDispatchProps {\n hideSurvey: (fromLocation: string) => Promise;\n fetchAllQuestions: (userId: number) => Promise;\n createResponse: (surveyResponse: ICreateResponseData) => JQuery.jqXHR;\n updateResponse: (surveyResponse: IPatchResponseData) => JQuery.jqXHR;\n}\n\nconst mapDispatchToProps = (dispatch: any): IDispatchProps => {\n return {\n hideSurvey: (fromLocation: string): Promise => dispatch(hideSurvey(fromLocation)),\n fetchAllQuestions: (userId: number): Promise => dispatch(fetchAllQuestions(userId)),\n createResponse,\n updateResponse\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(Survey));\n","import Loadable from 'react-loadable';\nimport { withRouter } from 'react-router-dom';\n\nimport { Loading } from '@app/common/components';\nimport { ILoadableComponent } from '@app/common/interfaces';\n\nconst SurveyLandingPage: ILoadableComponent['component'] = Loadable({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loader: (): Promise =>\n import(/* webpackChunkName: \"survey-landing-page\" */ './SurveyLandingPage'),\n loading: Loading,\n});\n\nexport default withRouter(SurveyLandingPage);\n","import React, { useState } from 'react';\n\nimport { Button } from '@mui/material';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Stack from '@mui/material/Stack';\nimport { useSnackbarContext } from '@skillzet/components';\n\nimport { useMutation } from 'react-query';\nimport { useLocation } from 'react-router-dom';\n\nimport { DialogTitleWithCloseButton } from '@app/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/SeasonsTab/subcomponents/SeasonsList/subcomponents/DialogTitleWithCloseButton';\n\nimport { useSurveyContext } from './SurveyContext';\nimport { postSurveyResponse } from './actions';\nimport {\n DEFAULT_SURVEY_TITLE,\n SURVEY_24H_COOKIE,\n SUCCESS_SUBMISSION_SNACKBAR_MESSAGE,\n} from './constants';\nimport { renderQuestionWithAppropriateComponent, addAnswer, validateAnswers } from './helpers';\nimport { ISurvey, ISurveyAnswer, TUserType } from './interfaces';\n\nexport interface IDialogSurveyProps {\n onClose: () => void;\n survey: ISurvey;\n userType: TUserType;\n userId: number;\n}\n\nexport default function DialogSurvey({ onClose, survey, userType, userId }: IDialogSurveyProps) {\n const isSurveyOpen = !!survey;\n\n const [answers, setAnswers] = useState([]);\n const { show: showSnackbar } = useSnackbarContext();\n const { closeSurvey } = useSurveyContext();\n const questions = survey.surveyQuestions;\n const pageLocation = useLocation().pathname;\n\n const submitResponse = useMutation(\n (isDismissal: boolean) => {\n return postSurveyResponse({\n userId,\n userType,\n isDismissal,\n pageLocation,\n surveyId: survey.id,\n answers,\n });\n },\n {\n onSuccess: (_, isDismissal) => {\n if (!isDismissal) {\n showSnackbar(SUCCESS_SUBMISSION_SNACKBAR_MESSAGE);\n }\n localStorage.setItem(SURVEY_24H_COOKIE, `${new Date().getTime()}`);\n closeSurvey();\n },\n onError: (error: Error) => {\n showSnackbar(`An error occurred: ${error.message}. Please try again.`, 'error');\n },\n }\n );\n\n const handleClose = () => {\n submitResponse.mutate(true);\n onClose();\n };\n\n if (!isSurveyOpen) return <>;\n\n return (\n \n \n {survey.surveyTitle ?? DEFAULT_SURVEY_TITLE}\n \n \n {survey.surveyQuestions.map((question) => {\n return renderQuestionWithAppropriateComponent(question, addAnswer(answers, setAnswers));\n })}\n \n \n \n \n Cancel\n \n {\n const { errors } = validateAnswers(questions, answers);\n\n if (!errors) {\n submitResponse.mutate(false);\n\n return;\n }\n\n showSnackbar(errors.join(', '), 'error');\n }}\n >\n Submit\n \n \n \n \n );\n}\n","import React, { useState } from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Card from '@mui/material/Card';\nimport CardActions from '@mui/material/CardActions';\nimport IconButton from '@mui/material/IconButton';\nimport Slide from '@mui/material/Slide';\nimport useTheme from '@mui/styles/useTheme';\nimport { useSnackbarContext } from '@skillzet/components';\n\nimport { useMutation } from 'react-query';\nimport { useLocation } from 'react-router-dom';\n\nimport { useSurveyContext } from './SurveyContext';\nimport { postSurveyResponse } from './actions';\nimport { SURVEY_24H_COOKIE } from './constants';\nimport { renderQuestionWithAppropriateComponent, addAnswer, validateAnswers } from './helpers';\nimport { ISurvey, ISurveyAnswer, TUserType } from './interfaces';\n\nexport interface IPopupSurveyProps {\n survey: ISurvey;\n userType: TUserType;\n userId: number;\n}\n\nexport default function PopupSurvey({ survey, userType, userId }: IPopupSurveyProps): JSX.Element {\n const isSurveyOpen = !!survey;\n\n const muiTheme = useTheme();\n const { closeSurvey } = useSurveyContext();\n const [answers, setAnswers] = useState([]);\n const { show: showSnackbar } = useSnackbarContext();\n const questions = survey.surveyQuestions;\n const pageLocation = useLocation().pathname;\n\n const submitResponse = useMutation(\n (isDismissal: boolean) => {\n return postSurveyResponse({\n userId,\n userType,\n isDismissal,\n pageLocation,\n surveyId: survey.id,\n answers,\n });\n },\n {\n onSuccess: (_, isDismissal) => {\n if (!isDismissal) {\n showSnackbar('Response submitted, thank you.');\n }\n localStorage.setItem(SURVEY_24H_COOKIE, `${new Date().getTime()}`);\n closeSurvey();\n },\n onError: (error: Error) => {\n showSnackbar(`An error occurred: ${error.message}. Please try again.`, 'error');\n },\n }\n );\n\n const handleClose = () => {\n submitResponse.mutate(true);\n closeSurvey();\n };\n\n if (!isSurveyOpen) return <>;\n\n return (\n \n \n \n \n \n \n {questions.map((question) => {\n return renderQuestionWithAppropriateComponent(question, addAnswer(answers, setAnswers));\n })}\n \n {\n const { errors } = validateAnswers(questions, answers);\n\n if (!errors) {\n submitResponse.mutate(false);\n\n return;\n }\n\n showSnackbar(errors.join(', '), 'error');\n }}\n >\n Submit\n \n \n \n \n \n );\n}\n","import React from 'react';\n\nimport { useQuery } from 'react-query';\n\nimport { TIME_IN_MILLISECONDS } from '@app/common/constants';\nimport { IUser } from '@app/common/interfaces';\nimport { getGames } from '@app/modules/LearningCenter/modules/ManagedLearningCenter/actions';\n\nimport DialogSurvey from './DialogSurvey';\nimport PopupSurvey from './PopupSurvey';\nimport { useSurveyContext } from './SurveyContext';\nimport { TOAST_SURVEYS } from './constants';\nimport {\n determineUserType,\n mapUserTypeToSurveyTarget,\n checkHasUserRespondedInLast24Hours,\n} from './helpers';\nimport { ISurvey, ISurveyResponse, TSurveyType } from './interfaces';\nimport { useSurvey, useLatestSurveyResponse } from './queries';\n\ninterface ISurveyProps {\n user: IUser;\n}\n\nconst shouldRenderSurveyBasedOnLastResponse = (\n survey: ISurvey,\n lastResponse?: ISurveyResponse\n): TSurveyType | undefined => {\n const { surveyType } = survey;\n if (!lastResponse) return surveyType;\n\n const lastResponseDate = new Date(lastResponse.createdAt);\n const nowInMilliseconds = new Date().getTime();\n const dismissalThreshold = new Date(\n nowInMilliseconds - survey.dismissalCadence * TIME_IN_MILLISECONDS.DAY\n );\n const completionThreshold = new Date(\n nowInMilliseconds - survey.completionCadence * TIME_IN_MILLISECONDS.DAY\n );\n\n if (lastResponse.isDismissal && lastResponseDate > dismissalThreshold) {\n return;\n }\n\n if (lastResponseDate > completionThreshold) {\n return;\n }\n\n return survey.surveyType;\n};\n\nexport default function Surveys({ user }: ISurveyProps) {\n const { surveyTrigger, closeSurvey } = useSurveyContext();\n\n const userId = user.id;\n\n const gamesQuery = useQuery(['getGames'], () => getGames()).data;\n const userType = determineUserType(gamesQuery?.items ?? []);\n\n const triggeredSurvey = useSurvey(surveyTrigger, mapUserTypeToSurveyTarget(userType)).data;\n\n const previousResponse = useLatestSurveyResponse(userId, triggeredSurvey?.id).data;\n\n if (!surveyTrigger || !triggeredSurvey || checkHasUserRespondedInLast24Hours()) {\n return <>;\n }\n\n const surveyType = shouldRenderSurveyBasedOnLastResponse(triggeredSurvey, previousResponse);\n\n if (!surveyType) {\n return <>;\n }\n\n if (TOAST_SURVEYS.includes(surveyType)) {\n return ;\n }\n\n return (\n \n );\n}\n","import loadable from '@loadable/component';\n\nimport { withRouter } from 'react-router-dom';\n\nconst UserInvite = loadable(() => import(/* webpackChunkName: \"user-invite\" */ './UserInvite'));\n\nexport default withRouter(UserInvite);\n","import { Component } from 'react';\n\nimport loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { clearGameInfo, fetchGames, openArchiveModal, openModal } from '@app/common/actions';\nimport { IWithSnackbarProp } from '@app/common/helpers/snackbarHookHelper';\nimport { IRootState } from '@app/core/rootReducer';\n\nconst YourGames = loadable(\n () => import(/* webpackChunkName: \"your-games\" */ './YourGames')\n) as typeof Component;\n\nconst mapStateToProps = (state: IRootState) => {\n let { games, feature, permissions } = state;\n\n return {\n games,\n feature,\n permissions,\n };\n};\n\nconst mapDispatchToProps = {\n openArchiveModal,\n clearGameInfo,\n fetchGames,\n openModal,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TYourGamesConnectedProps = ConnectedProps &\n RouteComponentProps &\n IWithSnackbarProp;\n\nexport default connector(withRouter(YourGames));\n","import React from 'react';\n\nimport Box from '@mui/material/Box';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { StyledEngineProvider } from '@mui/material/styles';\nimport { ThemeProvider, createTheme, Theme } from '@mui/material/styles';\nimport { SnackbarContainer } from '@skillzet/components';\nimport { ThemeProvider as SkillzetThemeProvider } from '@skillzet/developer';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { ReactQueryDevtools } from 'react-query/devtools';\nimport { Redirect, Route, Switch } from 'react-router-dom';\n\nimport { PromotionBanner } from '@app/common/components/PromotionBanner/PromotionBanner';\nimport ReduxSnackbarAdapter from '@app/common/components/ReduxSnackbarAdaptor';\nimport {\n ANALYTICS_PERMISSIONS,\n BILLING_PERMISSIONS,\n GAME_PERMISSIONS,\n} from '@app/common/constants';\nimport UserContext from '@app/common/contexts/UserContext';\nimport {\n shouldViewPeekPage,\n isPublicRoute,\n isPublicOrPrivateRoute,\n shouldShowPeekHeader,\n} from '@app/common/helpers';\nimport Account from '@app/modules/Account';\nimport Analytics from '@app/modules/Analytics';\nimport ContactUs from '@app/modules/ContactUs';\nimport CookieBanner from '@app/modules/CookieBanner';\nimport Dashboard from '@app/modules/Dashboard';\nimport GameInfoModal from '@app/modules/GameInfoModal';\nimport GameManagement from '@app/modules/GameManagement';\nimport HomePage from '@app/modules/HomePage';\nimport Introduction from '@app/modules/IntegrationIntroduction';\nimport Jobs from '@app/modules/Jobs';\nimport ManagedLearningCenter from '@app/modules/LearningCenter/modules/ManagedLearningCenter/ManagedLearningCenter';\nimport NavBar from '@app/modules/NavBar';\nimport NflChallenge from '@app/modules/NflChallenge';\nimport NoAccessPage from '@app/modules/NoAccessPage';\nimport NotFoundPage from '@app/modules/NotFoundPage';\nimport Notification from '@app/modules/Notifications';\nimport PeekHeader from '@app/modules/PeekMode/modules/PeekHeader';\nimport PeekPage from '@app/modules/PeekMode/modules/PeekPage';\nimport Playground from '@app/modules/Playground';\nimport PlaygroundOld from '@app/modules/PlaygroundOld';\nimport PrivacyPolicyBar from '@app/modules/PrivacyPolicyBar';\nimport ProfileModal from '@app/modules/ProfileModal';\nimport { RevenueModelNotification } from '@app/modules/RevenueModelNotification/RevenueModelNotification';\nimport { shouldRenderRevenueModelNotification } from '@app/modules/RevenueModelNotification/helpers';\nimport SdkDownloads from '@app/modules/SdkDownloads';\nimport { SignUpFlow } from '@app/modules/SignUpFlow/SignUpFlow';\nimport Statements from '@app/modules/Statements';\nimport Survey from '@app/modules/Survey';\nimport SurveyLandingPage from '@app/modules/Survey/SurveyContainer/LandingPage/';\nimport { SurveyContextProvider } from '@app/modules/Survey/SurveyContainer/SurveyContext';\nimport Surveys from '@app/modules/Survey/SurveyContainer/Surveys';\nimport UserInvite from '@app/modules/UserInvite';\nimport YourGames from '@app/modules/YourGames';\n\nimport './app.scss';\nimport { IAppState, TAppProps } from './interfaces';\n\nconst queryClient = new QueryClient();\ndeclare module '@mui/material/styles' {\n interface Theme {\n appBar: {\n navBarHeight: { small: string; large: string };\n drawerWidth: string;\n peekHeaderHeight: string;\n };\n }\n interface ThemeOptions {\n appBar?: {\n navBarHeight?: {\n small: string;\n large: string;\n };\n drawerWidth?: string;\n peekHeaderHeight?: string;\n };\n }\n\n interface TypographyVariants {\n h7: React.CSSProperties;\n }\n\n // allow configuration using `createTheme`\n interface TypographyVariantsOptions {\n h7?: React.CSSProperties;\n }\n}\n\n// update the Typography's variant prop options\ndeclare module '@mui/material/Typography' {\n interface TypographyPropsVariantOverrides {\n h7: true;\n }\n}\n\nconst appBar = {\n navBarHeight: {\n small: '48px',\n large: '64px',\n },\n drawerWidth: '194px',\n peekHeaderHeight: '80px',\n};\n\nconst portalDeveloperThemeOverrides = (theme: Theme) =>\n createTheme({\n ...theme,\n appBar,\n });\n\nclass App extends React.Component {\n constructor(props: TAppProps) {\n super(props);\n this.state = {\n isLoading: true,\n };\n }\n\n public componentDidMount(): void {\n let {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n config: { flow },\n findFeatureFlags,\n } = this.props;\n\n // feature flag needs to be fetched first because of the feature flags on home page\n void findFeatureFlags().then(() => {\n // TODO: update logic once more non-logged-in pages to react\n const locationPathName = window.location.pathname;\n\n if (!isPublicRoute(flow, locationPathName)) {\n void this.getPublisherGameUserInfo();\n } else {\n this.setState({ isLoading: false });\n }\n });\n }\n\n private getPublisherGameUserInfo(): Promise {\n let { findUser, fetchPublisher, feature, fetchPermissions } = this.props;\n\n return Promise.all([findUser(), fetchPublisher()])\n .then(async () => {\n if (feature.userRolesU6GameRolesAndPermissions) {\n await fetchPermissions(\n `${ANALYTICS_PERMISSIONS.READ}&` +\n `${BILLING_PERMISSIONS.DOWNLOAD_STATEMENTS}&` +\n `${GAME_PERMISSIONS.READ}&` +\n `${GAME_PERMISSIONS.CREATE}&` +\n `${GAME_PERMISSIONS.UPDATE}&` +\n `${GAME_PERMISSIONS.PUBLISH}&`\n );\n }\n this.setState({ isLoading: false });\n })\n .catch((e) => {\n // response when logged in is an error\n const locationPathName = window.location.pathname;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isPublicOrPrivateRoute(locationPathName) && e.status === 401) {\n this.setState({ isLoading: false });\n\n return;\n }\n // TODO REPLACE [WS-8355] update Routes to use PrivateRoute to handle this logic that\n // handles logged in/out users. When that change is done (when the entire frontend is\n // in React) update the redirect logic to use history.goBack() on successful sign in\n // to allow redirect to the original requested URL instead of loading in the dashboard\n this.props.history.push('/users/sign_in');\n window.location.reload();\n });\n }\n\n private readonly hasPermission = (permissionKey: string) => {\n const { feature, permissions } = this.props;\n if (!feature.userRolesU6GameRolesAndPermissions) return true;\n\n return !!permissions[permissionKey];\n };\n\n public render(): JSX.Element | null {\n let { user, publisher, snackbar, closeSnackbar, fetchPublisher } = this.props;\n\n if (this.state.isLoading) {\n return null;\n }\n\n const isLoggedIn = user.id !== undefined;\n\n const shouldAddPeekHeaderOffset = shouldShowPeekHeader(user, publisher);\n\n const whenPeeking = (themePeekHeaderHeight: string) =>\n shouldAddPeekHeaderOffset ? themePeekHeaderHeight : '0px';\n\n return (\n \n {/* using GlobalStyles for MuiDrawer peek header offset, because it's injected outside of main container */}\n .MuiBackdrop-root':\n {\n // the GlobalStyles is using DefaultTheme, so we don't have access to theme.appBar\n top: `calc(${whenPeeking(appBar.peekHeaderHeight)} + ${appBar.navBarHeight.small})`,\n },\n }}\n />\n \n \n \n \n \n \n \n \n ({\n display: 'flex',\n minHeight: '100vh',\n '& .peek-header-offset': {\n top: {\n xs: `calc(${whenPeeking(theme.appBar.peekHeaderHeight)} + ${\n theme.appBar.navBarHeight.small\n })`,\n md: whenPeeking(theme.appBar.peekHeaderHeight),\n },\n },\n\n '& .peek-header-offset.no-navbar-offset': {\n top: whenPeeking(theme.appBar.peekHeaderHeight),\n },\n })}\n className={\n isLoggedIn ? 'neutral-white-background' : 'neutral-gray-background'\n }\n >\n ({\n width: { md: isLoggedIn ? theme.appBar.drawerWidth : 0 },\n flexShrink: { md: 0 },\n })}\n >\n \n \n\n ({\n flexGrow: 1,\n width: {\n md: isLoggedIn ? `calc(100% - ${theme.appBar.drawerWidth})` : '100%',\n },\n height: '100%',\n maxWidth: '100%',\n })}\n >\n {/* adds proper margin so top bar doesn't cover content */}\n ({\n height: isLoggedIn\n ? {\n xs: `calc(${theme.appBar.navBarHeight.small} + ${whenPeeking(\n theme.appBar.peekHeaderHeight\n )})`,\n md: whenPeeking(theme.appBar.peekHeaderHeight),\n }\n : 0,\n backgroundColor: '#2e323a',\n })}\n />\n
    \n \n\n \n\n {isLoggedIn && shouldRenderRevenueModelNotification(publisher) && (\n \n )}\n\n {isLoggedIn && (\n <>\n \n \n \n\n \n \n )}\n\n {isLoggedIn && window.appConfig.featureFlags.ufcGamePartnership && (\n \n )}\n\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n {/* @ts-ignore [WS-11959] fix typescript issue */}\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n {shouldViewPeekPage(user, publisher) && (\n \n )}\n\n {!window.location.href.includes('https://developers.skillz.com') && [\n ,\n ,\n ]}\n\n {/* TODO [WS-24674] Hide from non Skillz users */}\n {isLoggedIn && }\n\n \n\n \n \n\n {isLoggedIn && !window.appConfig.featureFlags.surveysInDc && }\n
    \n \n \n {isLoggedIn && window.appConfig.featureFlags.surveysInDc ? (\n \n ) : (\n <>\n )}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default App;\n","import { connect, ConnectedProps } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n closeSnackbar,\n fetchPermissions,\n fetchPublisher,\n findFeatureFlags,\n findUser,\n openSnackbar,\n} from '@app/common/actions';\nimport { IRootState } from '@app/core/rootReducer';\n\nimport App from './app';\n\nconst mapStateToProps = (state: IRootState) => {\n let {\n config,\n feature,\n user,\n snackbar,\n publisher: { publisherInfo },\n permissions,\n } = state;\n\n return {\n config,\n feature,\n user,\n publisher: publisherInfo,\n snackbar,\n permissions,\n };\n};\n\nconst mapDispatchToProps = {\n fetchPublisher,\n findUser,\n findFeatureFlags,\n closeSnackbar,\n openSnackbar,\n fetchPermissions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type TAppConnectedProps = ConnectedProps;\n\nexport default connector(withRouter(App));\n","import React from 'react';\n\nimport { Provider } from 'react-redux';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Store } from 'redux';\n\nimport Application from './app';\nimport { IRootState } from './rootReducer';\n\ninterface IRootProps {\n store: Store;\n}\n\nconst Root = ({ store }: IRootProps): JSX.Element => {\n return (\n \n \n \n \n \n );\n};\n\nexport default Root;\n","import merge from 'lodash/merge';\n\nimport { FEATURE } from '@app/common/actions';\nimport { IAction, IFeature } from '@app/common/interfaces';\n\nlet initialState: IFeature = {};\n\nconst featureReducer = (state: IFeature = initialState, action: IAction): IFeature => {\n let newState: IFeature;\n Object.freeze(state);\n switch (action.type) {\n case FEATURE.FLAGS:\n newState = merge({}, state, action.data);\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default featureReducer;\n","import { ANALYTICS } from '@app/common/actions';\nimport { IAction, IAnalyticInfo } from '@app/common/interfaces';\n\ntype TAction = IAction;\n\nconst rawData = (state: IAnalyticInfo[] = [], action: TAction): IAnalyticInfo[] => {\n Object.freeze(state);\n\n switch (action.type) {\n case ANALYTICS.RECEIVE_RAW_DATA:\n return action.data;\n default:\n return state;\n }\n};\n\nexport { rawData };\n","import { combineReducers } from 'redux';\n\nimport { dateRangeLimit, rawData } from './reducers';\n\nconst analyticsReducer = combineReducers({\n rawData,\n dateRangeLimit,\n});\n\nexport default analyticsReducer;\n","import { parseISO, startOfDay } from 'date-fns';\nimport { ANALYTICS } from '@app/common/actions';\nimport { IAction, IDateRange } from '@app/common/interfaces';\n\ntype TAction = IAction>;\n\nfunction dateRangeLimit(\n state: IDateRange = { startDate: new Date(), endDate: new Date() },\n action: TAction\n): IDateRange {\n Object.freeze(state);\n\n switch (action.type) {\n case ANALYTICS.RECEIVE_DATE_RANGE_LIMIT:\n return {\n startDate: startOfDay(parseISO(action.data.startDate)),\n endDate: startOfDay(parseISO(action.data.endDate))\n };\n\n default:\n return state;\n }\n}\n\nexport { dateRangeLimit };\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\n\nimport { CONTACT_US } from './actions';\nimport { SELECT_TEXT } from './constants';\n\nexport enum CONTACT_US_STORE {\n GAMES = 'games', // TODO[WS-9967] Remove games\n SDK_VERSIONS = 'sdkVersions'\n}\n\nexport interface IReducerState {\n [CONTACT_US_STORE.SDK_VERSIONS]: string[];\n}\n\nlet initialState: IReducerState = {\n [CONTACT_US_STORE.SDK_VERSIONS]: []\n};\n\nconst contactUsReducer = (\n state: IReducerState = initialState,\n action: IAction\n): IReducerState => {\n Object.freeze(state);\n\n let newState: IReducerState = merge({}, state);\n\n switch (action.type) {\n case CONTACT_US.RECEIVE_SDK_VERSIONS:\n newState = merge({}, state);\n action.data.unshift(SELECT_TEXT + 'SDK version');\n newState[CONTACT_US_STORE.SDK_VERSIONS] = action.data;\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default contactUsReducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { fetchCurrentUser, updateCurrentUser } from '@app/common/actions';\nimport { ICurrentUser } from '@app/common/interfaces';\n\nconst currentUser = createSlice({\n name: 'currentUser',\n initialState: {} as ICurrentUser,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchCurrentUser.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updateCurrentUser.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updateCurrentUser.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default currentUser.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { fetchGameAccess } from '@app/common/actions';\n\nimport { TGameAccess } from '../../common/helpers';\n\nconst gameAccess = createSlice({\n name: 'gameAccess',\n initialState: [] as TGameAccess,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchGameAccess.fulfilled, (state, action) => {\n return action.payload;\n });\n\n builder.addCase(fetchGameAccess.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default gameAccess.reducer;\n","import { IAction } from '@app/common/interfaces';\nimport { GAME_STATE_ACTIONS } from '@app/modules/GameManagement/common/actions';\nimport { TGameState } from '@app/modules/GameManagement/common/interfaces';\n\nexport type TReducerState = TGameState | {};\nlet initialState: TReducerState = {};\n\nconst gameStateReducer = (\n state: TReducerState = initialState,\n action: IAction\n): TReducerState => {\n Object.freeze(state);\n\n switch (action.type) {\n case GAME_STATE_ACTIONS.RECEIVE:\n return action.data;\n default:\n return state;\n }\n};\n\nexport default gameStateReducer;\n","import merge from 'lodash/merge';\n\nimport { GAME_BUILDS_FETCH, GAME_BUILDS_UPDATE } from '../actions';\nimport { findGameBuildIndex } from '../helper';\nimport { TActionItems, TGameBuildsPerPage } from '../interfaces';\n\nexport const BINARIES_PLACEHOLDER_CONSTANT: number = 100;\n\nexport const itemsInitialState: TGameBuildsPerPage = { [BINARIES_PLACEHOLDER_CONSTANT]: [] };\n\nexport function itemsReducer(\n state: TGameBuildsPerPage = itemsInitialState,\n action: TActionItems\n): TGameBuildsPerPage {\n let newState: TGameBuildsPerPage;\n Object.freeze(state);\n if (!action.data) {\n if (action.type === GAME_BUILDS_FETCH.CLEAR_GAME_BUILDS) {\n return itemsInitialState;\n }\n\n return state;\n }\n\n switch (action.type) {\n case GAME_BUILDS_FETCH.RESET_AND_RECEIVE_GAME_BUILDS:\n newState = merge({}, itemsInitialState, action.data);\n\n return newState;\n\n case GAME_BUILDS_FETCH.RECEIVE_GAME_BUILDS:\n newState = merge({}, state, action.data);\n\n return newState;\n case GAME_BUILDS_UPDATE.RECEIVE_GAME_BUILD_UPDATE:\n let firstKey: string = Object.keys(action.data)[0];\n let page: number = parseInt(firstKey, 10);\n\n if (isNaN(page) || page < 0) {\n return state;\n }\n\n let newData = action.data;\n let gameBuild = newData[page][0];\n let gameBuildIndex: number = findGameBuildIndex(state[page], gameBuild.id);\n\n if (gameBuildIndex > -1) {\n // copy all levels of nested state and set active attribute from response data\n newState = merge({}, state, {\n [page]: {\n [gameBuildIndex]: gameBuild\n }\n });\n\n return newState;\n }\n\n return state;\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport {\n itemsReducer as items, totalCountReducer as totalCount, uploadsReducer as uploads\n} from './reducers';\n\nconst gameBuildsReducer = combineReducers({\n totalCount,\n items,\n uploads\n});\n\nexport default gameBuildsReducer;\n","import { IAction } from '@app/common/interfaces';\nimport { GAME_BUILDS_COUNT } from '../actions';\n\nexport function totalCountReducer(state: number = 0, action: IAction): number {\n Object.freeze(state);\n\n switch (action.type) {\n case GAME_BUILDS_COUNT.RECEIVE_COUNT:\n return action.data;\n default:\n return state;\n }\n}\n","import merge from 'lodash/merge';\nimport { GAME_BUILDS_UPLOAD } from '../actions';\nimport { IGameBuildUploads, TActionUpload } from '../interfaces';\n\nexport function uploadsReducer(\n state: IGameBuildUploads = {},\n action: TActionUpload\n): IGameBuildUploads {\n let newState: IGameBuildUploads;\n Object.freeze(state);\n\n switch (action.type) {\n case GAME_BUILDS_UPLOAD.RECEIVE_NEW_GAME_BUILD:\n newState = merge({}, state, {\n [action.data.id]: action.data\n });\n\n return newState;\n case GAME_BUILDS_UPLOAD.CLEAR_FINALIZE_GAME_BUILD:\n newState = Object.assign({}, state);\n delete newState[action.data.id];\n\n return newState;\n default:\n return state;\n }\n}\n","import { CaseReducer, createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport {\n fetchProgressionRoomVersionLocales,\n fetchProgressionRoomVersions,\n} from '@appGameHome/common/actions';\n\nimport {\n TProgressionRoomVersion,\n IGameProgressionRoomVersions,\n IProgressionRoomVersion,\n IProgressionRoomVersionLocale,\n} from '../../common/interfaces';\n\nconst initialState = {\n sandbox: {} as TProgressionRoomVersion,\n production: {} as TProgressionRoomVersion,\n};\n\ninterface IReducerPayload {\n env: ENVIRONMENT;\n items: T[];\n totalCount: number;\n currentVersionId?: string;\n}\n\ntype TProgressionRoomVersionReducer = IProgressionRoomVersion | IProgressionRoomVersionLocale;\n\ninterface IReducerGenerator {\n (): CaseReducer<\n IGameProgressionRoomVersions,\n PayloadAction>\n >;\n}\n\nconst createProgressionRoomReducer: IReducerGenerator = <\n T extends TProgressionRoomVersionReducer\n>() =>\n function fulfilledProgressionRoomFetchActionReducer(\n state: IGameProgressionRoomVersions,\n action: PayloadAction>\n ) {\n const { env } = action.payload;\n\n switch (action.type) {\n case fetchProgressionRoomVersions.fulfilled.type:\n (action.payload.items as IProgressionRoomVersion[]).forEach((version) => {\n const roomVersionId = version.id;\n state[env][roomVersionId] = version;\n });\n break;\n case fetchProgressionRoomVersionLocales.fulfilled.type:\n const currentVersionId = action.payload.currentVersionId;\n const versionLocales = action.payload.items as IProgressionRoomVersionLocale[];\n\n if (!!currentVersionId && state[env][currentVersionId]) {\n state[env][currentVersionId].locales = versionLocales;\n }\n break;\n default:\n state = initialState;\n break;\n }\n };\n\nconst progressionRoomVersions = createSlice({\n name: 'progressionRooms',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(\n fetchProgressionRoomVersions.fulfilled,\n createProgressionRoomReducer()\n );\n\n builder.addCase(fetchProgressionRoomVersions.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(\n fetchProgressionRoomVersionLocales.fulfilled,\n createProgressionRoomReducer()\n );\n\n builder.addCase(fetchProgressionRoomVersionLocales.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default progressionRoomVersions.reducer;\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\nimport { ISdkDownloadInfo } from '@app/modules/GameManagement/common/interfaces';\n\nimport { SDK_DOWNLOAD_INFO } from './actions';\n\ntype TReducerState = ISdkDownloadInfo | {};\n\nlet initialState: {} = {};\n\ntype TAction = IAction;\n\nconst sdkDownloadInfoReducer = (\n state: TReducerState = initialState,\n action: TAction\n): TReducerState | {} => {\n Object.freeze(state);\n let newState: TReducerState;\n switch (action.type) {\n case SDK_DOWNLOAD_INFO.RECEIVE:\n newState = merge({}, state, action.data);\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default sdkDownloadInfoReducer;\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\n\nimport { DEEP_LINKING } from './actions';\nimport { IVerificationDeepLink } from './constants';\n\nlet initialState: IVerificationDeepLink = {\n sendStatus: null,\n deepLinkOption: 'matchStream',\n};\n\nconst deepLinkingReducer = (state = initialState, action: IAction) => {\n let newState: IVerificationDeepLink;\n Object.freeze(state);\n switch (action.type) {\n case DEEP_LINKING.RECEIVE_VERIFICATION:\n newState = merge({}, state, action.data);\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default deepLinkingReducer;\n","import { PUSH_NOTIFICATIONS } from './actions';\nimport { IAction } from '@app/common/interfaces';\nimport { ICertificate } from './interfaces';\n\nlet initialState: ICertificate[] = [];\n\nconst notificationCertificates = (\n state: ICertificate[] = initialState,\n action: IAction\n): ICertificate[] => {\n Object.freeze(state);\n\n switch (action.type) {\n case PUSH_NOTIFICATIONS.RECEIVE_CERTIFICATES:\n return action.data;\n default:\n return state;\n }\n};\n\nexport default notificationCertificates;\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\n\nimport { SINGLE_SIGN_ON } from './actions';\n\ninterface IState {\n prefix: string | null;\n verified: boolean;\n}\n\nlet initialState: IState = {\n prefix: '',\n verified: false,\n};\n\ntype TAction = IAction;\n\nconst singleSignOnReducer = (state: IState = initialState, action: TAction): IState => {\n let newState: IState;\n\n Object.freeze(state);\n\n switch (action.type) {\n case SINGLE_SIGN_ON.RECEIVE_PREFIX:\n newState = merge({}, state, action.data);\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default singleSignOnReducer;\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\n\nimport { INITIAL_PACKAGES, VIRTUAL_CURRENCY } from './constants';\nimport { IVirtualCurrencyResponse, IVirtualCurrency } from './interfaces';\n\nconst initialState: IVirtualCurrency = {\n android: INITIAL_PACKAGES,\n ios: INITIAL_PACKAGES,\n};\n\nconst virtualCurrencyReducer = (\n state = initialState,\n action: IAction\n) => {\n let newState;\n Object.freeze(state);\n switch (action.type) {\n case VIRTUAL_CURRENCY.RECEIVE_PACKAGE:\n newState = merge({}, initialState);\n newState.ios = action.data.virtualCurrency.ios;\n newState.iosOfferSetId = action.data.virtualCurrency.iosOfferSetId;\n newState.android = action.data.virtualCurrency.android;\n newState.androidOfferSetId = action.data.virtualCurrency.androidOfferSetId;\n\n return newState;\n\n default:\n return state;\n }\n};\n\nexport default virtualCurrencyReducer;\n","import { combineReducers } from 'redux';\n\nimport gamePerformanceStatus from '@app/modules/GameManagement/modules/GamePerformanceStatus/reducer';\nimport gameState from '@app/modules/GameManagement/modules/GameState/reducer';\nimport gameBuilds from '@appGameHome/modules/GameBuild/reducer';\nimport progressionRoomVersions from '@appGameProgression/modules/EntryPoints/modules/RoomVersion/reducer';\nimport progressionRoomVersionMappings from '@appGameProgression/modules/EntryPoints/modules/RoomVersionMapping/reducer';\nimport progressionRooms from '@appGameProgression/modules/EntryPoints/reducer';\nimport sdkDownloadInfo from '@appIntegration/modules/SetupSDK/reducer';\nimport deepLinking from '@appOptimize/modules/DeepLinking/reducer';\nimport notificationCertificates from '@appOptimize/modules/PushNotifications/reducer';\nimport singleSignOn from '@appOptimize/modules/SingleSignOn/reducer';\nimport virtualCurrency from '@appOptimize/modules/VirtualCurrency/reducer';\nimport accelerateApplication from '@appOverview/modules/AccelerateProgram/reducer';\nimport prizeEnablementRequest from '@appOverview/modules/PrizeEnablement/reducer';\n\nimport verification from './modules/Verification/reducer';\n\nconst gameReducer = combineReducers({\n verification,\n singleSignOn,\n deepLinking,\n virtualCurrency,\n sdkDownloadInfo,\n gameState,\n gameBuilds,\n notificationCertificates,\n gamePerformanceStatus,\n prizeEnablementRequest,\n accelerateApplication,\n progressionRooms,\n progressionRoomVersions,\n progressionRoomVersionMappings,\n});\n\nexport default gameReducer;\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\nimport { VERIFICATION } from '@app/modules/GameManagement/common/actions';\nimport { TVerificationReducerState } from '@app/modules/GameManagement/common/interfaces';\n\ntype TAction = IAction;\n\nconst verificationReducer = (\n state: TVerificationReducerState = null,\n action: TAction\n): TVerificationReducerState => {\n let newState: TVerificationReducerState;\n Object.freeze(state);\n switch (action.type) {\n case VERIFICATION.RECEIVE_DATA:\n newState = merge({}, state, action.data);\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default verificationReducer;\n","import merge from 'lodash/merge';\n\nimport { IAction, IActionNoData } from '@app/common/interfaces';\nimport { IGamePerformanceStatus } from '@app/modules/GameManagement/common/interfaces';\nimport { GAME_PERFORMANCE_STATUS_ACTIONS } from '@appOverview/actions/gamePerformanceStatusActions';\n\ntype TGamePerformanceStatusAction = IAction | IActionNoData;\n\nfunction gamePerformanceStatus(\n state: IGamePerformanceStatus | null = null,\n action: TGamePerformanceStatusAction\n): IGamePerformanceStatus | null {\n Object.freeze(state);\n switch (action.type) {\n case GAME_PERFORMANCE_STATUS_ACTIONS.RECEIVE:\n return merge({}, state, (action as IAction).data);\n\n case GAME_PERFORMANCE_STATUS_ACTIONS.CLEAR:\n return null;\n\n default:\n return state;\n }\n}\n\nexport default gamePerformanceStatus;\n","import merge from 'lodash/merge';\n\nimport { IAction } from '@app/common/interfaces';\nimport { PRIZE_ENABLEMENT_REQUEST_ACTIONS } from '@appOverview/actions';\nimport { IPrizeEnablementRequest } from '@appOverview/interfaces';\n\ntype TPrizeEnablementRequestAction = IAction;\n\nfunction prizeEnablementRequest(\n state: IPrizeEnablementRequest | null = null,\n action: TPrizeEnablementRequestAction\n): IPrizeEnablementRequest | null {\n Object.freeze(state);\n switch (action.type) {\n case PRIZE_ENABLEMENT_REQUEST_ACTIONS.RECEIVE:\n return merge({}, state, action.data);\n\n default:\n return state;\n }\n}\n\nexport default prizeEnablementRequest;\n","import merge from 'lodash/merge';\n\nimport { ACCELERATE_PROGRAM } from '@appOverview/actions';\nimport { IAction } from '@app/common/interfaces';\nimport { IAccelerateApplication, TAccelerateApplication } from '@appOverview/interfaces';\n\nfunction accelerateApplication(\n state: TAccelerateApplication = null,\n action: IAction\n): TAccelerateApplication {\n Object.freeze(state);\n switch (action.type) {\n case ACCELERATE_PROGRAM.RECEIVE_ACCELERATE_APPLICATION:\n return merge({}, action.data);\n\n default:\n return state;\n }\n}\n\nexport default accelerateApplication;\n","import merge from 'lodash/merge';\n\nimport { GAMES } from '@app/common/actions';\nimport { findNestedIndex } from '@app/common/helpers';\nimport { IAction, IActionNoData, IDashboardGame, TGamesPerPage } from '@app/common/interfaces';\n\n// type guard for actions with data\nfunction hasActionData(\n action: IAction | IActionNoData\n): action is IAction {\n return (action as IAction).hasOwnProperty('data');\n}\n\nexport const itemsInitialState: TGamesPerPage = {};\n\nexport function itemsReducer(\n state: TGamesPerPage = itemsInitialState,\n action: IAction | IActionNoData\n): TGamesPerPage {\n let newState: TGamesPerPage;\n\n Object.freeze(state);\n\n switch (action.type) {\n case GAMES.CLEAR_GAMES:\n return itemsInitialState;\n\n case GAMES.RECEIVE_GAMES:\n if (hasActionData(action)) {\n newState = merge({}, state, action.data);\n\n return newState;\n }\n\n return state;\n case GAMES.RECEIVE_UPDATED_GAME:\n if (hasActionData(action)) {\n let firstKey: string = Object.keys(action.data)[0];\n let page: number = parseInt(firstKey, 10);\n\n if (isNaN(page) || page < 0) {\n return state;\n }\n\n let game: IDashboardGame = action.data[page][0];\n game.updatedAt = new Date().toISOString();\n let gameIndex: number = findNestedIndex(state[page], game.id);\n\n if (gameIndex > -1) {\n // copy all levels of nested state and set active attribute from response data\n newState = merge({}, state, {\n [page]: {\n [gameIndex]: game\n }\n });\n\n return newState;\n }\n }\n\n return state;\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport { itemsReducer as items, totalCountReducer as totalCount } from './reducers';\n\nconst gamesReducer = combineReducers({\n totalCount,\n items\n});\n\nexport default gamesReducer;\n","import { GAMES_COUNT } from '@app/common/actions';\nimport { IAction } from '@app/common/interfaces';\n\nexport function totalCountReducer(state: number = 0, action: IAction): number {\n Object.freeze(state);\n\n switch (action.type) {\n case GAMES_COUNT.RECEIVE_COUNT:\n return action.data;\n default:\n return state;\n }\n}\n","import merge from 'lodash/merge';\nimport { GAME } from '@app/common/actions';\nimport camelize from 'camelize';\n\nlet initialState = {\n androidStoreUrl: '',\n iosStoreUrl: '',\n samsungStoreUrl: ''\n};\n\nconst gameUrlReducer = (state = initialState, action) => {\n let newState;\n Object.freeze(state);\n switch (action.type) {\n case GAME.GAME_INFO:\n newState = merge({}, state, camelize(action.data));\n return newState;\n default:\n return state;\n }\n};\n\nexport default gameUrlReducer;\n","import merge from 'lodash/merge';\n\nimport { GAME } from '@app/common/actions';\nimport { IAction } from '@app/common/interfaces';\n\nimport { VERIFY_CONFIG } from './action';\n\ninterface IState {\n androidPushVerification: boolean;\n iosPushVerification: boolean;\n}\n\nlet initialState: IState = {\n androidPushVerification: false,\n iosPushVerification: false\n};\n\nconst verifyConfigurationReducer = (\n state: IState = initialState,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n action: IAction\n): IState => {\n Object.freeze(state);\n switch (action.type) {\n case GAME.GAME_INFO:\n return merge({}, state, action.data.verification);\n case VERIFY_CONFIG.PUSH:\n return merge({}, state, action.data);\n default:\n return state;\n }\n};\n\nexport default verifyConfigurationReducer;\n","/* eslint-disable complexity */\n// TODO [WS-21024] REFACTOR TO USE GENERIC FUNCTION TO OPEN AND CLOSE MODAL\nimport merge from 'lodash/merge';\n\nimport { MODAL_MANAGEMENT } from '@app/common/actions';\nimport { IAction, IActionOptionalData, IModalManagement } from '@app/common/interfaces';\n\nimport {\n IS_PROFILE_MODAL_OPEN,\n IS_GAME_INFO_MODAL_OPEN,\n IS_PROGRESSION_ROOM_EDIT_MODAL_OPEN,\n IS_AUDIT_NOTE_MODAL_OPEN,\n IS_ENTRY_POINT_CONFIRM_MODAL_OPEN,\n IS_ENTRY_POINT_SYNC_MODAL_OPEN,\n} from './constants';\n\nexport const initialModalState: IModalManagement = {\n [IS_PROFILE_MODAL_OPEN]: false,\n [IS_GAME_INFO_MODAL_OPEN]: false,\n isArchiveModalOpen: false,\n isFairnessModalOpen: false,\n isPrizeEnablementModalOpen: false,\n isAccelerateModalOpen: false,\n isFeedbackModalOpen: false,\n isStudioModalOpen: false,\n isUserModalOpen: false,\n isRemoveUserModalOpen: false,\n isDeactivateSkillzSupportModalOpen: false,\n isInviteUserModalOpen: false,\n isTransferOwnershipModalOpen: false,\n isEditUserModalOpen: false,\n isDisableThirdPartyAdsModalOpen: false,\n isProgressionDeleteItemModalOpen: false,\n isPlayerDataModalOpen: false,\n isProgressionPublishModalOpen: false,\n isProgressionChangelogModalOpen: false,\n isProgressionPlayerLookupModalOpen: false,\n isInGameItemsModalOpen: false,\n isProgressionRoomSaveModalOpen: false,\n isProgressionRoomCreateModalOpen: false,\n [IS_PROGRESSION_ROOM_EDIT_MODAL_OPEN]: false,\n isProgressionRoomDeleteModalOpen: false,\n isEntryPointAssignAndSyncModalOpen: false,\n [IS_AUDIT_NOTE_MODAL_OPEN]: false,\n [IS_ENTRY_POINT_CONFIRM_MODAL_OPEN]: false,\n [IS_ENTRY_POINT_SYNC_MODAL_OPEN]: false,\n};\n\nfunction modalManagementReducer(\n state: IModalManagement = initialModalState,\n action: IActionOptionalData | IAction\n): IModalManagement {\n let newState: IModalManagement;\n Object.freeze(state);\n\n switch (action.type) {\n case MODAL_MANAGEMENT.OPEN_PROFILE_MODAL:\n newState = merge({}, state, { isProfileModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_PROFILE_MODAL:\n newState = merge({}, state, { isProfileModalOpen: false });\n\n return newState;\n case MODAL_MANAGEMENT.OPEN_GAME_INFO_MODAL:\n newState = merge({}, state, { isGameInfoModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_GAME_INFO_MODAL:\n newState = merge({}, state, { isGameInfoModalOpen: false });\n\n return newState;\n case MODAL_MANAGEMENT.OPEN_ARCHIVE_MODAL:\n newState = merge({}, state, { isArchiveModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_ARCHIVE_MODAL:\n newState = merge({}, state, { isArchiveModalOpen: false });\n\n return newState;\n case MODAL_MANAGEMENT.OPEN_FAIRNESS_MODAL:\n newState = merge({}, state, { isFairnessModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_FAIRNESS_MODAL:\n newState = merge({}, state, { isFairnessModalOpen: false });\n\n return newState;\n case MODAL_MANAGEMENT.OPEN_PRIZE_ENABLEMENT_MODAL:\n newState = merge({}, state, { isPrizeEnablementModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_PRIZE_ENABLEMENT_MODAL:\n newState = merge({}, state, { isPrizeEnablementModalOpen: false });\n\n return newState;\n case MODAL_MANAGEMENT.OPEN_ACCELERATE_MODAL:\n newState = merge({}, state, { isAccelerateModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_ACCELERATE_MODAL:\n newState = merge({}, state, { isAccelerateModalOpen: false });\n\n return newState;\n case MODAL_MANAGEMENT.OPEN_FEEDBACK_MODAL:\n newState = merge({}, state, { isFeedbackModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_FEEDBACK_MODAL:\n newState = merge({}, state, { isFeedbackModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_STUDIO_MODAL:\n newState = merge({}, state, { isStudioModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_STUDIO_MODAL:\n newState = merge({}, state, { isStudioModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_USER_MODAL:\n newState = merge({}, state, { isUserModalOpen: true });\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_USER_MODAL:\n newState = merge({}, state, { isUserModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_REMOVE_USER_MODAL:\n newState = merge({}, state, { isRemoveUserModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_REMOVE_USER_MODAL:\n newState = merge({}, state, { isRemoveUserModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_DEACTIVATE_SKILLZ_SUPPORT_MODAL:\n newState = merge({}, state, { isDeactivateSkillzSupportModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_DEACTIVATE_SKILLZ_SUPPORT_MODAL:\n newState = merge({}, state, { isDeactivateSkillzSupportModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_INVITE_USER_MODAL:\n newState = merge({}, state, { isInviteUserModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_INVITE_USER_MODAL:\n newState = merge({}, state, { isInviteUserModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_TRANSFER_OWNERSHIP_MODAL:\n newState = merge({}, state, { isTransferOwnershipModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_TRANSFER_OWNERSHIP_MODAL:\n newState = merge({}, state, { isTransferOwnershipModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_EDIT_USER_MODAL:\n newState = merge({}, state, { isEditUserModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_EDIT_USER_MODAL:\n newState = merge({}, state, { isEditUserModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_DISABLE_THIRD_PARTY_ADS_MODAL:\n newState = merge({}, state, { isDisableThirdPartyAdsModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_DISABLE_THIRD_PARTY_ADS_MODAL:\n newState = merge({}, state, { isDisableThirdPartyAdsModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_DELETE_ITEM_MODAL:\n newState = merge({}, state, { isProgressionDeleteItemModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_DELETE_ITEM_MODAL:\n newState = merge({}, state, { isProgressionDeleteItemModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PLAYER_DATA_MODAL:\n newState = merge({}, state, { isPlayerDataModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PLAYER_DATA_MODAL:\n newState = merge({}, state, { isPlayerDataModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_PUBLISH_MODAL:\n newState = merge({}, state, { isProgressionPublishModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_PUBLISH_MODAL:\n newState = merge({}, state, { isProgressionPublishModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_CHANGELOG_MODAL:\n newState = merge({}, state, { isProgressionChangelogModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_CHANGELOG_MODAL:\n newState = merge({}, state, { isProgressionChangelogModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_PLAYER_LOOKUP_MODAL:\n newState = merge({}, state, { isProgressionPlayerLookupModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_PLAYER_LOOKUP_MODAL:\n newState = merge({}, state, { isProgressionPlayerLookupModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_IN_GAME_ITEMS_MODAL:\n newState = merge({}, state, { isInGameItemsModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_IN_GAME_ITEMS_MODAL:\n newState = merge({}, state, { isInGameItemsModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_ROOM_SAVE_MODAL:\n newState = merge({}, state, { isProgressionRoomSaveModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_ROOM_SAVE_MODAL:\n newState = merge({}, state, {\n isProgressionRoomSaveModalOpen: false,\n });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_ROOM_CREATE_MODAL:\n newState = merge({}, state, { isProgressionRoomCreateModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_ROOM_CREATE_MODAL:\n newState = merge({}, state, {\n isProgressionRoomCreateModalOpen: false,\n });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_PROGRESSION_ROOM_DELETE_MODAL:\n newState = merge({}, state, { isProgressionRoomDeleteModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_PROGRESSION_ROOM_DELETE_MODAL:\n newState = merge({}, state, {\n isProgressionRoomDeleteModalOpen: false,\n });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL:\n newState = merge({}, state, { isEntryPointAssignAndSyncModalOpen: true });\n\n return newState;\n\n case MODAL_MANAGEMENT.CLOSE_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL:\n newState = merge({}, state, { isEntryPointAssignAndSyncModalOpen: false });\n\n return newState;\n\n case MODAL_MANAGEMENT.OPEN_MODAL:\n newState = merge({}, state, action.data);\n\n return newState;\n case MODAL_MANAGEMENT.CLOSE_MODAL:\n newState = merge({}, state, action.data);\n\n return newState;\n\n default:\n return state;\n }\n}\n\nexport default modalManagementReducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport {\n fetchGameChallengeProposal,\n saveGameChallengeProposal,\n updateGameChallengeProposal,\n uploadGameChallengeImages,\n} from '@app/common/actions/gameChallengeProposalActions';\nimport { replaceNullsWith } from '@app/common/helpers';\nimport {\n IGameChallengeProposal,\n TGameChallengeProposalResponse,\n} from '@app/modules/NflChallenge/ProposalPage/interfaces';\n\nexport const initialState: IGameChallengeProposal = {\n form: {\n artStyle: '',\n competitiveFormat: '',\n gameSummary: '',\n gameplayOverview: '',\n postWorkAndPlanning: '',\n scoring: '',\n skillFactor: '',\n useOfNflBranding: '',\n userInterface: '',\n workingTitle: '',\n },\n images: {\n userInterfaceImages: [],\n artStyleImages: [],\n postWorkAndPlanningImages: [],\n },\n isSubmitted: false,\n updatedAt: '',\n};\n\nconst replaceNullsWithEmptyStr = replaceNullsWith('');\n\nconst extractProposal = (\n proposalResponse: TGameChallengeProposalResponse\n): IGameChallengeProposal => {\n const {\n isSubmitted,\n updatedAt,\n userInterfaceImages,\n artStyleImages,\n postWorkAndPlanningImages,\n ...form\n } = proposalResponse;\n\n return {\n images: {\n userInterfaceImages,\n artStyleImages,\n postWorkAndPlanningImages,\n },\n form: replaceNullsWithEmptyStr(form),\n isSubmitted,\n updatedAt,\n };\n};\n\nconst nflChallengeProposal = createSlice({\n name: 'nflChallengeProposal',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchGameChallengeProposal.fulfilled, (state, action) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { form, isSubmitted, images, updatedAt } = extractProposal(action.payload);\n\n return {\n ...state,\n form,\n isSubmitted,\n images,\n updatedAt,\n };\n });\n builder.addCase(fetchGameChallengeProposal.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(saveGameChallengeProposal.fulfilled, (state, action) => {\n const { form, isSubmitted, updatedAt } = extractProposal(action.payload);\n\n return {\n ...state,\n form,\n isSubmitted,\n updatedAt,\n };\n });\n builder.addCase(saveGameChallengeProposal.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(updateGameChallengeProposal.fulfilled, (state, action) => {\n const { form, isSubmitted, updatedAt } = extractProposal(action.payload);\n\n return {\n ...state,\n form,\n isSubmitted,\n updatedAt,\n };\n });\n builder.addCase(updateGameChallengeProposal.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(uploadGameChallengeImages.fulfilled, (state, action) => {\n const { updatedAt, ...images } = action.payload;\n\n return {\n ...state,\n images,\n updatedAt,\n };\n });\n builder.addCase(uploadGameChallengeImages.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default nflChallengeProposal.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport {\n fetchGameChallenge,\n updateNudgeStatus,\n updateRegistrationStatus\n} from '@app/common/actions/gameChallengeActions';\nimport { IGameChallenge } from '@app/common/interfaces/gameChallenge';\n\nexport const initialState: IGameChallenge = {} as IGameChallenge;\n\nconst nflChallenge = createSlice({\n name: 'nflChallenge',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchGameChallenge.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updateRegistrationStatus.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updateRegistrationStatus.rejected, (_, action) => {\n throw action.error;\n });\n builder.addCase(updateNudgeStatus.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updateNudgeStatus.rejected, (_, action) => {\n throw action.error;\n });\n }\n});\n\nexport default nflChallenge.reducer;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IIndexResponse } from 'portal-common-library/interfaces/redux';\n\nimport { fetchNotificationItems } from './actions';\nimport { INotification, INotificationIndexParams, TNotificationReducerState } from './interfaces';\n\nconst initialState: TNotificationReducerState = {\n totalCount: 0,\n items: {}\n};\n\ntype TActionPayload = PayloadAction<\n IIndexResponse,\n string,\n { arg: INotificationIndexParams }\n>;\nconst itemsSlice = createSlice({\n name: 'items',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(\n fetchNotificationItems.fulfilled,\n (state: TNotificationReducerState, action: TActionPayload) => {\n state.totalCount = action.payload.totalCount;\n if (action.meta.arg.page === 0) {\n state.items = {};\n }\n state.items[action.meta.arg.page] = action.payload.items;\n }\n );\n }\n});\n\nexport default itemsSlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { fetchPermissions } from '@app/common/actions';\nimport { IPermissions } from '@app/common/interfaces';\n\nconst permissions = createSlice({\n name: 'permissions',\n initialState: {} as IPermissions,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchPermissions.fulfilled, (state, action) => {\n return {\n ...state,\n ...action.payload,\n };\n });\n\n builder.addCase(fetchPermissions.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default permissions.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { IIndexReducerState } from 'portal-common-library/interfaces/redux';\n\nimport { IUser2 } from '@app/common/interfaces';\nimport { fetchActiveUsers } from '@app/modules/Account/modules/Teammates/actions';\nimport { DEFAULT_USER_PAGE_SIZE } from '@app/modules/Account/modules/Teammates/constants';\n\nconst activeUsers = createSlice({\n name: 'activeUsers',\n initialState: {\n totalCount: 0,\n items: {}\n } as IIndexReducerState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchActiveUsers.fulfilled, (state, action) => {\n let page = 0;\n\n if (action.meta.arg?.offset) {\n page = Math.floor(action.meta.arg.offset) / DEFAULT_USER_PAGE_SIZE;\n }\n\n if (page === 0) {\n state.items = { 0: action.payload.items };\n } else {\n state.items[page] = action.payload.items;\n }\n\n state.totalCount = action.payload.totalCount;\n\n return state;\n });\n\n builder.addCase(fetchActiveUsers.rejected, (_, action) => {\n throw action.error;\n });\n }\n});\n\nexport default activeUsers.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { IIndexReducerState } from 'portal-common-library/interfaces/redux';\n\nimport { IUser2 } from '@app/common/interfaces';\nimport { fetchInvitedUsers } from '@app/modules/Account/modules/Teammates/actions';\nimport { DEFAULT_USER_PAGE_SIZE } from '@app/modules/Account/modules/Teammates/constants';\n\nconst invitedUsers = createSlice({\n name: 'invitedUsers',\n initialState: {\n totalCount: 0,\n items: {}\n } as IIndexReducerState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchInvitedUsers.fulfilled, (state, action) => {\n let page = 0;\n\n if (action.meta.arg?.offset) {\n page = Math.floor(action.meta.arg.offset) / DEFAULT_USER_PAGE_SIZE;\n }\n\n if (page === 0) {\n state.items = { 0: action.payload.items };\n } else {\n state.items[page] = action.payload.items;\n }\n\n state.totalCount = action.payload.totalCount;\n\n return state;\n });\n\n builder.addCase(fetchInvitedUsers.rejected, (_, action) => {\n throw action.error;\n });\n }\n});\n\nexport default invitedUsers.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { fetchPublisher, updatePublisher } from '@app/common/actions';\nimport { IPublisher2 } from '@app/common/interfaces';\n\nexport const initialState: IPublisher2 = {} as IPublisher2;\n\nconst publisherInfo = createSlice({\n name: 'publisherInfo',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchPublisher.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updatePublisher.fulfilled, (_, action) => {\n return action.payload;\n });\n builder.addCase(updatePublisher.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default publisherInfo.reducer;\n","import { combineReducers } from 'redux';\n\nimport activeUsers from './modules/ActiveUsers/reducer';\nimport invitedUsers from './modules/InvitedUsers/reducer';\nimport publisherInfo from './modules/PublisherInfo/reducer';\n\nconst publisherReducer = combineReducers({\n publisherInfo,\n activeUsers,\n invitedUsers\n});\n\nexport default publisherReducer;\n","import { SDK_DOWNLOADS } from '@app/common/actions';\nimport { IAction, ISdkDownloads } from '@app/common/interfaces';\n\ntype TReducerState = ISdkDownloads;\n\nlet initialState: TReducerState = {};\n\ntype TAction = IAction;\n\nconst sdkDownloadsReducer = (\n state: TReducerState = initialState,\n action: TAction\n): TReducerState => {\n Object.freeze(state);\n\n switch (action.type) {\n case SDK_DOWNLOADS.RECEIVE:\n return action.data;\n default:\n return state;\n }\n};\n\nexport default sdkDownloadsReducer;\n","// redux snackbar is deprecated, use @skillzet/components/SnackbarContainer\nimport merge from 'lodash/merge';\n\nimport { SNACK_BAR } from '@app/common/actions';\nimport { IActionOptionalData, ISnackbarData, ISnackbar } from '@app/common/interfaces';\n\nconst initialState: ISnackbar = {\n isSnackbarOpen: false,\n text: '',\n autoHideDuration: 10000,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left',\n};\n\nfunction snackbar(\n state: ISnackbar = initialState,\n action: IActionOptionalData\n): ISnackbar {\n Object.freeze(state);\n\n switch (action.type) {\n case SNACK_BAR.OPEN_SNACKBAR:\n return merge({}, state, action.data, { isSnackbarOpen: true });\n case SNACK_BAR.CLOSE_SNACKBAR:\n return merge({}, state, { isSnackbarOpen: false, text: '' });\n default:\n return state;\n }\n}\n\nexport default snackbar;\n","import { IAction } from '@app/common/interfaces';\nimport { STATEMENTS } from './actions';\nimport { IStatement } from './interfaces';\n\nlet initialState: IStatement[] = [];\n\ntype TAction = IAction;\n\nfunction statementsReducer(state: IStatement[] = initialState, action: TAction): IStatement[] {\n Object.freeze(state);\n\n switch (action.type) {\n case STATEMENTS.RECEIVE:\n return action.data;\n default:\n return state;\n }\n}\n\nexport default statementsReducer;\n","import merge from 'lodash/merge';\n\nimport { IAction, IQuestionSet } from '@app/common/interfaces';\n\nimport { SURVEY_TOOL } from './actions';\n\nexport interface IReducerState {\n showModal: boolean;\n fromLocation: string;\n questionSet: IQuestionSet;\n}\n\nlet initialState: IReducerState = {\n showModal: false,\n fromLocation: '',\n questionSet: {}\n};\n\ntype TAction = IAction;\n\nconst surveyToolReducer = (state: IReducerState = initialState, action: TAction): IReducerState => {\n Object.freeze(state);\n\n let newState: IReducerState = merge({}, state);\n\n switch (action.type) {\n case SURVEY_TOOL.SHOW_SURVEY:\n // only set showModal to true if the question for that page exists\n // and then set the fromLocation, else clear them both\n if (state.questionSet[action.data]) {\n newState.showModal = true;\n newState.fromLocation = action.data;\n } else {\n newState.showModal = false;\n newState.fromLocation = '';\n }\n\n return newState;\n case SURVEY_TOOL.HIDE_SURVEY:\n // removing the question for the page in order to not show the question twice\n delete newState.questionSet[action.data];\n newState.showModal = false;\n newState.fromLocation = '';\n\n return newState;\n case SURVEY_TOOL.RECEIVE_QUESTIONS:\n newState.questionSet = action.data;\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default surveyToolReducer;\n","import merge from 'lodash/merge';\n\nimport { USER } from '@app/common/actions';\nimport { IUser } from '@app/common/interfaces';\n\nlet initialState: IUser = {} as IUser;\n\ninterface IUserProps {\n type: string;\n data: IUser;\n}\n\nconst userReducer = (state: IUser = initialState, action: IUserProps): IUser => {\n let newState: IUser;\n Object.freeze(state);\n\n switch (action.type) {\n case USER.INFO:\n newState = merge({}, state, action.data);\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default userReducer;\n","import { CaseReducer, createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport pick from 'lodash/pick';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport {\n fetchPlayerDataSchema,\n fetchPlayerDataSchemaChangelogs,\n fetchInGameItemsSchema,\n fetchInGameItemsSchemaChangelogs,\n} from '@appGameHome/common/actions';\nimport {\n IGameProgression,\n IInGameItemsSchema,\n IInGameItemsSchemaChangelog,\n IPlayerDataSchema,\n IPlayerDataSchemaChangelog,\n} from '@appGameProgression/common/interfaces';\n\nimport { KEY_NAMESPACE } from './common/constants';\n\ninterface IReducerPayload {\n env: ENVIRONMENT;\n items: T[];\n count: number;\n}\ninterface IReducerGenerator {\n (\n keyNamespace: KEY_NAMESPACE.PLAYER_DATA\n ): CaseReducer>>;\n (\n keyNamespace: KEY_NAMESPACE.IN_GAME_ITEMS\n ): CaseReducer>>;\n}\n\nconst initialState = {\n PlayerData: {\n production: {\n count: 0,\n items: [],\n },\n sandbox: {\n count: 0,\n items: [],\n },\n productionChangelog: { count: 0, items: [] },\n },\n InGameItems: {\n production: {\n count: 0,\n items: [],\n },\n sandbox: {\n count: 0,\n items: [],\n },\n productionChangelog: { count: 0, items: [] },\n },\n};\n\nconst createNamespaceReducer: IReducerGenerator = <\n T extends\n | IPlayerDataSchema\n | IPlayerDataSchemaChangelog\n | IInGameItemsSchema\n | IInGameItemsSchemaChangelog\n>(\n keyNamespace: KEY_NAMESPACE\n) =>\n (function fulfilledProgressionFetchActionReducer(\n state: IGameProgression,\n action: PayloadAction<{\n env: ENVIRONMENT;\n items: T[];\n count: number;\n }>\n ) {\n const env = action.payload.env;\n const filteredPayload = pick(action.payload, ['items', 'count']);\n\n const { count, items } = filteredPayload;\n\n switch (action.type) {\n case 'progression/fetchPlayerDataSchemaChangelogs/fulfilled':\n if (env === ENVIRONMENT.PRODUCTION) {\n state[KEY_NAMESPACE.PLAYER_DATA].productionChangelog = {\n count,\n items: items as IPlayerDataSchemaChangelog[],\n };\n }\n break;\n\n case 'progression/fetchInGameItemsSchemaChangelogs/fulfilled':\n if (env === ENVIRONMENT.PRODUCTION) {\n state[KEY_NAMESPACE.IN_GAME_ITEMS].productionChangelog = {\n count,\n items: items as IInGameItemsSchemaChangelog[],\n };\n }\n break;\n\n default:\n // technically this ternary is unnecessary and used only for type casting\n state[keyNamespace][env] =\n keyNamespace === KEY_NAMESPACE.PLAYER_DATA\n ? { count, items: items as IPlayerDataSchema[] }\n : { count, items: items as IInGameItemsSchema[] };\n }\n });\n\nconst progression = createSlice({\n name: 'progression',\n initialState: initialState as IGameProgression,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(\n fetchPlayerDataSchema.fulfilled,\n createNamespaceReducer(KEY_NAMESPACE.PLAYER_DATA)\n );\n\n builder.addCase(fetchPlayerDataSchema.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(\n fetchPlayerDataSchemaChangelogs.fulfilled,\n createNamespaceReducer(KEY_NAMESPACE.PLAYER_DATA)\n );\n\n builder.addCase(fetchPlayerDataSchemaChangelogs.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(\n fetchInGameItemsSchema.fulfilled,\n createNamespaceReducer(KEY_NAMESPACE.IN_GAME_ITEMS)\n );\n\n builder.addCase(fetchInGameItemsSchema.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(\n fetchInGameItemsSchemaChangelogs.fulfilled,\n createNamespaceReducer(KEY_NAMESPACE.IN_GAME_ITEMS)\n );\n\n builder.addCase(fetchInGameItemsSchemaChangelogs.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport default progression.reducer;\n","import merge from 'lodash/merge';\nimport { GAME } from '@app/common/actions';\nimport camelize from 'camelize';\n\nlet initialState = {};\n\nconst gameInfoReducer = (state = initialState, action) => {\n let newState;\n Object.freeze(state);\n switch (action.type) {\n // TODO: deprecate this action including gameInfo after games.json endpoints deprecated\n case GAME.CLEAR_GAME:\n return initialState;\n case GAME.GAME_INFO:\n newState = merge({}, state, camelize(action.data));\n\n return newState;\n case GAME.RECEIVE_GAME:\n newState = merge({}, state, action.data);\n\n return newState;\n case GAME.APPLE_PAY_UPDATE:\n newState = merge({}, state);\n newState.applePayCertificates = action.data.gameInfo.applePayCertificates;\n\n return newState;\n default:\n return state;\n }\n};\n\nexport default gameInfoReducer;\n","/* eslint-disable */\n// IVT3 - NEED TO REMOVE CAMELIZE AND REPLACE THEME CONTROLLER WITH JBUILDER\n// ONCE OLD INTEGRATION IS DEPRECATED\nimport camelize from 'camelize';\nimport merge from 'lodash/merge';\n\nimport { BASE_THEME, ADVANCED_THEME, CUSTOM_THEME } from './action';\n\nlet initialState = {\n 1: {\n name: 'Dark',\n needsFetch: true,\n },\n 2: {\n name: 'White',\n needsFetch: true,\n },\n 3: {\n name: 'Emerald',\n needsFetch: true,\n },\n 4: {\n name: 'Crimson',\n needsFetch: true,\n },\n 5: {\n name: 'Cobalt',\n needsFetch: true,\n },\n};\n\nconst customThemeReducer = (state = initialState, action) => {\n let newState;\n Object.freeze(state);\n switch (action.type) {\n case BASE_THEME.COLOR:\n let theme = camelize(action.theme);\n if (Object.values(action.theme)[0].json) {\n let key = Object.keys(action.theme)[0];\n let themeObject = Object.values(action.theme)[0];\n let parsedJson = JSON.parse(themeObject.json);\n\n // reducer to handle MERCURY prize view ticketz image and gradients\n if (!parsedJson.gradients['prizeViewTicketzGradient']) {\n let newGradient = {\n gradient: ['#f6604d', '#e05745'],\n type: 'Gradient',\n description: 'Prize view background on match select for ticketz currency matches',\n };\n parsedJson.gradients['prizeViewTicketzGradient'] = newGradient;\n }\n if (!parsedJson.images['prizeViewTicketzImage']) {\n let newImage = {\n type: 'Image',\n description:\n 'Background Image used for match select ticketz prize container. Should be 240x240 jpg.',\n };\n parsedJson.images['prizeViewTicketzImage'] = newImage;\n }\n\n if (!parsedJson.images['prizeViewSyncImage']) {\n let newRealTimeMatchIconImage = {\n type: 'Image',\n description:\n 'Custom image for the prize box tile for Real Time Matches. Should be ~200x200px png. File must be less than 500 KB.',\n };\n parsedJson.images['prizeViewSyncImage'] = newRealTimeMatchIconImage;\n }\n\n themeObject.jsonBody = parsedJson;\n theme[key] = themeObject;\n }\n Object.values(theme)[0].needsFetch = false;\n newState = merge({}, state, theme);\n return newState;\n case ADVANCED_THEME.UPDATE:\n newState = merge({}, state);\n newState[action.selected].jsonBody[action.mainField][action.subField][action.keyField] =\n action.data;\n if (!newState[action.selected].needsFetch) {\n newState[action.selected].needsFetch = true;\n }\n return newState;\n case ADVANCED_THEME.GRADIENT:\n newState = merge({}, state);\n newState[action.selected].jsonBody.gradients[action.subField].gradient[action.index] =\n action.data;\n if (!newState[action.selected].needsFetch) {\n newState[action.selected].needsFetch = true;\n }\n return newState;\n case ADVANCED_THEME.GRADIENT_REPLACE:\n newState = merge({}, state);\n newState[action.selected].jsonBody.gradients[action.subField].gradient = action.data;\n if (!newState[action.selected].needsFetch) {\n newState[action.selected].needsFetch = true;\n }\n return newState;\n case CUSTOM_THEME.UPDATE:\n newState = merge({}, state);\n let updateTheme = camelize(action.theme);\n if (updateTheme.json) {\n let parsedJson = JSON.parse(updateTheme.json);\n updateTheme.jsonBody = parsedJson;\n }\n newState[updateTheme.id] = updateTheme;\n return newState;\n default:\n return state;\n }\n};\n\nexport default customThemeReducer;\n","/* eslint-disable */\nimport merge from 'lodash/merge';\nimport findIndex from 'lodash/findIndex';\nimport { NEW_TOURNAMENTS } from './new-actions';\n\nlet initialState = {};\n\nconst tournamentReducer = (state = initialState, action) => {\n let newState;\n Object.freeze(state);\n switch (action.type) {\n case NEW_TOURNAMENTS.RECEIVE_SANDBOX_TOURNAMENT:\n let { index, response } = action.data;\n newState = merge({}, state);\n newState[index] = merge({}, newState[index], response);\n\n return newState;\n\n case NEW_TOURNAMENTS.RECEIVE_SANDBOX_TOURNAMENTS:\n newState = merge({}, action.data.tournaments);\n return newState;\n\n case NEW_TOURNAMENTS.RECEIVE_TOURNAMENT_RULE:\n let { index, response } = action.data;\n newState = merge({}, state);\n newState[index].rules.push(response.tournamentRule);\n return newState;\n\n case NEW_TOURNAMENTS.UPDATE_TOURNAMENT_RULE:\n let { index, response } = action.data;\n newState = merge({}, state);\n // lets find the correct tournament rule to update from the redux store\n let updateIndex = findIndex(newState[index].rules, (rule) => {\n return rule.id === action.data.response.tournamentRule.id;\n });\n newState[index].rules[updateIndex] = action.data.response.tournamentRule;\n return newState;\n\n case NEW_TOURNAMENTS.REMOVE_TOURNAMENT_RULE:\n let { index } = action.data;\n newState = merge({}, state);\n\n // lets find the correct tournament rule to remove from the redux store\n let deleteIndex = findIndex(newState[index].rules, (rule) => {\n return rule.id === action.data.response.tournamentRule.id;\n });\n\n newState[index].rules.splice(deleteIndex, 1);\n\n return newState;\n\n default:\n return state;\n }\n};\n\nexport default tournamentReducer;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { combineReducers } from 'redux';\n\nimport { TGameAccess } from '@app/common/helpers';\nimport {\n IAnalyticReducer,\n IConfig,\n ICurrentUser,\n IFeature,\n IGameInfo,\n IModalManagement,\n IPermissions,\n ISdkDownloads,\n ISnackbar,\n ISurveyTool,\n TGamesReducerState,\n IUser,\n ITournamentData,\n} from '@app/common/interfaces';\nimport { IGameChallenge } from '@app/common/interfaces/gameChallenge';\nimport config from '@app/common/reducers/config';\nimport feature from '@app/common/reducers/features';\nimport analytics from '@app/modules/Analytics/reducer';\nimport { IContactUs } from '@app/modules/ContactUs/interfaces';\nimport contactUs from '@app/modules/ContactUs/reducer';\nimport currentUser from '@app/modules/CurrentUser/reducer';\nimport gameAccess from '@app/modules/GameAccess/reducer';\nimport { IGameReducer } from '@app/modules/GameManagement/interfaces';\nimport game from '@app/modules/GameManagement/reducer';\nimport games from '@app/modules/Games/reducer';\nimport gameUrl from '@app/modules/IntegrationGameUrl/reducer';\nimport verifyConfig from '@app/modules/IntegrationVerifyConfig/reducer';\nimport modalManagement from '@app/modules/ModalManagement/reducer';\nimport { IGameChallengeProposal } from '@app/modules/NflChallenge/ProposalPage/interfaces';\nimport gameChallengeProposal from '@app/modules/NflChallenge/ProposalPage/reducer';\nimport gameChallenge from '@app/modules/NflChallenge/reducer';\nimport { TNotificationReducerState } from '@app/modules/Notifications/interfaces';\nimport notifications from '@app/modules/Notifications/reducer';\nimport permissions from '@app/modules/Permissions/reducer';\nimport { IPublisherReducer } from '@app/modules/Publisher/interfaces';\nimport publisher from '@app/modules/Publisher/reducer';\nimport sdkDownloads from '@app/modules/SdkDownloads/reducer';\nimport snackbar from '@app/modules/Snackbar/reducer';\nimport { IStatement } from '@app/modules/Statements/interfaces';\nimport statements from '@app/modules/Statements/reducer';\nimport survey from '@app/modules/Survey/reducer';\nimport user from '@app/modules/User/reducer';\nimport { IGameProgression } from '@appGameProgression/common/interfaces';\nimport progression from '@appGameProgression/reducer';\nimport gameInfo from '@appOptimize/modules/GameInfo/reducer';\nimport customTheme from '@appOptimize/modules/Theme/reducer';\nimport tournament from '@appOptimize/modules/Tournament/reducer';\n\n// TODO Add types to the remaining reducers and clean up duplicate reducers\nexport interface IRootState {\n gameInfo: IGameInfo;\n customTheme: any;\n gameUrl: any;\n publisher: IPublisherReducer;\n tournament: ITournamentData;\n verifyConfig: any;\n config: IConfig;\n user: IUser;\n currentUser: ICurrentUser;\n feature: IFeature;\n sdkDownloads: ISdkDownloads;\n survey: ISurveyTool;\n contactUs: IContactUs;\n games: TGamesReducerState;\n analytics: IAnalyticReducer;\n statements: IStatement[];\n modalManagement: IModalManagement;\n snackbar: ISnackbar;\n game: IGameReducer;\n notifications: TNotificationReducerState;\n permissions: IPermissions;\n progression: IGameProgression;\n gameChallenge: IGameChallenge;\n gameChallengeProposal: IGameChallengeProposal;\n gameAccess: TGameAccess;\n}\n\nconst appReducer = combineReducers({\n gameInfo,\n customTheme,\n gameUrl,\n publisher,\n tournament,\n verifyConfig,\n config,\n user,\n currentUser,\n feature,\n sdkDownloads,\n survey,\n contactUs,\n games,\n analytics,\n statements,\n modalManagement,\n snackbar,\n game,\n notifications,\n permissions,\n progression,\n gameChallenge,\n gameChallengeProposal,\n gameAccess,\n});\n\ninterface IRootReducerResetAction {\n type: 'RESET';\n}\n\ntype ReducerParams = Parameters;\nconst rootReducer = (state: ReducerParams[0], action: IRootReducerResetAction) => {\n if (action.type === 'RESET') {\n return appReducer(undefined, action);\n }\n\n return appReducer(state, action);\n};\n\nexport default rootReducer;\n","import merge from 'lodash/merge';\nimport { IActionNoData } from '@app/common/interfaces';\nexport interface IConfig {\n flow: string;\n}\n\nfunction configReducer(state: IConfig = { flow: '' }, action: IActionNoData): IConfig {\n let newState: IConfig;\n Object.freeze(state);\n switch (action.type) {\n default:\n newState = merge({}, state);\n newState.flow = window.location.pathname.split('/')[1];\n\n return newState;\n }\n}\nexport default configReducer;\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\nimport { LogoutOptions } from '@auth0/auth0-react';\n\nimport ReactGA from 'react-ga';\nimport { default as ReactGA4 } from 'react-ga4';\nimport { Store } from 'redux';\n\nimport { fetchEnvironmentConfig, IAppConfig, initialAppConfig } from './core/appConfig';\nimport Root from './core/root';\nimport { IRootState } from './core/rootReducer';\nimport configureStore from './core/store';\n\ndeclare global {\n interface Window {\n appConfig: IAppConfig;\n s: () => IRootState;\n store: Store;\n logout: (options: LogoutOptions | undefined) => void;\n getAccessTokenSilently: () => Promise;\n }\n}\n\nexport const store: Store = configureStore();\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const root: HTMLElement = document.getElementById('root') as HTMLElement;\n\n window.appConfig = initialAppConfig; // needed to bind FF to the window\n\n void fetchEnvironmentConfig().then(({ data }) => {\n window.appConfig.environment = data;\n\n // google analytics 4 is only setup for staging and production - production id\n let GA4_ID = 'G-9LMYNJEETP';\n if (window.location.host !== 'developers.skillz.com') {\n // for testing, allow access to store in chrome console\n window.store = store;\n window.s = store.getState.bind(store);\n // google analytics 4 is only setup for staging and production - staging id\n GA4_ID = 'G-DRBRWBZWH3';\n }\n\n ReactDOM.render(, root);\n\n ReactGA.initialize('UA-40410914-4');\n\n ReactGA4.initialize(GA4_ID);\n });\n});\n","import { createStore, applyMiddleware, Store } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport thunk from 'redux-thunk';\n\nimport rootReducer, { IRootState } from './rootReducer';\n\nfunction configureStore(): Store {\n // this function is executed before environment config is fetched, so using domain to determine env\n const isProductionEnv = window.location.host === 'developers.skillz.com';\n\n return createStore(\n rootReducer,\n {},\n isProductionEnv ? applyMiddleware(thunk) : composeWithDevTools(applyMiddleware(thunk))\n );\n}\n\nexport default configureStore;\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from \"camelize\";\nimport { SORT_DIRECTION } from \"portal-common-library/constants/table\";\n\nimport { snakeCaseConverter } from \"@app/common/helpers\";\nimport { IErrors, IIndexResponse, IUser2 } from \"@app/common/interfaces\";\nimport axios, {\n AxiosError,\n AxiosResponse,\n} from \"@app/common/setup/axiosWithHeader\";\n\nimport { TABLE_SORT_ATTRIBUTES } from \"./constants\";\nimport { IUsersFetchParams, TUserGameRoleValues } from \"./interfaces\";\n\nconst fetchUsers = (\n params?: IUsersFetchParams,\n hasPendingInvitation?: boolean\n): Promise> => {\n const sortAttributes: string[] = [];\n\n if (params?.sortAttribute) {\n const directionSign =\n params.sortDirection === SORT_DIRECTION.DESC ? \"-\" : \"\";\n sortAttributes.push(`${directionSign}${params?.sortAttribute}`);\n }\n\n // always sort by email in addition to provided sort attribute\n if (params?.sortAttribute !== TABLE_SORT_ATTRIBUTES.EMAIL) {\n sortAttributes.push(TABLE_SORT_ATTRIBUTES.EMAIL);\n }\n\n delete params?.sortDirection;\n\n return axios\n .get(\"/api_internal/v1/users\", {\n params: snakeCaseConverter({\n ...params,\n sortAttribute: sortAttributes.join(\",\"),\n hasPendingInvitation,\n }),\n })\n .then(camelize)\n .then((response: AxiosResponse>) => {\n return response.data;\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const fetchActiveUsers = createAsyncThunk(\n \"activeUsers/fetch\",\n async (params?: IUsersFetchParams) => {\n return await fetchUsers(params, false);\n }\n);\n\nexport const fetchInvitedUsers = createAsyncThunk(\n \"invitedUsers/fetch\",\n async (params?: IUsersFetchParams) => {\n return await fetchUsers(params, true);\n }\n);\n\nexport const assignGameRolesToUser = (\n userId: number,\n gameRoles: TUserGameRoleValues\n) => {\n return axios\n .patch(\n `/api_internal/v1/users/${userId}/game_roles`,\n snakeCaseConverter({ gameRoles })\n )\n .catch((e) => {\n const error = e as AxiosError;\n throw new Error(error.response?.data.errors);\n });\n};\n","/* eslint-disable no-shadow */\nimport { SORT_DIRECTION } from 'portal-common-library/constants/table';\nimport { IAtomTableHeaderColumn } from 'portal-common-library/interfaces/table';\n\nimport {\n IGameAssignmentDropdownDefaults,\n IUserTableData,\n IUserTableState,\n TUserGameRoleValues,\n} from './interfaces';\n\nexport const DEFAULT_USER_PAGE_SIZE = 10;\n\nexport enum TABLE_SORT_ATTRIBUTES {\n ID = 'id',\n EMAIL = 'email',\n SKILLZ_SUPPORT = 'skillz_support',\n}\n\nexport const INITIAL_TABLE_STATE: IUserTableState = {\n page: 0,\n offset: 0,\n sortAttribute: TABLE_SORT_ATTRIBUTES.EMAIL,\n sortDirection: SORT_DIRECTION.ASC,\n};\n\nexport const EMAIL_HEAD_ROW: IAtomTableHeaderColumn = {\n id: 'header-email',\n cellContent: 'User',\n property: TABLE_SORT_ATTRIBUTES.EMAIL,\n};\n\nexport const ACTION_HEAD_ROW: IAtomTableHeaderColumn = {\n id: 'header-action',\n cellContent: '',\n};\n\nexport const USER_ROLE_HEAD_ROW: IAtomTableHeaderColumn = {\n id: 'header-user-role',\n cellContent: '',\n};\n\nexport const GAME_ROLE_HEAD_ROW: IAtomTableHeaderColumn = {\n id: 'header-game-role',\n cellContent: 'Role',\n};\n\nexport const GAMES_HEAD_ROW: IAtomTableHeaderColumn = {\n id: 'header-games',\n cellContent: 'Game',\n};\n\nexport const SKILLZ_SUPPORT_HEAD_ROW: IAtomTableHeaderColumn = {\n id: 'header-is-skillz-support',\n cellContent: 'Skillz Support',\n property: TABLE_SORT_ATTRIBUTES.SKILLZ_SUPPORT,\n};\n\nexport const TABLE_DATA_ORDER: (keyof IUserTableData)[] = [\n 'user',\n 'skillzSupport',\n 'userRole',\n 'gameRole',\n 'games',\n 'action',\n];\n\nexport enum MENU_ITEM_ATTRIBUTES {\n REMOVE = 'remove',\n CANCEL = 'cancel',\n TRANSFER = 'transfer',\n EDIT = 'edit',\n}\n\nexport enum MENU_ITEM_COPY {\n REMOVE = 'Remove User',\n CANCEL = 'Cancel Invite',\n TRANSFER = 'Transfer Ownership',\n EDIT = 'Edit User',\n}\n\nexport enum TABLES {\n ACTIVE_USERS = 'activeUsersTable',\n INVITED_USERS = 'invitedUsersTable',\n}\n\nexport const INITIAL_USER_GAME_ROLES: TUserGameRoleValues = {\n analytics: false,\n billing: false,\n developer: false,\n publisher: false,\n};\n\nexport enum ROLE_NAMES {\n analytics = 'Analytics',\n billing = 'Billing',\n developer = 'Developer',\n publisher = 'Publisher',\n}\n\nexport const GAME_ASSIGNMENT_DROPDOWN_DEFAULTS: IGameAssignmentDropdownDefaults = {\n shouldSelectAllGames: true,\n selectAllGamesText: 'All Games',\n dropdownPlaceholder: 'Select Games',\n limitTags: 2,\n};\n\nexport const TOOLTIP_TYPOGRAPHY_STYLE = { fontSize: '14px', padding: '16px' };\n\nexport const TOOLTIP_BOLD_TEXT_STYLE = { fontSize: '14px', fontWeight: 'bold' };\n","export enum PASSWORD_ERRORS {\n BLANK = 'Please fill out this field',\n INVALID = 'Incorrect password',\n MISMATCH = 'Passwords must match',\n MINIMUM = 'Password must be minimum of 8 characters',\n MAXIMUM = 'Password is too long (maximum is 128 characters)',\n DIFFERENT_PASSWORD = 'Password must be different from current password'\n}\n","import { IAnalyticCsvObject } from '@app/common/interfaces';\n\nexport const TITLE: string = 'Analytics';\n\nexport enum DATE_RANGE_OPTIONS {\n LAST_7_DAYS = 'Last 7 days',\n LAST_30_DAYS = 'Last 30 days',\n MTD = 'MTD',\n PRIOR_MONTH = 'Prior Month',\n LAST_90_DAYS = 'Last 90 days',\n LAST_180_DAYS = 'Last 180 days',\n YTD = 'YTD',\n CUSTOM_DATE_RANGE = 'Custom Date Range',\n}\n\nexport enum TAB {\n OVERVIEW = 'overview',\n ENGAGEMENT = 'engagement',\n MONETIZATION = 'monetization',\n FUNNEL = 'funnel',\n}\n\nexport const ANALYTICS_TABS: string[] = ['Overview', 'Engagement', 'Monetization', 'Funnel'];\nexport const TABS: string[] = [TAB.OVERVIEW, TAB.ENGAGEMENT, TAB.MONETIZATION, TAB.FUNNEL];\n\n// old keys from developer_analytic table\nexport const DEVELOPER_ANALYTIC_METRICS: IAnalyticCsvObject = {\n grossRevenue: 'Revenue',\n estimatedGrossRevenue: 'Estimated Revenue',\n skillzArpdau: 'Avg Rev/DAU',\n estSkillzArpdau: 'Est Avg Rev/DAU',\n skillzArppu: 'Avg Rev/Paying DAU',\n estSkillzArppu: 'Est Avg Rev/Paying DAU',\n installsTo1z: 'Installs to 1Z',\n installsTo2z: 'Installs to 2Z',\n installsTo3z: 'Installs to 3Z',\n installsToDeposit: 'Installs to Deposit',\n d1: 'D1 Retention',\n d7: 'D7 Retention',\n d30: 'D30 Retention',\n p1: 'P1 Retention',\n p7: 'P7 Retention',\n p30: 'P30 Retention',\n skillzPayingDau: 'Paying DAU',\n proGamesPerPlayer: 'Paid Games per Paying DAU',\n newProPlayers: 'NPU',\n skillzInstalls: 'Installs',\n};\n\n// generic keys for record & abortRate which is still reading from developer_analytic table\nexport const COMMON_ANALYTICS_METRICS: IAnalyticCsvObject = {\n startTime: 'Date',\n gameTitle: 'Game Name',\n gameProductionId: 'Game ID',\n // only key from developer_analytic table\n abortRate: 'Abort Rate',\n};\n\n// keys from developer_analytic table and mapped to game analytic service data\nexport const GAME_ANALYTICS_REPLACED_METRICS: IAnalyticCsvObject = {\n skillzDau: 'DAU',\n gamesPerPlayer: 'Games per DAU',\n gamesPlayed: 'Games Played',\n proGamesPlayed: 'Pro Games Played',\n zGamesPlayed: 'Z Games Played',\n dauOfMau: 'DAU/MAU',\n};\n\n// new keys defined in controller and data from game analytic service\nexport const GAME_ANALYTICS_METRICS: IAnalyticCsvObject = {\n installs: 'Installs',\n installsZ1: 'Z1 Installs',\n installsZ2: 'Z2 Installs',\n installsZ3: 'Z3 Installs',\n retentionD1: 'D1 Retention',\n retentionD7: 'D7 Retention',\n retentionD30: 'D30 Retention',\n payerProRetentionD1: 'D1 Paying User Retention',\n payerProRetentionD7: 'D7 Paying User Retention',\n payerProRetentionD30: 'D30 Paying User Retention',\n proDau: 'Pro DAU',\n proGamesPerProDau: 'Pro Games per Pro DAU',\n entryFeePerProDau: 'Entry Fee per Pro DAU',\n firstTimePayersToSkillzNetwork: 'New Paying Users',\n kpiInstallsToDeposit: 'Installs To Deposit',\n entryFee: 'Entry Fee',\n entryFeeD1: 'D1 Entry Fee',\n entryFeeD7: 'D7 Entry Fee',\n entryFeeD30: 'D30 Entry Fee',\n entryFeeLifetime: 'Lifetime Entry Fee',\n newProUsers: 'New Pro Playing Users',\n};\n\nexport const ESTIMATED_REVENUE_METRIC: IAnalyticCsvObject = {\n estimatedRevenue: 'Estimated Revenue',\n};\n\nexport const idPrefix: string = 'analytics';\n\nexport const ALL_GAMES: string = 'All Games';\n\nexport const DEFAULT_DATE_RANGE: DATE_RANGE_OPTIONS = DATE_RANGE_OPTIONS.LAST_30_DAYS;\n","export const TITLE: string = 'Contact Us';\nexport const DESCRIPTION: string = 'How can we help?';\nexport const SELECT_TEXT: string = 'Select your ';\n\nexport enum CONTACT_US_SNACKBAR_MESSAGE {\n REQUEST_RECEIVED = 'Help request received. Our support team will be in touch with you shortly',\n REQUEST_FAILED = 'Error submitting report'\n}\n\nexport const FRAMEWORKS: string[] = [\n SELECT_TEXT + 'framework',\n 'Unity',\n 'Cordova',\n 'Native iOS',\n 'Native Android',\n 'N/A'\n];\n\nexport const ENVIRONMENTS: string[] = [SELECT_TEXT + 'environment', 'Sandbox', 'Production'];\n","import snakeCase from 'lodash/snakeCase';\n\nimport { ITicketInfo } from '@app/modules/ContactUs/interfaces';\n\ntype TContactUsFetch = () => JQuery.jqXHR;\ntype TContactUsSendTicket = (data: ITicketInfo) => JQuery.jqXHR;\n\nexport const fetchGames: TContactUsFetch = (): JQuery.jqXHR => {\n return $.ajax({\n url: `/games.json`,\n method: 'GET'\n });\n};\n\nexport const fetchSdkVersions: TContactUsFetch = (): JQuery.jqXHR => {\n return $.ajax({\n url: `/mobile_sdk_releases/get_sdk_releases.json`,\n method: 'GET'\n });\n};\n\nexport const sendTicket: TContactUsSendTicket = (data: ITicketInfo): JQuery.jqXHR => {\n let form: FormData = new FormData();\n Object.entries(data).forEach((key: any) => {\n let ticketEntry: string = key[0];\n let ticketValue: any = key[1];\n\n // skip when null, empty string value, and default -1\n if (ticketValue === null || ticketValue === '' || ticketValue === -1) {\n return;\n }\n\n form.append(`send_ticket[${snakeCase(ticketEntry)}`, ticketValue);\n });\n\n return $.ajax({\n url: `/support/contact_us`,\n method: 'POST',\n data: form,\n contentType: false,\n processData: false\n });\n};\n","import React from 'react';\n\nimport ArrowBack from '@mui/icons-material/ArrowBack';\nimport ArrowForward from '@mui/icons-material/ArrowForward';\n\nimport ReactGA from 'react-ga';\n\nimport { GOOGLE_ANALYTICS } from '@app/common/constants';\n\ninterface INavigationButton {\n id: string;\n type: 'previous' | 'next';\n}\n\nexport const NavigationButton = ({ id, type }: INavigationButton): JSX.Element => {\n const onClickHandler = () => {\n ReactGA.event({\n label: id,\n category: GOOGLE_ANALYTICS.HELP_BITS.CATEGORY,\n action:\n type === 'next'\n ? GOOGLE_ANALYTICS.HELP_BITS.ACTIONS.CLICK_NEXT\n : GOOGLE_ANALYTICS.HELP_BITS.ACTIONS.CLICK_BACK,\n });\n };\n\n const style = { height: '14px', width: '14px' };\n\n return (\n \n {type === 'next' ? : }\n \n );\n};\n","import React from 'react';\n\nimport { IHelpBitResponse } from '@app/modules/ContentManagementSystem/interfaces';\n\nimport { NavigationButton } from '../modules/Content/modules/Footer/subcomponents';\n\nexport const renderFooterComponents = (\n currentHelpBit: IHelpBitResponse,\n handleChangeHelpBit: (helpBitId: number) => () => void\n): JSX.Element[] => {\n const hasPrevious = !!currentHelpBit.previous;\n const previousFunction = !!currentHelpBit.previous\n ? handleChangeHelpBit(currentHelpBit.previous.id)\n : undefined;\n\n const hasNext = !!currentHelpBit.next;\n const nextFunction = !!currentHelpBit.next\n ? handleChangeHelpBit(currentHelpBit.next.id)\n : undefined;\n\n return [\n \n \n ,\n \n \n ,\n ];\n};\n","import loadable from '@loadable/component';\n\nconst Content = loadable(\n () => import(/* webpackChunkName: \"content-management-system-content-content\" */ './Content')\n);\n\nexport default Content;\n","import loadable from '@loadable/component';\n\nconst Footer = loadable(\n () => import(/* webpackChunkName: \"content-management-system-content-footer\" */ './Footer')\n);\n\nexport default Footer;\n","import loadable from '@loadable/component';\n\nconst Header = loadable(\n () => import(/* webpackChunkName: \"content-management-system-content-header\" */ './Header')\n);\n\nexport default Header;\n","export const PAGINATE_LIMIT = 15;\nexport const SORT_BY_FIELD = 'title';\nexport const FETCH_ERROR_MESSAGE = 'Could not fetch help bits';\n","import React from 'react';\n\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport variables from '@app/core/variables.scss';\n\nimport './loadingIndicator.scss';\n\nexport const componentClassName = 'wizard-view-container';\n\nconst LoadingIndicator = ({\n color = variables.colorBrandBlue,\n size = 50,\n thickness = 5,\n testId = 'loading-indicator',\n}: {\n color?: string;\n size?: number;\n thickness?: number;\n testId?: string;\n}): JSX.Element => {\n return (\n
    \n \n
    \n );\n};\n\nexport default LoadingIndicator;\n","import loadable from '@loadable/component';\n\nconst LoadingIndicator = loadable(\n () =>\n import(\n /* webpackChunkName: \"content-management-system-loading-indicator\" */ './LoadingIndicator'\n )\n);\n\nexport default LoadingIndicator;\n","import axios from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\n\nimport { openSnackbar } from '@app/common/actions';\nimport { store } from '@app/developerPortal';\n\nimport { formatFindParams } from './helpers';\nimport { IStrapiFindParams, IStrapiFindOneParams } from './interfaces';\nimport { FETCH_ERROR_MESSAGE } from './modules/Content/modules/HelpSearch/constants';\n\n// need to create a separate instance of `axios` which removes the `x-csrf-token` that keeps\n// getting injected on each request to prevent CORS errors\nexport const contentManagementSystemInstance = axios.create();\n// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\ndelete contentManagementSystemInstance.defaults.headers.common['X-CSRF-TOKEN'];\n\nexport interface IFetchHelpBitsHeaders {\n userId?: string;\n pageSearchedFrom?: string;\n}\n\nexport const fetchHelpBit = ({ id }: IStrapiFindOneParams) => {\n return contentManagementSystemInstance\n .get(`${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/help-bits/${id}`)\n .then(camelize)\n .catch(() => {\n store.dispatch(\n openSnackbar({\n text: FETCH_ERROR_MESSAGE,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left',\n autoHideDuration: 2000,\n })\n );\n });\n};\n\nexport const fetchHelpBits = (\n fetchHelpBitsHeaders: IFetchHelpBitsHeaders = {},\n params: IStrapiFindParams = {}\n) => {\n const urlParams = formatFindParams(params);\n /* eslint-disable camelcase */\n const headers = {\n user_id: fetchHelpBitsHeaders.userId,\n page_searched_from: fetchHelpBitsHeaders.pageSearchedFrom,\n } as Record;\n /* eslint-enable camelcase */\n\n return contentManagementSystemInstance\n .get(`${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/help-bits?${urlParams}`, {\n headers,\n })\n .then(camelize)\n .catch(() => {\n store.dispatch(\n openSnackbar({\n text: FETCH_ERROR_MESSAGE,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left',\n autoHideDuration: 2000,\n })\n );\n });\n};\n","import { IStrapiFindParams } from '../interfaces';\n\nexport const formatFindParams = (params: IStrapiFindParams): string => {\n const result: string[] = [];\n const urlParams = new URLSearchParams();\n const map: Partial> = {\n limit: '_limit',\n sort: '_sort',\n start: '_start',\n };\n\n // need to handle the values in the `map` because they need to be prefixed with `_`\n Object.keys(map).forEach((key) => {\n const value = params[key as keyof IStrapiFindParams];\n\n if (value !== undefined) {\n const keyFrom = map[key as keyof IStrapiFindParams];\n\n urlParams.append(keyFrom as string, value.toString());\n }\n });\n\n if (urlParams.toString() !== '') {\n result.push(urlParams.toString());\n }\n\n // the values not in the `map` attribute are expressions, so we just need to pass\n // them into the url if they are not undefined\n Object.entries(params).forEach(([key, value]) => {\n if (!Object.keys(map).includes(key) && value !== undefined) {\n result.push(value);\n }\n });\n\n return result.join('&');\n};\n","import { IDashboardGame } from '@app/common/interfaces';\nimport { STATUS } from '@app/modules/GameManagement/common/constants';\n\nexport function isGameLaunched(game: IDashboardGame): boolean {\n return game.live === STATUS.COMPLETED;\n}\n\nexport function hasLaunchedToStore(games: IDashboardGame[]): boolean {\n return games.some(isGameLaunched);\n}\n\nexport function hasFirstGame(games: IDashboardGame[]): boolean {\n return games.length > 0;\n}\n","import { Dispatch } from 'redux';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport axios, { AxiosResponse, AxiosError } from '@app/common/setup/axiosWithHeader';\nimport {\n TDispatch,\n IAction,\n IVerification,\n IVerificationParams,\n IErrors,\n TErrorGeneral,\n TAxiosPromise\n} from '@app/common/interfaces';\nimport { GAME_STATES } from '../constants';\nimport { snakeCaseConverter } from '@app/common/helpers';\n\nexport enum VERIFICATION {\n RECEIVE_DATA = 'verification/RECEIVE_DATA'\n}\n\nconst verifiedFairness: IVerificationParams = {\n fairnessVerification: true,\n stateName: GAME_STATES.FAIRNESS\n};\n\nexport function receiveVerification(data: IVerification): IAction {\n return {\n type: VERIFICATION.RECEIVE_DATA,\n data\n };\n}\n\nexport function fetchVerification(gameId: number): TDispatch {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return axios\n .get(`/api/v1/games/${gameId}/verification`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveVerification(response.data));\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n };\n}\n\nexport function updateVerification(gameId: number, data: IVerificationParams): TDispatch {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return axios\n .put(`/api/v1/games/${gameId}/verification`, { verification: snakeCaseConverter(data) })\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveVerification(response.data));\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n };\n}\n\nexport function verifyFairness(gameId: number): TDispatch {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return async (dispatch: Dispatch): Promise => {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n // TODO REPLACE [WS-10403] remove the below disable and fix error\n // eslint-disable-next-line @typescript-eslint/await-thenable\n return await dispatch(updateVerification(gameId, verifiedFairness));\n };\n}\n","import { Dispatch } from 'redux';\nimport axios, { AxiosResponse, AxiosError } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { GAME_STATES, STATUS } from '../constants';\nimport { TDispatch, IAction, TAxiosPromise, IErrors, TErrorGeneral } from '@app/common/interfaces';\nimport { TGameState, IGameStateRequest } from '../interfaces';\n\nexport enum GAME_STATE_ACTIONS {\n RECEIVE = 'gameState/RECEIVE'\n}\n\nexport function receiveGameState(data: TGameState): IAction {\n return {\n type: GAME_STATE_ACTIONS.RECEIVE,\n data\n };\n}\n\nexport function fetchGameStateByGameId(gameId: number): TDispatch {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return axios\n .get(`/api/v1/games/${gameId}/game_state`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveGameState(response.data));\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n };\n}\n\nfunction updateGameState(\n requestObject: IGameStateRequest,\n gameId: number,\n dispatch: Dispatch>\n): TAxiosPromise {\n return axios\n .patch(`/api/v1/games/${gameId}/game_state`, snakeCaseConverter(requestObject))\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveGameState(response.data));\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n}\n\nexport function updateInProgressGameState(gameId: number, stateName: GAME_STATES): TDispatch {\n return (dispatch: Dispatch>): TAxiosPromise => {\n let requestObject: IGameStateRequest = {\n gameState: { [stateName]: STATUS.IN_PROGRESS }\n };\n\n return updateGameState(requestObject, gameId, dispatch);\n };\n}\n\nexport function updateCompleteGameState(gameId: number, stateName: GAME_STATES): TDispatch {\n return (dispatch: Dispatch>): TAxiosPromise => {\n let requestObject: IGameStateRequest = {\n gameState: { [stateName]: STATUS.COMPLETED }\n };\n\n return updateGameState(requestObject, gameId, dispatch);\n };\n}\n","export enum GAME_STATES {\n GAME_INFORMATION = 'gameInformation',\n DISTRIBUTION = 'distribution',\n SKILLZ_SDK = 'skillzSdk', // also known as setupSDK page\n PHOTON_SETUP = 'photonSetup',\n INITIALIZE_SKILLZ_UI = 'initializeSkillzUi',\n INITIALIZE_SKILLZ_UI_VERIFICATION = 'initializeSkillzUiVerification',\n CORE_LOOP = 'coreLoop',\n CORE_LOOP_VERIFICATION = 'coreLoopVerification',\n FAIRNESS = 'fairness',\n SANDBOX_READY = 'sandboxReady',\n INTRODUCTION = 'introduction',\n SDK_THEME = 'sdkTheme',\n TOURNAMENTS = 'tournaments',\n VIRTUAL_CURRENCY = 'virtualCurrency',\n APPLE_PAY = 'applePay',\n DEEP_LINKING = 'deepLinking',\n SINGLE_SIGN_ON = 'singleSignOn',\n PUSH_NOTIFICATIONS = 'pushNotifications',\n UPLOAD_BINARY = 'uploadBinary',\n VERIFY_CONFIGURATION = 'verifyConfiguration',\n PUBLISH_GAME = 'publishGame',\n NEXT_STEPS = 'nextSteps',\n LIVE = 'live',\n HAS_SEEN_PRIZE_ENABLEMENT_SUCCESS = 'hasSeenPrizeEnablementSuccess',\n THIRD_PARTY_ADS = 'thirdPartyAds',\n PLAYER_DATA = 'playerData',\n IN_GAME_ITEMS = 'inGameItems',\n PROGRESSION_ROOMS = 'progression_rooms',\n FTUE_CONFIGURATION = 'ftueConfiguration',\n}\n\nexport enum GAME_STATES_REQUEST {\n GAME_INFORMATION = 'game_information',\n}\n\nexport enum STATUS {\n NOT_NEEDED = -1,\n NOT_STARTED = 0,\n IN_PROGRESS = 1,\n COMPLETED = 2,\n ACTION_REQUIRED = 3,\n}\n","export enum META_TAGS_ATTRIBUTES {\n IOS = 'ios',\n CROSS_PLATFORM = 'cross_platform',\n ANDROID = 'android',\n UNITY = 'unity',\n CORDOVA = 'cordova',\n X_CODE = 'xcode',\n ANDROID_STUDIO = 'android_studio',\n CASH_AND_VIRTUAL_CURRENCY = 'cash_and_virtual_currency',\n VIRTUAL_CURRENCY_ONLY = 'virtual_currency_only',\n PLAY_AND_COMPARE = 'play_and_compare',\n HYBRID = 'hybrid',\n REAL_TIME_ONLY = 'real_time_only',\n}\n","export const REAL_PRIZES_URL = 'https://docs.skillz.com/docs/unlock-real-prizes/';\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\nimport merge from 'lodash/merge';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport { IErrors } from '@app/common/interfaces';\nimport { KEY_NAMESPACE } from '@appGameProgression/common/constants';\nimport {\n IInGameItemsSchema,\n IInGameItemsSchemaChangelog,\n IProgressionSchemaChangelogsResponse,\n IProgressionSchemaResponse,\n} from '@appGameProgression/common/interfaces';\n\ninterface IFetchInGameItemsProps {\n env: ENVIRONMENT;\n}\n\ntype AxiosResponseInGameItemsChangelogs = AxiosResponse<\n IProgressionSchemaChangelogsResponse\n>;\n\nexport const fetchInGameItemsSchema = createAsyncThunk(\n 'progression/fetchInGameItemsSchema',\n async ({ env }: IFetchInGameItemsProps) => {\n return axios\n .get(`/api/v1/progression_schemas/${KEY_NAMESPACE.IN_GAME_ITEMS}/${env}`)\n .then(camelize)\n .then((response: AxiosResponse>) => {\n return merge(response.data, { env });\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n }\n);\n\nexport const fetchInGameItemsSchemaChangelogs = createAsyncThunk(\n 'progression/fetchInGameItemsSchemaChangelogs',\n async () => {\n return axios\n .get(\n `/api/v1/progression_schemas/${KEY_NAMESPACE.IN_GAME_ITEMS}/${ENVIRONMENT.PRODUCTION}/changelogs`\n )\n .then(camelize)\n .then((response: AxiosResponseInGameItemsChangelogs) => {\n return merge(response.data, { env: ENVIRONMENT.PRODUCTION });\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { fetchProgressionRoomMappingsRequest, fetchProgressionRoomsRequest } from '../helpers';\n\nexport const fetchProgressionRooms = createAsyncThunk(\n 'progressionRooms/fetchProgressionRooms',\n fetchProgressionRoomsRequest\n);\n\nexport const fetchProgressionRoomMappings = createAsyncThunk(\n 'progressionRooms/fetchProgressionRoomMappings',\n fetchProgressionRoomMappingsRequest\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { fetchProgressionRoomVersionsRequest } from '../helpers';\n\nexport const fetchProgressionRoomVersions = createAsyncThunk(\n 'progressionRoomVersions/fetchProgressionRoomVersions',\n fetchProgressionRoomVersionsRequest\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { fetchProgressionRoomVersionLocalesRequest } from '../helpers';\n\nexport const fetchProgressionRoomVersionLocales = createAsyncThunk(\n 'progressionRoomVersions/fetchProgressionRoomVersionLocales',\n fetchProgressionRoomVersionLocalesRequest\n);\n","import { IErrors, TVoidFunction } from '@app/common/interfaces';\nimport axios, { AxiosError, AxiosResponse } from '@app/common/setup/axiosWithHeader';\nimport { calculateFileChunkStartEnd } from '@appGameHome/common/helpers/fileUploadHelpers';\nimport {\n IAwsSignedUrl,\n IAwsUploadError,\n IAwsUploadManager,\n IAwsUploadResponse,\n IFileChunkStartEnd,\n TAwsUploadResponse,\n} from '@appGameHome/common/interfaces';\n\nexport function chunkFileUpload(\n file: File,\n fileType: string,\n numberOfChunks: number,\n fileChunkSize: number,\n signedUrls: IAwsSignedUrl[],\n progressFunction: TVoidFunction\n): IAwsUploadManager {\n let awsResponsePromises: Promise[] = [];\n let startEndOfChunk: IFileChunkStartEnd;\n let fileChunk: Blob;\n\n const controller = new AbortController();\n\n signedUrls.forEach((signedUrl: IAwsSignedUrl) => {\n let partNumber: number = signedUrl.partNumber;\n startEndOfChunk = calculateFileChunkStartEnd(partNumber, numberOfChunks, fileChunkSize);\n fileChunk = file.slice(startEndOfChunk.start, startEndOfChunk.end);\n\n let uploadResp: Promise = uploadAwsChunk(\n fileChunk,\n signedUrl.url,\n fileType,\n partNumber,\n progressFunction,\n controller\n );\n\n awsResponsePromises.push(uploadResp);\n });\n\n return {\n uploadChunks: awsResponsePromises,\n cancelUpload: () => controller.abort(),\n signal: controller.signal,\n };\n}\n\nexport function uploadAwsChunk(\n chunk: Blob,\n signedUrl: string,\n fileType: string,\n partNumber: number,\n progressFunction: TVoidFunction,\n controller: AbortController\n): Promise {\n const config = {\n headers: { 'Content-Type': fileType },\n onUploadProgress: (progressEvent: ProgressEvent) => {\n progressFunction(partNumber, progressEvent);\n },\n signal: controller.signal,\n };\n\n return axios\n .put(signedUrl, chunk, config)\n .then((response: AxiosResponse): IAwsUploadResponse => {\n const headers = response.headers as Record;\n\n return { partNumber, etag: headers.etag.replace(/\"/g, '') };\n })\n .catch((error: AxiosError): IAwsUploadError => {\n return { partNumber, error: error.message };\n });\n}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\nimport merge from 'lodash/merge';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport { IErrors } from '@app/common/interfaces';\nimport { KEY_NAMESPACE } from '@appGameProgression/common/constants';\nimport {\n IPlayerDataSchema,\n IPlayerDataSchemaChangelog,\n IProgressionSchemaChangelogsResponse,\n IProgressionSchemaResponse,\n} from '@appGameProgression/common/interfaces';\n\ninterface IFetchPlayerDataSchemaProps {\n searchParams: string;\n env: ENVIRONMENT;\n}\n\ninterface IFetchPlayerDataSchemaPropsWithEnv extends IFetchPlayerDataSchemaProps {\n env: ENVIRONMENT;\n}\n\ntype AxiosResponsePlayerDataChangelogs = AxiosResponse<\n IProgressionSchemaChangelogsResponse\n>;\n\nexport const fetchPlayerDataSchema = createAsyncThunk(\n 'progression/fetchPlayerDataSchema',\n async ({ searchParams, env }: IFetchPlayerDataSchemaPropsWithEnv) => {\n return axios\n .get(`/api/v1/progression_schemas/${KEY_NAMESPACE.PLAYER_DATA}/${env}${searchParams}`)\n .then(camelize)\n .then((response: AxiosResponse>) => {\n return merge(response.data, { env });\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n }\n);\n\nexport const fetchPlayerDataSchemaChangelogs = createAsyncThunk(\n 'progression/fetchPlayerDataSchemaChangelogs',\n async ({ searchParams }: IFetchPlayerDataSchemaProps) => {\n return axios\n .get(\n `/api/v1/progression_schemas/${KEY_NAMESPACE.PLAYER_DATA}/${ENVIRONMENT.PRODUCTION}/changelogs${searchParams}`\n )\n .then(camelize)\n .then((response: AxiosResponsePlayerDataChangelogs) => {\n return merge(response.data, { env: ENVIRONMENT.PRODUCTION });\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n }\n);\n","import * as React from 'react';\n\nimport appStoreUrlIconSvg from '@app/imageAssets/Overview/appStoresIcon.svg';\nimport applePayIconSvg from '@app/imageAssets/Overview/applePayIcon.svg';\nimport deepLinkingIconSvg from '@app/imageAssets/Overview/deepLinkingIcon.svg';\nimport expertMoneyGradientSvg from '@app/imageAssets/Overview/expertMoneyGradient.svg';\nimport fairPlayIconSvg from '@app/imageAssets/Overview/fairPlayIcon.svg';\nimport fixItIconSvg from '@app/imageAssets/Overview/fixItIcon.svg';\nimport gameBuildIIconSvg from '@app/imageAssets/Overview/gameBuildIcon.svg';\nimport hundredDAUIconSvg from '@app/imageAssets/Overview/hundredDAU.svg';\nimport inAppPurchaseIconSvg from '@app/imageAssets/Overview/inAppPurchaseIcon.svg';\nimport inGameItemsIconSvg from '@app/imageAssets/Overview/inGameItems.svg';\nimport playerDataIconSvg from '@app/imageAssets/Overview/playerData.svg';\nimport prizeEnablementIconSvg from '@app/imageAssets/Overview/prizeEnablementIcon.svg';\nimport pushNotificationIconSvg from '@app/imageAssets/Overview/pushNotificationIcon.svg';\nimport singleSignOnIconSvg from '@app/imageAssets/Overview/ssoIcon.svg';\nimport themeIconSvg from '@app/imageAssets/Overview/themeIcon.svg';\nimport tournamentIconSvg from '@app/imageAssets/Overview/tournamentIcon.svg';\nimport UploadSdkIconSvg from '@app/imageAssets/Overview/uploadSdkIcon.svg';\n\nexport const tournamentIcon: JSX.Element = (\n \n);\n\nexport const inAppPurchaseIcon: JSX.Element = (\n \n);\n\nexport const gameBuildIcon: JSX.Element = (\n \n);\n\nexport const appStoreUrlIcon: JSX.Element = (\n \n);\nexport const themeIcon: JSX.Element = (\n \n);\n\nexport const pushNotificationIcon: JSX.Element = (\n \n);\nexport const applePayIcon: JSX.Element = (\n \n);\n\nexport const deepLinkingIcon: JSX.Element = (\n \n);\n\nexport const singleSignOnIcon: JSX.Element = (\n \n);\n\nexport const prizeEnablementIcon: JSX.Element = (\n \n);\n\nexport const fixItIcon: JSX.Element = (\n \n);\n\nexport const UploadSdkIcon: JSX.Element = (\n \n);\n\nexport const fairPlayIcon: JSX.Element = (\n \n);\n\nexport const hundredDAUIcon: JSX.Element = (\n \n);\n\nexport const expertMoneyGradient: JSX.Element = (\n \n);\n\nexport const playerDataIcon: JSX.Element = (\n \n);\n\nexport const inGameItemsIcon: JSX.Element = (\n \n);\n","export enum NEXT_STEP_FIX_APPLE_PAY_COPY {\n TITLE = 'Suggested action: fix Apple Pay',\n DESCRIPTION = 'Our system has alerted us that there is an issue with Apple Pay in your game. Please take a look and address the issue.',\n BUTTON_TEXT = 'Fix Apple Pay',\n}\n\nexport enum NEXT_STEP_FIX_PUSH_NOTIFICATION_COPY {\n TITLE = 'Suggested action: fix push notifications',\n DESCRIPTION = 'Our system has alerted us that your push notification certificate has expired. Please take a look and address the issue.',\n BUTTON_TEXT = 'Fix push notifications',\n}\n\nexport enum NEXT_STEP_UPLOAD_SDK_COPY {\n TITLE = 'Suggested action: update your SDK',\n DESCRIPTION = 'We’ve just released a brand new SDK! Download and integrate it into your game now to access our newest features and tech improvements.',\n BUTTON_TEXT = 'Update SDK',\n}\n\nexport enum NEXT_STEP_TOURNAMENT_COPY {\n TITLE = 'Next step: tournaments',\n DESCRIPTION = 'Having fun new ways to compete can increase player engagement. With this tool you can create custom game modes, implement dynamic difficulty scaling and run special events.',\n BUTTON_TEXT = 'Set up tournaments',\n}\n\nexport enum NEXT_STEP_IN_APP_PURCHASE_COPY {\n TITLE = 'Next step: in-app purchases (IAP)',\n DESCRIPTION = 'Add your package IDs here to enable in-app purchasing in your game.',\n BUTTON_TEXT = 'Set up IAP',\n}\n\nexport enum NEXT_STEP_GAME_BUILDS_COPY {\n TITLE = 'Next step: game builds',\n DESCRIPTION = 'It’s time for players to access your game! Upload your game build to be enabled in our production environment and get all the latest updates. Return here anytime to release your new builds.',\n BUTTON_TEXT = 'Upload a build',\n}\n\nexport enum NEXT_STEP_APP_STORE_URL_COPY {\n TITLE = 'Next step: Publish to Skillz Games',\n DESCRIPTION = 'After submitting your game to the app stores, provide us with a tagline and store URL(s) so we can list your game on Skillz Games and share your app with our millions of players!',\n BUTTON_TEXT = 'Set up page listing',\n}\n\nexport enum NEXT_STEP_THEME_COPY {\n TITLE = 'Next step: custom theme',\n DESCRIPTION = 'Customize the look and feel of the Skillz UI to match your game and create a seamless player experience.',\n BUTTON_TEXT = 'Customize theme',\n}\n\nexport enum NEXT_STEP_PUSH_NOTIFICATION_COPY {\n TITLE = 'Next step: push notifications',\n DESCRIPTION = 'It’s no secret that enabling push notifications boosts user engagement! Turn on this feature and get your players coming back for more.',\n BUTTON_TEXT = 'Enable notifications',\n}\n\nexport enum NEXT_STEP_APPLE_PAY_COPY {\n TITLE = 'Next step: Apple Pay',\n DESCRIPTION = 'When available, 30% of depositing players use Apple Pay. Activate this feature to enable your users to make seamless secure purchases on their iOS devices.',\n BUTTON_TEXT = 'Activate Apple Pay',\n}\n\nexport enum NEXT_STEP_DEEP_LINKING_COPY {\n TITLE = 'Next step: deep linking',\n DESCRIPTION = '\"Deep links\" are used to send players directly to a specific screen in your game from a link in an email or push notification. Verify it’s working properly in your game here.',\n BUTTON_TEXT = 'Verify deep linking',\n}\n\nexport enum NEXT_STEP_SINGLE_SIGN_ON_COPY {\n TITLE = 'Next step: single sign on (SSO)',\n DESCRIPTION = 'Did you know that 17% of paying Skillz players play multiple Skillz games? SSO recognizes existing players, letting them log in without having to enter their username or password. ',\n BUTTON_TEXT = 'Set up SSO',\n}\n\nexport enum NEXT_STEP_HUNDRED_DAU {\n TITLE = 'Next step: Achieve 100 DAU',\n DESCRIPTION = 'Getting to 100 daily active users is typically the first sign of a successful game and a hard requirement to become prize enablement. Apply for the Accelerate program to help boost traffic to your game.',\n BUTTON_TEXT = 'Accelerate program',\n}\n\nexport enum NEXT_STEP_SEVENTY_FIVE_DAU {\n TITLE = 'Next step: Achieve 75 DAU',\n DESCRIPTION = 'Getting to 75 daily active users is the first step towards success and a hard requirement for prize enablement. Apply for our Accelerate program to help boost traffic to your game.',\n BUTTON_TEXT = 'Accelerate program',\n}\n\nexport enum NEXT_STEP_FAIR_PLAY {\n TITLE = 'Next step: Ensure Fair Play',\n DESCRIPTION = 'At the heart of any competition is that each participant is offered an equal opportunity to win. Skillz automatically runs our patented algorithm on each game to ensure fairness. Lets focus on getting your game past this checkpoint.',\n BUTTON_TEXT = 'Learn More',\n}\n\nexport enum NEXT_STEP_PRIZE_ENABLEMENT {\n TITLE = 'Next step: prize enablement',\n DESCRIPTION = 'Incredible work - your game is off to a great start! Reach out to our developer success team today to request prize enablement and start monetizing your hard work. ',\n BUTTON_TEXT = 'Turn on prizes',\n}\n\nexport enum NEXT_STEP_ANALYTICS_COPY {\n TITLE = 'Suggested action: Review your game’s performance',\n DESCRIPTION = 'Your game is looking and feeling great! Check out the Analytics dashboard to monitor the performance of your game.',\n BUTTON_TEXT = 'View Analytics',\n}\n\nexport enum NEXT_STEP_MONETIZATION_CHANNEL {\n TITLE = 'Next step: Understanding Monetization',\n DESCRIPTION = 'Now that your game is live, learn more about how monetization works on Skillz and manage your preferences via this step.',\n BUTTON_TEXT = 'Learn more',\n}\n\nexport enum NEXT_STEP_PLAYER_DATA {\n TITLE = 'Next step: Player Data',\n DESCRIPTION = 'Create unique gameplay experiences for each of your players with customizable Player Data storage. From statistics to progression systems and more - unlock your creativity with these APIs!',\n BUTTON_TEXT = 'Check it out',\n}\n\nexport enum NEXT_STEP_IN_GAME_ITEMS {\n TITLE = 'Next step: In Game Items',\n DESCRIPTION = 'Create unique gameplay experiences for each of your players with customizable in game items. From virtual goods to progression systems and more - unlock your creativity with these APIs!',\n BUTTON_TEXT = 'Check it out',\n}\n","import * as React from 'react';\n\nimport { INextStepConstantProps } from '@appGameHome/common/interfaces';\n\nimport * as Icons from '../components/nextStepIcons';\nimport * as Copy from './nextStepCopyConstants';\n\nfunction renderDescription(description: string): JSX.Element {\n return

    {description}

    ;\n}\n\n// action required game state steps\nexport const stepFixApplePay: INextStepConstantProps = {\n icon: Icons.fixItIcon,\n title: Copy.NEXT_STEP_FIX_APPLE_PAY_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_FIX_APPLE_PAY_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-fix-apple-pay',\n buttonText: Copy.NEXT_STEP_FIX_APPLE_PAY_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepFixPushNotification: INextStepConstantProps = {\n icon: Icons.fixItIcon,\n title: Copy.NEXT_STEP_FIX_PUSH_NOTIFICATION_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_FIX_PUSH_NOTIFICATION_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-fix-push-notification',\n buttonText: Copy.NEXT_STEP_FIX_PUSH_NOTIFICATION_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepUploadSdk: INextStepConstantProps = {\n icon: Icons.UploadSdkIcon,\n title: Copy.NEXT_STEP_UPLOAD_SDK_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_UPLOAD_SDK_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-upload-sdk',\n buttonText: Copy.NEXT_STEP_UPLOAD_SDK_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\n// game state steps\nexport const stepTournament: INextStepConstantProps = {\n icon: Icons.tournamentIcon,\n title: Copy.NEXT_STEP_TOURNAMENT_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_TOURNAMENT_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-tournament',\n buttonText: Copy.NEXT_STEP_TOURNAMENT_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepInAppPurchase: INextStepConstantProps = {\n icon: Icons.inAppPurchaseIcon,\n title: Copy.NEXT_STEP_IN_APP_PURCHASE_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_IN_APP_PURCHASE_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-in-app-purchase',\n buttonText: Copy.NEXT_STEP_IN_APP_PURCHASE_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepGameBuilds: INextStepConstantProps = {\n icon: Icons.gameBuildIcon,\n title: Copy.NEXT_STEP_GAME_BUILDS_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_GAME_BUILDS_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-game-builds',\n buttonText: Copy.NEXT_STEP_GAME_BUILDS_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepAppStoreUrl: INextStepConstantProps = {\n icon: Icons.appStoreUrlIcon,\n title: Copy.NEXT_STEP_APP_STORE_URL_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_APP_STORE_URL_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-app-store-url',\n buttonText: Copy.NEXT_STEP_APP_STORE_URL_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepTheme: INextStepConstantProps = {\n icon: Icons.themeIcon,\n title: Copy.NEXT_STEP_THEME_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_THEME_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-theme',\n buttonText: Copy.NEXT_STEP_THEME_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepPushNotification: INextStepConstantProps = {\n icon: Icons.pushNotificationIcon,\n title: Copy.NEXT_STEP_PUSH_NOTIFICATION_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_PUSH_NOTIFICATION_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-push-notification',\n buttonText: Copy.NEXT_STEP_PUSH_NOTIFICATION_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepApplePay: INextStepConstantProps = {\n icon: Icons.applePayIcon,\n title: Copy.NEXT_STEP_APPLE_PAY_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_APPLE_PAY_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-apple-pay',\n buttonText: Copy.NEXT_STEP_APPLE_PAY_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepDeepLinking: INextStepConstantProps = {\n icon: Icons.deepLinkingIcon,\n title: Copy.NEXT_STEP_DEEP_LINKING_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_DEEP_LINKING_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-deep-linking',\n buttonText: Copy.NEXT_STEP_DEEP_LINKING_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepSingleSignOn: INextStepConstantProps = {\n icon: Icons.singleSignOnIcon,\n title: Copy.NEXT_STEP_SINGLE_SIGN_ON_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_SINGLE_SIGN_ON_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-single-sign-on',\n buttonText: Copy.NEXT_STEP_SINGLE_SIGN_ON_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\n// after game state steps\nexport const stepHundredDAU: INextStepConstantProps = {\n icon: Icons.hundredDAUIcon,\n title: Copy.NEXT_STEP_HUNDRED_DAU.TITLE,\n description: renderDescription(Copy.NEXT_STEP_HUNDRED_DAU.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-hundred-dau',\n buttonText: Copy.NEXT_STEP_HUNDRED_DAU.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepSeventyFiveDAU: INextStepConstantProps = {\n icon: Icons.hundredDAUIcon,\n title: Copy.NEXT_STEP_SEVENTY_FIVE_DAU.TITLE,\n description: renderDescription(Copy.NEXT_STEP_SEVENTY_FIVE_DAU.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-seventy-five-dau',\n buttonText: Copy.NEXT_STEP_SEVENTY_FIVE_DAU.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepFairPlay: INextStepConstantProps = {\n icon: Icons.fairPlayIcon,\n title: Copy.NEXT_STEP_FAIR_PLAY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_FAIR_PLAY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-fair-play',\n buttonText: Copy.NEXT_STEP_FAIR_PLAY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\n// prize enablement\nexport const stepPrizeEnablement: INextStepConstantProps = {\n icon: Icons.prizeEnablementIcon,\n title: Copy.NEXT_STEP_PRIZE_ENABLEMENT.TITLE,\n description: renderDescription(Copy.NEXT_STEP_PRIZE_ENABLEMENT.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-prize-enablement',\n buttonText: Copy.NEXT_STEP_PRIZE_ENABLEMENT.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepMonetizationChannel: INextStepConstantProps = {\n icon: Icons.expertMoneyGradient,\n title: Copy.NEXT_STEP_MONETIZATION_CHANNEL.TITLE,\n description: renderDescription(Copy.NEXT_STEP_MONETIZATION_CHANNEL.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-monetization-channel',\n buttonText: Copy.NEXT_STEP_MONETIZATION_CHANNEL.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepAnalytics: INextStepConstantProps = {\n icon: Icons.hundredDAUIcon,\n title: Copy.NEXT_STEP_ANALYTICS_COPY.TITLE,\n description: renderDescription(Copy.NEXT_STEP_ANALYTICS_COPY.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-analytics',\n buttonText: Copy.NEXT_STEP_ANALYTICS_COPY.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepPlayerData: INextStepConstantProps = {\n icon: Icons.playerDataIcon,\n title: Copy.NEXT_STEP_PLAYER_DATA.TITLE,\n description: renderDescription(Copy.NEXT_STEP_PLAYER_DATA.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-player-data',\n buttonText: Copy.NEXT_STEP_PLAYER_DATA.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n\nexport const stepInGameItems: INextStepConstantProps = {\n icon: Icons.inGameItemsIcon,\n title: Copy.NEXT_STEP_IN_GAME_ITEMS.TITLE,\n description: renderDescription(Copy.NEXT_STEP_IN_GAME_ITEMS.DESCRIPTION),\n buttonProps: {\n id: 'overview-next-step__button-in-game-items',\n buttonText: Copy.NEXT_STEP_IN_GAME_ITEMS.BUTTON_TEXT,\n buttonType: 'primary',\n },\n};\n","import { GAME_STATES } from '@app/modules/GameManagement/common/constants';\nimport { ITabTooltip } from '@appGameHome/common/interfaces';\n\ntype TGameStateWithUrl =\n | GAME_STATES.APPLE_PAY\n | GAME_STATES.DEEP_LINKING\n | GAME_STATES.DISTRIBUTION\n | GAME_STATES.PUSH_NOTIFICATIONS\n | GAME_STATES.SDK_THEME\n | GAME_STATES.SINGLE_SIGN_ON\n | GAME_STATES.TOURNAMENTS\n | GAME_STATES.UPLOAD_BINARY\n | GAME_STATES.VIRTUAL_CURRENCY\n | GAME_STATES.THIRD_PARTY_ADS\n | GAME_STATES.PLAYER_DATA\n | GAME_STATES.IN_GAME_ITEMS\n | GAME_STATES.SKILLZ_SDK;\n\nexport type IGameStatePageUrl = { [key in TGameStateWithUrl]: string };\n\nexport const GAME_HOME_TAB_BASE_URLS = [\n 'overview',\n 'optimize',\n 'game_builds',\n 'progression',\n 'seasons',\n 'deployments',\n];\n\nexport const GAME_HOME_PAGE_URL: IGameStatePageUrl = {\n [GAME_STATES.APPLE_PAY]: 'apple_pay',\n [GAME_STATES.DEEP_LINKING]: 'deep_linking',\n [GAME_STATES.DISTRIBUTION]: 'distribution',\n [GAME_STATES.PUSH_NOTIFICATIONS]: 'push_notifications',\n [GAME_STATES.SDK_THEME]: 'theme',\n [GAME_STATES.SINGLE_SIGN_ON]: 'single_sign_on',\n [GAME_STATES.TOURNAMENTS]: 'tournaments',\n [GAME_STATES.UPLOAD_BINARY]: 'game_builds',\n [GAME_STATES.VIRTUAL_CURRENCY]: 'manage_in_app_purchase_package',\n [GAME_STATES.THIRD_PARTY_ADS]: 'monetization',\n [GAME_STATES.PLAYER_DATA]: 'player_data',\n [GAME_STATES.IN_GAME_ITEMS]: 'in_game_items',\n // placeholder for Update Sdk\n [GAME_STATES.SKILLZ_SDK]: '',\n};\n\nexport type TGameHomePageUrlKey = keyof typeof GAME_HOME_PAGE_URL;\n\nexport enum TAB_PATH_ENUM {\n OVERVIEW = 'overview',\n OPTIMIZE = 'optimize',\n GAME_BUILDS = 'game_builds',\n PLAYER_DATA = 'player_data',\n IN_GAME_ITEMS = 'in_game_items',\n PROGRESSION = 'progression',\n SEASONS = 'seasons',\n DEPLOYMENTS = 'deployments',\n}\n\ntype TTabTooltip = { [key in TAB_PATH_ENUM]?: ITabTooltip };\n\nexport const TAB_TOOLTIPS: TTabTooltip = {\n [TAB_PATH_ENUM.PLAYER_DATA]: {\n tab: TAB_PATH_ENUM.PLAYER_DATA,\n cookieName: 'player-data-tooltip-cookie',\n copy: 'New feature! Create custom player data here to engage with your players.',\n expirationDate: '7/31/2021',\n launchDate: '4/22/2021',\n },\n [TAB_PATH_ENUM.IN_GAME_ITEMS]: {\n tab: TAB_PATH_ENUM.IN_GAME_ITEMS,\n cookieName: 'in-game-items-tooltip',\n copy: 'New feature! Create custom in game items here to engage with your players.',\n expirationDate: '8/31/2021',\n launchDate: '7/14/2021',\n },\n [TAB_PATH_ENUM.PROGRESSION]: {\n tab: TAB_PATH_ENUM.PROGRESSION,\n cookieName: 'in-game-items-tooltip',\n copy: 'New feature! Create custom in game items here to engage with your players.',\n expirationDate: '8/31/2021',\n launchDate: '7/14/2021',\n },\n};\n","import { GAME_STATES } from '@app/modules/GameManagement/common/constants';\n\nimport { TGameStateMapNextStepConstant } from '../interfaces';\nimport {\n stepApplePay,\n stepAppStoreUrl,\n stepDeepLinking,\n stepFixApplePay,\n stepFixPushNotification,\n stepGameBuilds,\n stepInAppPurchase,\n stepInGameItems,\n stepPlayerData,\n stepPushNotification,\n stepSingleSignOn,\n stepTheme,\n stepTournament,\n stepUploadSdk,\n} from './stepConstants';\n\nexport const OVERVIEW_GAME_STATE_ORDER: GAME_STATES[] = [\n GAME_STATES.TOURNAMENTS,\n GAME_STATES.VIRTUAL_CURRENCY,\n GAME_STATES.UPLOAD_BINARY,\n GAME_STATES.DISTRIBUTION,\n GAME_STATES.SDK_THEME,\n GAME_STATES.PUSH_NOTIFICATIONS,\n GAME_STATES.APPLE_PAY,\n GAME_STATES.DEEP_LINKING,\n GAME_STATES.SINGLE_SIGN_ON,\n];\n\nexport const OVERVIEW_ACTION_REQUIRED_ORDER: GAME_STATES[] = [\n GAME_STATES.APPLE_PAY,\n GAME_STATES.PUSH_NOTIFICATIONS,\n // placeholder for Update Sdk\n GAME_STATES.SKILLZ_SDK,\n];\n\ninterface IGameStateWithFeatureFlag {\n featureFlag: string;\n gameState: GAME_STATES;\n}\n\nexport const POST_PERFORMANCE_GAME_STATE_ORDER: IGameStateWithFeatureFlag[] = [\n { featureFlag: 'gameProgressionPlayerSchema', gameState: GAME_STATES.PLAYER_DATA },\n { featureFlag: 'progressionPr3iIgiCaseStudy', gameState: GAME_STATES.IN_GAME_ITEMS },\n];\n\nexport type TNextStepActionRequiredSteps =\n | GAME_STATES.APPLE_PAY\n | GAME_STATES.PUSH_NOTIFICATIONS\n | GAME_STATES.SKILLZ_SDK;\ntype TActionRequiredStepsKey = Required<\n Pick\n>;\n\n// this should match fields in OVERVIEW_ACTION_REQUIRED_ORDER\nexport const NEXT_STEP_ACTION_REQUIRED_CONSTANTS: TActionRequiredStepsKey = {\n [GAME_STATES.APPLE_PAY]: stepFixApplePay,\n [GAME_STATES.PUSH_NOTIFICATIONS]: stepFixPushNotification,\n [GAME_STATES.SKILLZ_SDK]: stepUploadSdk,\n};\n\nexport type TNextStepOptimizeSteps =\n | GAME_STATES.TOURNAMENTS\n | GAME_STATES.VIRTUAL_CURRENCY\n | GAME_STATES.UPLOAD_BINARY\n | GAME_STATES.DISTRIBUTION\n | GAME_STATES.SDK_THEME\n | GAME_STATES.PUSH_NOTIFICATIONS\n | GAME_STATES.APPLE_PAY\n | GAME_STATES.DEEP_LINKING\n | GAME_STATES.SINGLE_SIGN_ON;\ntype TOptimizeStepsKey = Required>;\n\n// this should match fields in OVERVIEW_GAME_STATE_ORDER with addition of GAME_INFORMATION map to AppStoreUrl\nexport const NEXT_STEP_GAME_STATE_CONSTANTS: TOptimizeStepsKey = {\n [GAME_STATES.TOURNAMENTS]: stepTournament,\n [GAME_STATES.VIRTUAL_CURRENCY]: stepInAppPurchase,\n [GAME_STATES.UPLOAD_BINARY]: stepGameBuilds,\n [GAME_STATES.DISTRIBUTION]: stepAppStoreUrl,\n [GAME_STATES.SDK_THEME]: stepTheme,\n [GAME_STATES.PUSH_NOTIFICATIONS]: stepPushNotification,\n [GAME_STATES.APPLE_PAY]: stepApplePay,\n [GAME_STATES.DEEP_LINKING]: stepDeepLinking,\n [GAME_STATES.SINGLE_SIGN_ON]: stepSingleSignOn,\n};\n\nexport type TNextStepPostPerformanceSteps = GAME_STATES.PLAYER_DATA | GAME_STATES.IN_GAME_ITEMS;\n\ntype TPostPerformanceStepsKey = Required<\n Pick\n>;\n\n// this should match fields in OVERVIEW_GAME_STATE_ORDER with addition of GAME_INFORMATION map to AppStoreUrl\nexport const NEXT_STEP_POST_PERFORMANCE_CONSTANTS: TPostPerformanceStepsKey = {\n [GAME_STATES.PLAYER_DATA]: stepPlayerData,\n [GAME_STATES.IN_GAME_ITEMS]: stepInGameItems,\n};\n","import { IFileChunkStartEnd } from '@appGameHome/common/interfaces';\n\nexport const FILE_CHUNK_SIZE: number = 10 * 1024 * 1024; // 10MB\n\nexport function calculateNumberOfChunks(fileSize: number, fileChunkSize: number): number {\n return Math.ceil(fileSize / fileChunkSize);\n}\n\nexport function fileNameCleanUp(filename: string): string {\n return filename.replace(/[^\\w._\\-]/g, '');\n}\n\n/** returns the array of the start and end value for file chunk\n * @params { partNumber } number - the part number of the chunk\n * @params { numberOfChunks } number - number of chunks in the file upload\n * @params { fileChunkSize } number - the standard chunk size\n * @returns { IFileChunkStartEnd } - returns the object of the start and end value for file chunk\n */\nexport function calculateFileChunkStartEnd(\n partNumber: number,\n numberOfChunks: number,\n fileChunkSize: number\n): IFileChunkStartEnd {\n // eslint-disable-next-line id-blacklist\n let startEnd: IFileChunkStartEnd = { start: (partNumber - 1) * fileChunkSize, end: undefined };\n\n if (partNumber < numberOfChunks) {\n startEnd.end = partNumber * fileChunkSize;\n }\n\n return startEnd;\n}\n","import { STATUS } from '@app/modules/GameManagement/common/constants';\nimport { TGameState } from '@app/modules/GameManagement/common/interfaces';\nimport { IPrizeEnablementRequest } from '@appOverview/interfaces';\n\nexport const shouldRenderPrizeEnablementSuccessModal = (\n prizeEnablementRequest: IPrizeEnablementRequest | null,\n gameState: TGameState\n): boolean => {\n return (\n !!prizeEnablementRequest &&\n prizeEnablementRequest.status === 'approved' &&\n gameState.hasSeenPrizeEnablementSuccess !== STATUS.COMPLETED\n );\n};\n","import axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { IErrors } from '@app/common/interfaces';\nimport {\n IResponseProgressionRoom,\n IProgressionRoomResponse,\n IResponseProgressionRoomVersionBinaryMapping,\n IResponseProgressionRoomVersion,\n IResponseProgressionRoomVersionLocale,\n} from '@appEntryPoints/common/interfaces';\nimport { formatLocalesBodyImagesConditions } from '@appGameProgression/modules/EntryPoints/common/helpers';\n\nexport interface IFetchProgressionRoomBaseProps {\n gameId: string | number;\n}\n\ninterface IFetchProgressionRoomWithEnv extends IFetchProgressionRoomBaseProps {\n env: ENVIRONMENT;\n}\n\ninterface IDeleteProgressionRoomWithEnv extends IFetchProgressionRoomBaseProps {\n env: ENVIRONMENT;\n roomId: string;\n}\n\ntype TResponseProgressionRooms = AxiosResponse>;\n\ninterface IFetchProgressionRoomWithId extends IFetchProgressionRoomBaseProps {\n roomId: string;\n roomIdentifier: string;\n}\n\ninterface ICreateProgressionRoom extends IFetchProgressionRoomBaseProps {\n name: string;\n}\n\ninterface IUpdateProgressionRoom {\n gameId: string | number;\n name: string;\n productionRoomId: string;\n sandboxRoomId: string;\n}\n\ninterface IFetchProgressionRoomVersionLocalesWithEnv extends IFetchProgressionRoomWithEnv {\n roomId: string;\n versionId: string;\n}\n\ntype TResponseVersionLocale = AxiosResponse<\n IProgressionRoomResponse\n>;\n\ntype TResponseProgressionRoomMappings = AxiosResponse<\n IProgressionRoomResponse\n>;\n\ninterface IFetchProgressionRoomVersionsWithEnv extends IFetchProgressionRoomWithEnv {\n roomId: string;\n roomIdentifier: string;\n limit?: number;\n}\n\ninterface IActivateProgressionRoom extends IFetchProgressionRoomWithEnv {\n roomId: string;\n}\n\nexport const fetchProgressionRoomsRequest = async ({\n gameId,\n env,\n}: IFetchProgressionRoomWithEnv) => {\n return axios\n .get(`/api/v1/${env}/games/${gameId}/progression_rooms`)\n .then(camelize)\n .then((response: TResponseProgressionRooms) => {\n return { ...response.data, env };\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const fetchProgressionRoomMappingsRequest = async ({\n gameId,\n roomId,\n roomIdentifier,\n}: IFetchProgressionRoomWithId) => {\n const env = ENVIRONMENT.PRODUCTION;\n\n return axios\n .get(`/api/v1/${env}/games/${gameId}/progression_rooms/${roomId}/mappings`)\n .then(camelize)\n .then((response: TResponseProgressionRoomMappings) => {\n return { ...response.data, env, currentRoomIdentifier: roomIdentifier };\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const createProgressionRoomRequest = ({ gameId, name }: ICreateProgressionRoom) => {\n return axios\n .post(`/api/v1/games/${gameId}/progression_rooms`, snakeCaseConverter({ name }))\n .then(camelize)\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const editProgressionRoomRequest = ({\n gameId,\n name,\n productionRoomId,\n sandboxRoomId,\n}: IUpdateProgressionRoom) => {\n return axios\n .patch(\n `/api/v1/games/${gameId}/progression_rooms`,\n snakeCaseConverter({ name, productionRoomId, sandboxRoomId })\n )\n .then(camelize)\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const fetchProgressionRoomVersionsRequest = async ({\n gameId,\n env,\n roomId,\n roomIdentifier,\n limit = 20,\n}: IFetchProgressionRoomVersionsWithEnv) => {\n // hard coding sort since ordering since progressionRooms.env.versionRooms stores array of id in the sorted order\n const sort = '-created_at';\n\n return axios\n .get(`/api/v1/${env}/games/${gameId}/progression_rooms/${roomId}/versions`, {\n params: { limit: limit.toString(), sort },\n })\n .then(camelize)\n .then((response: AxiosResponse>) => {\n const formattedData = response.data.items.map((version) => {\n return { ...version, roomIdentifier };\n });\n\n return {\n items: formattedData,\n totalCount: response.data.totalCount,\n env,\n currentRoomIdentifier: roomIdentifier,\n };\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const fetchProgressionRoomVersionLocalesRequest = async ({\n env,\n gameId,\n roomId,\n versionId,\n}: IFetchProgressionRoomVersionLocalesWithEnv) => {\n return axios\n .get(`/api/v1/${env}/games/${gameId}/progression_rooms/${roomId}/versions/${versionId}/locales`)\n .then(camelize)\n .then((response: TResponseVersionLocale) => {\n const { totalCount, items } = response.data;\n const formattedItems = formatLocalesBodyImagesConditions(items);\n\n return {\n totalCount,\n items: formattedItems,\n env,\n currentVersionId: versionId,\n };\n })\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const activateProgressionRoomRequest = ({\n gameId,\n roomId,\n env,\n}: IActivateProgressionRoom): Promise> => {\n return axios\n .patch(\n `/api/v1/${env}/games/${gameId}/progression_rooms/activate`,\n snakeCaseConverter({ roomId })\n )\n .then(camelize)\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const deactivateProgressionRoomRequest = ({\n gameId,\n roomId,\n env,\n}: IActivateProgressionRoom): Promise> => {\n return axios\n .patch(`/api/v1/${env}/games/${gameId}/progression_rooms/${roomId}/deactivate`)\n .then(camelize)\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n\nexport const deleteProgressionRoomRequest = async ({\n env,\n gameId,\n roomId,\n}: IDeleteProgressionRoomWithEnv) => {\n return axios\n .delete(`/api/v1/${env}/games/${gameId}/progression_rooms/${roomId}`)\n .then(camelize)\n .catch((e) => {\n const error = e as AxiosError;\n\n throw new Error(error.response?.data.errors);\n });\n};\n","import { IFeature } from '@app/common/interfaces';\nimport { GAME_STATES, STATUS } from '@app/modules/GameManagement/common/constants';\nimport { IGamePerformanceStatus, TGameState } from '@app/modules/GameManagement/common/interfaces';\nimport {\n OVERVIEW_ACTION_REQUIRED_ORDER,\n OVERVIEW_GAME_STATE_ORDER,\n POST_PERFORMANCE_GAME_STATE_ORDER,\n} from '@appGameHome/common/constants';\nimport { TNextStepGameState } from '@appGameHome/common/interfaces';\n\nimport { isPrizeEnablementRevamp } from '../../modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/helpers';\n\n// functions to find step for next step\nexport function nextStepSelectorActionRequired(\n gameState: TGameState,\n isLatestSdk: boolean\n): TNextStepGameState {\n for (const tempGameState of OVERVIEW_ACTION_REQUIRED_ORDER) {\n if (tempGameState === GAME_STATES.SKILLZ_SDK) {\n let isGameBuildStepComplete = gameState[GAME_STATES.UPLOAD_BINARY] === STATUS.COMPLETED;\n if (isGameBuildStepComplete && !isLatestSdk) {\n return tempGameState;\n }\n }\n\n if (gameState[tempGameState] === STATUS.ACTION_REQUIRED) {\n return tempGameState;\n }\n }\n\n return null;\n}\n\nexport function nextStepSelectorGameState(gameState: TGameState): TNextStepGameState {\n for (const tempGameState of OVERVIEW_GAME_STATE_ORDER) {\n if (\n gameState[tempGameState] === STATUS.NOT_STARTED ||\n gameState[tempGameState] === STATUS.IN_PROGRESS\n ) {\n return tempGameState;\n }\n }\n\n return null;\n}\n\nexport const postPerformanceGameStateSelector = (\n isPerformanceRequirementAchieved: boolean,\n gameState: TGameState,\n feature: IFeature\n): TNextStepGameState => {\n if (!isPerformanceRequirementAchieved) return null;\n\n for (const gameStateWithFeature of POST_PERFORMANCE_GAME_STATE_ORDER) {\n if (\n (gameState[gameStateWithFeature.gameState] === STATUS.NOT_STARTED ||\n gameState[gameStateWithFeature.gameState] === STATUS.IN_PROGRESS) &&\n feature[gameStateWithFeature.featureFlag]\n ) {\n return gameStateWithFeature.gameState;\n }\n }\n\n return null;\n};\n\nexport function isGameFair(\n gamePerformanceStatus: IGamePerformanceStatus | null,\n cashLive: boolean | null\n): boolean {\n return !cashLive && !!gamePerformanceStatus && gamePerformanceStatus.isFair !== true;\n}\n\n// older prize enablement DAU threshold was 100. It is changed to 75 now.\n// this function returns true if a cash live game has less DAU than this threshold\nexport function hasFewerDAU(\n gamePerformanceStatus: IGamePerformanceStatus | null,\n cashLive: boolean | null\n): boolean {\n if (isPrizeEnablementRevamp()) {\n return (\n !cashLive &&\n !!gamePerformanceStatus &&\n (gamePerformanceStatus.skillzDau7DayAverage === null ||\n gamePerformanceStatus.skillzDau7DayAverage < 75)\n );\n }\n\n return (\n !cashLive &&\n !!gamePerformanceStatus &&\n (gamePerformanceStatus.skillzDau7DayAverage === null ||\n gamePerformanceStatus.skillzDau7DayAverage < 100)\n );\n}\n","import { VIRTUAL_CURRENCY_OPTIONS } from '@app/common/constants';\nimport { IFeature, IGameInfo } from '@app/common/interfaces';\nimport { IGamePerformanceStatus, TGameState } from '@app/modules/GameManagement/common/interfaces';\nimport {\n hasFewerDAU,\n isGameFair,\n nextStepSelectorActionRequired,\n nextStepSelectorGameState,\n postPerformanceGameStateSelector,\n} from '@appGameHome/common/helpers/nextStepGameStateHelpers';\nimport { determineNextStepUrl } from '@appGameHome/common/helpers/nextStepUrlHelpers';\n\nimport { isPrizeEnablementRevamp } from '../../modules/Overview/modules/PrizeEnablement/modules/PrizeEnablementWidget/helpers';\nimport {\n NEXT_STEP_ACTION_REQUIRED_CONSTANTS,\n NEXT_STEP_GAME_STATE_CONSTANTS,\n NEXT_STEP_POST_PERFORMANCE_CONSTANTS,\n stepFairPlay,\n stepHundredDAU,\n stepAnalytics,\n stepPrizeEnablement,\n TNextStepActionRequiredSteps,\n TNextStepOptimizeSteps,\n TNextStepPostPerformanceSteps,\n stepSeventyFiveDAU,\n} from '../constants';\nimport { INextStepConstantProps, INextStepRenderProps, TNextStepGameState } from '../interfaces';\n\nexport function determineNextStep(\n gameInfo: IGameInfo,\n isActionRequired: TNextStepGameState,\n isNextGameState: TNextStepGameState,\n gamePerformanceStatus: IGamePerformanceStatus | null,\n isPostPerformanceGameState: TNextStepGameState\n): INextStepConstantProps {\n let isCashLive = !!gameInfo.cashLive;\n let isVcOnly = gameInfo.vcOnly === VIRTUAL_CURRENCY_OPTIONS.VIRTUAL_CURRENCY_ONLY;\n\n if (isActionRequired !== null && isActionRequired in NEXT_STEP_ACTION_REQUIRED_CONSTANTS) {\n return NEXT_STEP_ACTION_REQUIRED_CONSTANTS[isActionRequired as TNextStepActionRequiredSteps];\n }\n\n if (isNextGameState !== null && isNextGameState in NEXT_STEP_GAME_STATE_CONSTANTS) {\n return NEXT_STEP_GAME_STATE_CONSTANTS[isNextGameState as TNextStepOptimizeSteps];\n }\n\n if (gamePerformanceStatus === null || hasFewerDAU(gamePerformanceStatus, isCashLive)) {\n return isPrizeEnablementRevamp() ? stepSeventyFiveDAU : stepHundredDAU;\n }\n\n if (isGameFair(gamePerformanceStatus, isCashLive)) {\n return stepFairPlay;\n }\n\n if (\n isPostPerformanceGameState !== null &&\n isPostPerformanceGameState in NEXT_STEP_POST_PERFORMANCE_CONSTANTS\n ) {\n return NEXT_STEP_POST_PERFORMANCE_CONSTANTS[\n isPostPerformanceGameState as TNextStepPostPerformanceSteps\n ];\n }\n\n if (!isCashLive && !isVcOnly) {\n return stepPrizeEnablement;\n }\n\n return stepAnalytics;\n}\n\n// functions to determine what the next step props is\nexport function determineNextStepProps(\n gameState: TGameState,\n gameInfo: IGameInfo,\n gamePerformanceStatus: IGamePerformanceStatus | null,\n feature: IFeature\n): INextStepRenderProps {\n const isActionRequired: TNextStepGameState = nextStepSelectorActionRequired(\n gameState,\n gameInfo.latestSdk.status\n );\n\n const isNextGameState: TNextStepGameState = nextStepSelectorGameState(gameState);\n\n const shouldShowAnalytics: boolean =\n !!gameInfo.cashLive || hasFewerDAU(gamePerformanceStatus, gameInfo.cashLive);\n\n const shouldShowFairPlay: boolean =\n !!gameInfo.cashLive || isGameFair(gamePerformanceStatus, gameInfo.cashLive);\n\n const isPerformanceRequirementAchieved = !shouldShowAnalytics && !shouldShowFairPlay;\n\n const isPostPerformanceGameState: TNextStepGameState = postPerformanceGameStateSelector(\n isPerformanceRequirementAchieved,\n gameState,\n feature\n );\n\n const nextStep = determineNextStep(\n gameInfo,\n isActionRequired,\n isNextGameState,\n gamePerformanceStatus,\n isPostPerformanceGameState\n );\n\n const url = determineNextStepUrl(\n gameInfo.id,\n isActionRequired,\n isNextGameState,\n isPostPerformanceGameState\n );\n\n return { ...nextStep, url };\n}\n","import { GAME_STATES } from '@app/modules/GameManagement/common/constants';\nimport { GAME_HOME_PAGE_URL, TGameHomePageUrlKey } from '@appGameHome/common/constants';\nimport { TNextStepGameState } from '@appGameHome/common/interfaces';\n\n// function to find url for next step\nexport function getGameStatePageUrl(gameId: number, nextStepState: GAME_STATES): string {\n // placeholder for upload sdk\n if (nextStepState === GAME_STATES.SKILLZ_SDK) {\n return '/downloads';\n }\n\n let pageUrl: string = `/games/${gameId}/home`;\n const pageWithTab = [GAME_STATES.UPLOAD_BINARY];\n const progressionPages = [GAME_STATES.PLAYER_DATA, GAME_STATES.IN_GAME_ITEMS];\n\n const nonOptimizePages = pageWithTab.concat(progressionPages);\n\n if (!nonOptimizePages.includes(nextStepState)) {\n pageUrl += '/optimize';\n }\n\n if (progressionPages.includes(nextStepState)) {\n pageUrl += '/progression';\n }\n\n return pageUrl + `/${GAME_HOME_PAGE_URL[nextStepState as TGameHomePageUrlKey]}`;\n}\n\nexport function determineNextStepUrl(\n gameId: number,\n isActionRequired: TNextStepGameState,\n isNextGameState: TNextStepGameState,\n isPostPerformanceGameState: TNextStepGameState\n): string {\n if (isActionRequired) {\n return getGameStatePageUrl(gameId, isActionRequired);\n }\n\n if (isNextGameState) {\n return getGameStatePageUrl(gameId, isNextGameState);\n }\n\n if (isPostPerformanceGameState) {\n return getGameStatePageUrl(gameId, isPostPerformanceGameState);\n }\n\n return '';\n}\n","import { IAction } from '@app/common/interfaces';\n\nexport enum GAME_BUILDS_COUNT {\n RECEIVE_COUNT = 'gameBuildsCount/RECEIVE_COUNT'\n}\n\nexport function receiveGameBuildsCount(data: number): IAction {\n return { type: GAME_BUILDS_COUNT.RECEIVE_COUNT, data };\n}\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport {\n IAction,\n IActionOptionalData,\n IErrors,\n ISnackbarData,\n TAxiosPromise,\n TDispatch,\n TThunkAction,\n} from '@app/common/interfaces';\nimport axios, { AxiosError, AxiosResponse } from '@app/common/setup/axiosWithHeader';\nimport { TAwsUploadResponse } from '@appGameHome/common/interfaces';\n\nimport { GAME_BUILD_PROCESS_END_STATE } from '../constants';\nimport { IGameBuild, TGameBuildInitial } from '../interfaces';\n\ntype TActionGameBuildUpload = IAction | IActionOptionalData;\n\nexport enum GAME_BUILDS_UPLOAD {\n RECEIVE_NEW_GAME_BUILD = 'gameBuildsUpload/RECEIVE_NEW_GAME_BUILD',\n CLEAR_FINALIZE_GAME_BUILD = 'gameBuildsUpload/CLEAR_FINALIZE_GAME_BUILD',\n}\n\nexport function receiveNewGameBuild(data: IGameBuild): IAction {\n return { type: GAME_BUILDS_UPLOAD.RECEIVE_NEW_GAME_BUILD, data };\n}\n\nexport function clearFinalizeGameBuild(data: IGameBuild): IAction {\n return { type: GAME_BUILDS_UPLOAD.CLEAR_FINALIZE_GAME_BUILD, data };\n}\n\nexport const createGameBuild: TThunkAction = (\n gameId: number,\n gameBuildInfo: TGameBuildInitial\n): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return (\n axios\n .post(\n `/api/v1/games/${gameId}/game_binaries`,\n snakeCaseConverter({ gameBinary: gameBuildInfo })\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((response: AxiosResponse): TAxiosPromise => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(receiveNewGameBuild(camelize(response.data)));\n\n return response.data.id as unknown as TAxiosPromise;\n })\n .catch((error: AxiosError): never => {\n throw error.response ? error.response.data : error;\n })\n );\n };\n};\n\nexport function completeMultipartUpload(\n gameId: number,\n uploadResponse: TAwsUploadResponse[],\n gameBuild: IGameBuild\n): Promise {\n return axios\n .patch(\n `/api/v1/games/${gameId}/game_binaries/${gameBuild.id}/complete_multipart_upload`,\n snakeCaseConverter({\n gameBinary: { parts: uploadResponse, uploadId: gameBuild.uploadId },\n })\n )\n .then((response: AxiosResponse): IGameBuild => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return camelize(response.data) as IGameBuild;\n })\n .catch((error: AxiosError): never => {\n throw error.response ? error.response.data : error;\n });\n}\n\nexport const processUpload: TThunkAction = (gameId: number, gameBuild: IGameBuild): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return axios\n .patch(\n `/api/v1/games/${gameId}/game_binaries/${gameBuild.id}/process_upload`,\n snakeCaseConverter({\n gameBinary: { uploadId: gameBuild.uploadId },\n })\n )\n .then((response: AxiosResponse): TAxiosPromise => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return camelize(response.data) as unknown as TAxiosPromise;\n })\n .catch((error: AxiosError): never => {\n dispatch(clearFinalizeGameBuild(gameBuild));\n throw error.response ? error.response.data : error;\n });\n };\n};\n\nexport const fetchProcessingGameBuild: TThunkAction = (\n gameId: number,\n gameBuildId: number\n): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return axios\n .get(`/api/v1/games/${gameId}/game_binaries/${gameBuildId}`)\n .then((response: AxiosResponse): TAxiosPromise => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const camelizeResponse: IGameBuild = camelize(response.data) as IGameBuild;\n\n const hasUploadComplete =\n !!camelizeResponse.uploadStatus &&\n GAME_BUILD_PROCESS_END_STATE.includes(camelizeResponse.uploadStatus);\n\n if (hasUploadComplete) {\n dispatch(clearFinalizeGameBuild(camelizeResponse));\n }\n\n return camelizeResponse as unknown as TAxiosPromise;\n });\n };\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { PLATFORM } from '@app/common/constants';\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport {\n IAction,\n IErrors,\n TDispatch,\n TThunkAction,\n TErrorGeneral,\n TAxiosPromise,\n IActionNoData,\n} from '@app/common/interfaces';\nimport axios, { AxiosResponse, AxiosError } from '@app/common/setup/axiosWithHeader';\n\nimport { GAME_BUILDS_PER_PAGE, GAME_BUILD_STATUS } from '../constants';\nimport {\n IGameBuildIndexParams,\n IGameBuild,\n TGameBuildsIndexResponses,\n TGameBuildsPerPage,\n IGameBuildsFirstPage,\n} from '../interfaces';\nimport { receiveGameBuildsCount } from './countActions';\n\nexport enum GAME_BUILDS_FETCH {\n RECEIVE_GAME_BUILDS = 'gameBuildsFetch/RECEIVE_GAME_BUILDS',\n RESET_AND_RECEIVE_GAME_BUILDS = 'gameBuildsFetch/RESET_AND_RECEIVE_GAME_BUILDS',\n CLEAR_GAME_BUILDS = 'gameBuildsFetch/CLEAR_GAME_BUILDS',\n}\n\nexport function receiveGameBuilds(data: TGameBuildsPerPage): IAction {\n return { type: GAME_BUILDS_FETCH.RECEIVE_GAME_BUILDS, data };\n}\n\nexport function resetAndReceiveGameBuilds(\n data: IGameBuildsFirstPage\n): IAction {\n return { type: GAME_BUILDS_FETCH.RESET_AND_RECEIVE_GAME_BUILDS, data };\n}\n\nexport function clearGameBuilds(): IActionNoData {\n return { type: GAME_BUILDS_FETCH.CLEAR_GAME_BUILDS };\n}\n\nexport function fetchGameBuildsApiCall(\n gameId: number,\n indexParams: IGameBuildIndexParams\n): Promise | never> {\n let urlParams = new URLSearchParams(snakeCaseConverter(indexParams)).toString();\n\n return axios.get(`/api/v1/games/${gameId}/game_binaries?${urlParams}`);\n}\n\nexport type TActiveAndroidAxiosPromise = IGameBuild[] | never;\nexport function fetchActiveAndroidGameBuilds(\n gameId: number,\n limit: number = 20000\n): Promise {\n let activeAndroidParams: IGameBuildIndexParams = {\n uploadStatus: GAME_BUILD_STATUS.COMPLETE,\n platform: PLATFORM.ANDROID,\n active: true,\n limit,\n };\n\n return fetchGameBuildsApiCall(gameId, activeAndroidParams)\n .then((response: AxiosResponse): IGameBuild[] => {\n return camelize(response.data.items);\n })\n .catch((error: AxiosError): never => {\n let errorText: TErrorGeneral = error.response ? error.response.data : error;\n throw errorText;\n });\n}\n\nexport const fetchGameBuilds: TThunkAction = (\n gameId: number,\n indexParams: IGameBuildIndexParams,\n page: number = 0\n): TDispatch => {\n // in the new assign and sync modal we pass the offset so it doesn't fall into this if block\n if (indexParams.offset === undefined && page !== 0) {\n indexParams.offset = page * GAME_BUILDS_PER_PAGE;\n }\n\n return (\n dispatch: Dispatch | IActionNoData>\n ): TAxiosPromise => {\n return (\n fetchGameBuildsApiCall(gameId, indexParams)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((response: AxiosResponse): any => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let resp: TGameBuildsIndexResponses = camelize(response.data);\n\n if (page === 0) {\n dispatch(resetAndReceiveGameBuilds({ 0: resp.items }));\n } else {\n dispatch(receiveGameBuilds({ [page]: resp.items }));\n }\n\n dispatch(receiveGameBuildsCount(resp.totalCount));\n })\n .catch((error: AxiosError): never => {\n let errorText: TErrorGeneral = error.response ? error.response.data : error;\n throw errorText;\n })\n );\n };\n};\n","import { Dispatch } from 'redux';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport cloneDeep from 'lodash/cloneDeep';\nimport axios, { AxiosResponse, AxiosError } from '@app/common/setup/axiosWithHeader';\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { clearFinalizeGameBuild } from './uploadActions';\nimport { GAME_BUILD_STATUS } from '../constants';\n\nimport {\n TThunkAction,\n TDispatch,\n IAction,\n TAxiosPromise,\n IErrors,\n IZendeskTicket,\n TErrorGeneral\n} from '@app/common/interfaces';\nimport { IGameBuild, TGameBuildUpdate, TGameBuildsPerPage } from '../interfaces';\n\nexport enum GAME_BUILDS_UPDATE {\n RECEIVE_GAME_BUILD_UPDATE = 'gameBuildsUpload/RECEIVE_GAME_BUILD_UPDATE'\n}\n\nexport function receiveUpdatedGameBuild(data: TGameBuildsPerPage): IAction {\n return { type: GAME_BUILDS_UPDATE.RECEIVE_GAME_BUILD_UPDATE, data };\n}\n\nexport function updateGameBuild(\n gameId: number,\n gameBuild: TGameBuildUpdate\n): Promise {\n return axios\n .patch(\n `/api/v1/games/${gameId}/game_binaries/${gameBuild.id}`,\n snakeCaseConverter({ gameBinary: gameBuild })\n )\n .then(\n (response: AxiosResponse): IGameBuild => {\n return camelize(response.data);\n }\n )\n .catch((error: AxiosError): never => {\n let errorText: TErrorGeneral = error.response ? error.response.data.errors : error;\n\n throw errorText;\n });\n}\n\nexport const updateGameBuildNotComplete: TThunkAction = (\n gameId: number,\n gameBuildId: number,\n newUploadStatus: GAME_BUILD_STATUS\n): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n let gameBuildUpdateParams: TGameBuildUpdate = {\n id: gameBuildId,\n uploadStatus: newUploadStatus\n };\n\n return (\n updateGameBuild(gameId, gameBuildUpdateParams)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((response: IGameBuild): any => {\n dispatch(clearFinalizeGameBuild(response));\n })\n .catch((error: AxiosError): never => {\n throw error;\n })\n );\n };\n};\n\nexport const updateGameBuildInPage: TThunkAction = (\n gameId: number,\n page: number,\n gameBuildUpdateParams: TGameBuildUpdate\n): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n return (\n updateGameBuild(gameId, gameBuildUpdateParams)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((response: IGameBuild): any => {\n let responseInPage: TGameBuildsPerPage = { [page]: [response] };\n dispatch(receiveUpdatedGameBuild(responseInPage));\n\n return response;\n })\n .catch((error: AxiosError): never => {\n throw error;\n })\n );\n };\n};\n\nexport const createGameBuildRequest: TThunkAction = (\n gameId: number,\n page: number,\n gameBuild: IGameBuild\n): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n let updatedGameBuild: IGameBuild = cloneDeep(gameBuild);\n\n return (\n axios\n .post(`/api/v1/games/${gameId}/game_binaries/${gameBuild.id}/zendesk_tickets`)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((response: AxiosResponse): any => {\n let ticketCreated: IZendeskTicket = camelize(response.data);\n updatedGameBuild.activeTicketId = ticketCreated.id;\n\n let responseInPage: TGameBuildsPerPage = { [page]: [updatedGameBuild] };\n dispatch(receiveUpdatedGameBuild(responseInPage));\n })\n .catch((error: AxiosError): never => {\n let errorText: TErrorGeneral = error.response ? error.response.data : error;\n\n throw errorText;\n })\n );\n };\n};\n\nexport const updateGameBuildRequest: TThunkAction = (\n gameId: number,\n page: number,\n gameBuild: IGameBuild\n): TDispatch => {\n return (dispatch: Dispatch>): TAxiosPromise => {\n let updatedGameBuild: IGameBuild = cloneDeep(gameBuild);\n\n return (\n axios\n .patch(\n `/api/v1/games/${gameId}/game_binaries/${gameBuild.id}/zendesk_tickets/${gameBuild.activeTicketId}`\n )\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((): any => {\n updatedGameBuild.activeTicketId = null;\n let responseInPage: TGameBuildsPerPage = { [page]: [updatedGameBuild] };\n\n dispatch(receiveUpdatedGameBuild(responseInPage));\n })\n .catch((error: AxiosError): never => {\n let errorText: TErrorGeneral = error.response ? error.response.data : error;\n\n throw errorText;\n })\n );\n };\n};\n","import { PLATFORM } from '@app/common/constants';\nimport { IValidation } from '@app/common/helpers';\n\nexport const GAME_BUILDS_PER_PAGE: number = 10;\n\nexport enum GAME_BUILD_STATUS {\n FAILURE_PROCESSING = 'failure_processing',\n FAILURE_UPLOAD = 'failure_upload',\n CANCELLED = 'cancelled',\n IN_PROGRESS = 'in_progress',\n PROCESSING = 'processing',\n COMPLETE = 'complete',\n}\n\nexport const GAME_BUILD_PROCESS_END_STATE = [\n GAME_BUILD_STATUS.FAILURE_PROCESSING,\n GAME_BUILD_STATUS.CANCELLED,\n GAME_BUILD_STATUS.COMPLETE,\n];\n\nexport type BINARY_PLATFORM = Exclude;\n\nexport const UPLOADER_TOOLTIP_COPY: string =\n 'When you upload a build to the Skillz servers you enable your game to be seen by Skillz players worldwide. When you develop new features you will upload your new game build here.';\n\nexport const QA_CHECKLIST_LINK: string =\n 'https://docs.skillz.com/docs/release-your-game-overview/#test-skillz-in-production';\n\nexport const RELEASE_GUIDE_LINK: string =\n 'https://docs.skillz.com/docs/release-your-game-overview/';\n\nexport enum FILE_TYPE {\n IPA = '.ipa',\n APK = '.apk',\n BLANK = '',\n}\n\nexport enum CONTENT_TYPE {\n IPA = 'application/octet-stream',\n APK = 'application/vnd.android.package-archive',\n}\n\nexport enum ATTRIBUTE_NAME {\n NAME = 'name',\n GAME_VERSION = 'gameVersion',\n DESCRIPTION = 'description',\n}\n\nexport enum READABLE_ATTRIBUTE_NAME {\n NAME = 'Build name',\n GAME_VERSION = 'Version number',\n DESCRIPTION = 'Build notes',\n}\n\nexport const BLANK_VALIDATION: IValidation = { status: true, error: '' };\n\n// max segment value for each chunk of process\nexport enum UPLOAD_PROGRESS_MAX {\n CREATE = 5,\n CHUNK_UPLOAD = 70,\n COMPLETE_MULTI = 80,\n PROCESS_UPLOAD = 95,\n SYNC = 100,\n}\n\nexport enum UPLOAD_PROGRESS_STEP_VALUE {\n CHUNK_UPLOAD = UPLOAD_PROGRESS_MAX.CHUNK_UPLOAD - UPLOAD_PROGRESS_MAX.CREATE,\n COMPLETE_MULTI = UPLOAD_PROGRESS_MAX.COMPLETE_MULTI - UPLOAD_PROGRESS_MAX.CHUNK_UPLOAD,\n PROCESS_UPLOAD = UPLOAD_PROGRESS_MAX.PROCESS_UPLOAD - UPLOAD_PROGRESS_MAX.COMPLETE_MULTI,\n SYNC = UPLOAD_PROGRESS_MAX.SYNC - UPLOAD_PROGRESS_MAX.PROCESS_UPLOAD,\n}\n\nexport enum SUCCESS_UPLOAD_MESSAGE {\n CASH_LIVE_HEADER = 'Skillz quality assurance',\n CASH_LIVE_DETAIL = 'Since your game is prize enabled, new game builds will be verified by our DevSuccess team. Please allow up to 2 business days for it to be enabled in production.',\n NON_CASH_LIVE_DETAIL = 'Suggested step: error-proof your game',\n}\n\nexport const CASH_LIVE_NOTE =\n 'Your game is prize enabled! To ensure fair play, our Developer Success team will be verifying each build that you enable and disable.';\n","import { PLATFORM } from '@app/common/constants';\nimport { ONE_GB_IN_BYTES, ONE_MB_IN_BYTES } from '@app/common/helpers';\nimport {\n IProgressBarSegments,\n ISnackbarData,\n TErrorGeneral,\n TProgressBarSegments,\n} from '@app/common/interfaces';\nimport { fileNameCleanUp } from '@appGameHome/common/helpers/fileUploadHelpers';\nimport { platformValues } from '@appOptimize/modules/GameInfo/constants';\n\nimport { FILE_TYPE, GAME_BUILD_STATUS } from './constants';\nimport { IGameBuild, TNameGameVersionAndFileType } from './interfaces';\nimport { bundleMismatchError } from './subcomponents/errorComponents';\n\nexport function findGameBuildIndex(gameBuilds: IGameBuild[], gameBuildId: number): number {\n return Object.values(gameBuilds).findIndex(\n (gameBuild: IGameBuild) => gameBuild.id === gameBuildId\n );\n}\n\nexport function defaultGameBuildsErrorSnackBar(errorContext: string | JSX.Element): ISnackbarData {\n return {\n text: errorContext,\n autoHideDuration: 20000,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left',\n };\n}\n\n// TODO [GameBuild][FP1][WS-8711] remove after binaries passed back, filters out all failure binary\nexport function countIncompleteGameBuild(gameBuilds: IGameBuild[]): number {\n let count: number = 0;\n\n gameBuilds.forEach((gameBuild: IGameBuild) => {\n if (gameBuild.uploadStatus !== GAME_BUILD_STATUS.COMPLETE) {\n count += 1;\n }\n });\n\n return count;\n}\n\nexport function parseNewGameVersion(mostRecentGameBuild: IGameBuild | null): string {\n if (!mostRecentGameBuild) return '1.0';\n\n let currentVersion: string | null = mostRecentGameBuild.gameVersion;\n if (!currentVersion) return '1.0';\n\n let lastIndexOfPeriod: number = currentVersion.lastIndexOf('.');\n\n if (lastIndexOfPeriod === -1) {\n return `${parseInt(currentVersion, 10) + 1}`;\n }\n\n let patchNumber: string = currentVersion.slice(lastIndexOfPeriod + 1);\n\n return `${currentVersion.slice(0, lastIndexOfPeriod + 1)}${parseInt(patchNumber, 10) + 1}`;\n}\n\nexport function extractNameGameVersionAndFileType(\n file: File,\n gameBuild: IGameBuild | null,\n mostRecentGameBuild: IGameBuild | null\n): TNameGameVersionAndFileType {\n // name must be shorter than 42 characters not including the period and file type\n let name: string = file.name.length > 46 ? file.name.slice(0, 42) : file.name.slice(0, -4);\n name = fileNameCleanUp(name);\n const fileType: FILE_TYPE = file.name.slice(-4) as FILE_TYPE;\n\n return {\n name,\n fileType,\n gameVersion: gameBuild?.gameVersion ?? parseNewGameVersion(mostRecentGameBuild),\n };\n}\n\nexport function extractVersion(\n gameBuild: IGameBuild | null,\n mostRecentGameBuild: IGameBuild | null\n): string {\n return gameBuild?.gameVersion ?? parseNewGameVersion(mostRecentGameBuild);\n}\n\nexport function determineUploadFileTypes(platform: PLATFORM): FILE_TYPE[] {\n let fileTypes: FILE_TYPE[] = [];\n\n if (platform !== PLATFORM.ANDROID) {\n fileTypes.push(FILE_TYPE.IPA);\n }\n\n if (platform !== PLATFORM.IOS) {\n fileTypes.push(FILE_TYPE.APK);\n }\n\n return fileTypes;\n}\n\nexport function isFirstOtherPlatformGameBuild(\n platform: PLATFORM,\n gameBinariesStatus: PLATFORM | null,\n uploadBinaryPlatform: PLATFORM\n): boolean {\n if (platform !== PLATFORM.CROSS_PLATFORM) {\n return false;\n }\n\n return (\n // if this is the first binary for iOS for cross_platform game with android binary\n (uploadBinaryPlatform === PLATFORM.ANDROID && gameBinariesStatus === PLATFORM.IOS) ||\n // if this is the first binary for Android for cross_platform gamewith ios binary\n (uploadBinaryPlatform === PLATFORM.IOS && gameBinariesStatus === PLATFORM.ANDROID)\n );\n}\n\n// TODO [WS-9512] match all error text as spec and check default text with product/design\nexport function editGameBuildProcessErrorMessage(\n message: TErrorGeneral,\n gameBuildPlatform: PLATFORM\n): string | JSX.Element {\n let platform = gameBuildPlatform === PLATFORM.IOS ? platformValues.ios : platformValues.android;\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n let constantMessage: string = message.errors ? message.errors : message;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n\n if (constantMessage.includes('Mysql2::Error')) {\n return 'Internal server error';\n }\n\n // fingerprint validation\n if (constantMessage.includes('Fingerprint Duplicate')) {\n let cleanedErrorMessage = constantMessage.slice(\n constantMessage.lastIndexOf('Duplicate fingerprint')\n );\n\n return cleanedErrorMessage;\n }\n\n if (constantMessage.includes('Fingerprint Fingerprint')) {\n let cleanedErrorMessage = constantMessage\n .slice(constantMessage.lastIndexOf('Fingerprint Fingerprint'))\n .replace('/apps/portal-developer', '');\n\n return cleanedErrorMessage;\n }\n\n // this should hide file path or details about apk_validation\n if (constantMessage.includes('Android')) {\n if (constantMessage.includes('game_id')) {\n return `The gameID in your ${platform} game build does not match this game`;\n } else {\n // matching-production or no environment found\n return `Your ${platform} game build is not pointed at Skillz production servers`;\n }\n }\n\n // invalid file\n if (constantMessage.includes('/tmp/game_binaries')) {\n // invalid ipa file\n if (constantMessage.includes('Open archive failed -')) {\n return `Invalid ${platform} file uploaded`;\n }\n\n // invalid ipa file from model level\n return constantMessage.split(':')[0] + ` for ${platform}`;\n }\n\n // bundle name and bundle executable mismatch\n if (constantMessage.includes('CFBundleName')) {\n // invalid ipa file\n return bundleMismatchError;\n }\n\n // default error message for failed process uploaded\n return `Error processing upload of your ${platform} game build`;\n}\n\nexport function calculateProgressSegment(\n currentProgress: TProgressBarSegments,\n increment: number,\n maxProgress: number\n): IProgressBarSegments {\n if (!currentProgress) {\n return {\n previousSegment: 0,\n currentSegment: Math.min(increment, maxProgress),\n };\n }\n\n let newSegmentState: number = currentProgress.currentSegment + increment;\n\n if (newSegmentState >= maxProgress) {\n newSegmentState = maxProgress;\n }\n\n return {\n previousSegment: currentProgress.currentSegment,\n currentSegment: newSegmentState,\n };\n}\n\nexport function calculateChunkProgressFactor(numberOfChunks: number, maxProgress: number): number {\n if (numberOfChunks >= maxProgress * 2) {\n return 0.5;\n }\n\n if (numberOfChunks <= 5) {\n return 4;\n }\n\n if (numberOfChunks <= maxProgress / 2) {\n return 2;\n }\n\n if (numberOfChunks <= maxProgress) {\n return 1;\n }\n\n return 0;\n}\n\nexport function convertByteToMbGb(byteSize: number): string {\n let sizeInByte: string = (byteSize / ONE_MB_IN_BYTES).toFixed(2) + 'MB';\n if (byteSize >= ONE_GB_IN_BYTES) {\n sizeInByte = (byteSize / ONE_GB_IN_BYTES).toFixed(2) + 'GB';\n }\n\n return sizeInByte;\n}\n\nexport function isProgressAtMax(\n uploadProgressBarSegments: TProgressBarSegments,\n maxProgress: number\n): boolean {\n return !!uploadProgressBarSegments && uploadProgressBarSegments.currentSegment < maxProgress;\n}\n\n// this is function to mock uniqueness validation for game version\n// new version should be a version greater than most recent game build\n// not applying this validation upon product request - 6/2/2020\nexport function validateGameVersion(\n newVersion: string,\n mostRecentGameVersion: string | null\n): boolean {\n if (!mostRecentGameVersion) return true;\n\n return newVersion.toLocaleLowerCase() > mostRecentGameVersion.toLocaleLowerCase();\n}\n\nexport function determineFileUploadErrorMessage(platform: PLATFORM): string {\n if (platform === PLATFORM.IOS) {\n return 'Please upload a .ipa file.';\n } else if (platform === PLATFORM.ANDROID) {\n return 'Please upload a .apk file.';\n }\n\n return 'Please upload a .ipa or .apk file';\n}\n","import { IAtomTableHeaderColumn } from '@app/common/interfaces';\nimport { IGameBuildTableData } from './interfaces';\n\nexport enum TABLE_SORT_ATTRIBUTES {\n ACTIVE = 'active',\n NAME = 'name',\n SDK_VERSION = 'sdk_version',\n CREATED_AT = 'created_at',\n PLATFORM = 'platform',\n DESCRIPTION = 'description'\n}\n\nexport const HEAD_ROWS: IAtomTableHeaderColumn[] = [\n {\n id: 'game-builds__table-header-status',\n cellContent: 'Status',\n property: TABLE_SORT_ATTRIBUTES.ACTIVE\n },\n {\n id: 'game-builds__table-header-name',\n cellContent: 'Name',\n property: TABLE_SORT_ATTRIBUTES.NAME\n },\n {\n id: 'game-builds__table-header-sdk-version',\n cellContent: 'SDK version',\n property: TABLE_SORT_ATTRIBUTES.SDK_VERSION\n },\n {\n id: 'game-builds__table-header-upload-date',\n cellContent: 'Upload Date',\n property: TABLE_SORT_ATTRIBUTES.CREATED_AT\n },\n {\n id: 'game-builds__table-header-platform',\n cellContent: 'Platform',\n property: TABLE_SORT_ATTRIBUTES.PLATFORM\n },\n {\n id: 'game-builds__table-header-build-notes',\n cellContent: 'Build Notes'\n },\n {\n id: 'game-builds__table-header-actions',\n cellContent: ''\n }\n];\n\nexport const TABLE_DATA_ORDER: (keyof IGameBuildTableData)[] = [\n 'status',\n 'name',\n 'sdkVersion',\n 'uploadDate',\n 'platform',\n 'buildNotes',\n 'action'\n];\n\nexport enum MENU_ITEM_ATTRIBUTES {\n EDIT = 'edit',\n ENABLE = 'enable',\n DISABLE = 'disable',\n REQUEST_TO_ENABLE = 'request-to-enable',\n REQUEST_TO_DISABLE = 'request-to-disable',\n CANCEL_REQUEST = 'cancel-request',\n COPY_DOWNLOAD_LINK = 'copy-download-link'\n}\n\nexport enum MENU_ITEM_COPY {\n EDIT = 'Edit',\n ENABLE = 'Enable',\n DISABLE = 'Disable',\n REQUEST_TO_ENABLE = 'Request to enable',\n REQUEST_TO_DISABLE = 'Request to disable',\n CANCEL_REQUEST = 'Cancel request',\n COPY_DOWNLOAD_LINK = 'Copy download link'\n}\n\nexport const PENDING_TOOLTIP_COPY: string =\n 'Because your game is prize enabled, our dev success team will provide quality assurance checks on your game. You will receive a response within the next 2 business days.';\n","import * as React from 'react';\n\nimport AtomLink from 'portal-common-library/atoms/AtomLink';\n\nexport const bundleMismatchError: JSX.Element = (\n \n Mismatch bundle names - Follow \n \n  to resolve this error\n \n);\n","export enum PROGRESSION_SCHEMA_VALIDATIONS {\n DEVELOPER_KEY_MAX_LENGTH = 255,\n DESCRIPTION_MAX_LENGTH = 1000,\n DISPLAY_NAME_MAX_LENGTH = 255,\n DEVELOPER_VALUE_MAX_LENGTH = 65535,\n DEFAULT_QUANTITY_MAX_LENGTH = 38, // max num supported by dynamo db for in game items\n}\n","import { IAtomTableHeaderColumn } from 'portal-common-library/interfaces/table';\n\nimport { TABLE_SORT_ATTRIBUTES } from '@appGameProgression/modules/PlayerData/constants';\n\nimport { IDefaultPlayerDataSchemaTable } from '../../modules/PlayerData/interfaces';\n\nexport * from './validationConstants';\n\nexport const GAME_PROGRESSION_CLASS = 'game-progression';\n\nexport const SANDBOX_TOOLTIP_COPY = 'Turn on Sandbox to start creating custom';\n\nexport enum SANDBOX_SCHEMA_STATUS {\n NEW = 'NEW',\n EDITED = 'EDITED',\n EMPTY = '',\n}\n\nexport enum MENU_TYPES {\n TABLE_ITEM = 'tableItem',\n SUBHEADER = 'subheader',\n}\n\nexport const KEY_NAME_MUST_BE_UNIQUE = 'Key name must be unique';\n\nexport const INVALID_GAME_ID = 'Invalid GameID';\n\nexport enum PROGRESSION_SCHEMA_ERRORS {\n DEFAULT_QUANTITY_MUST_BE_INTEGER = 'Default quantity must be an integer and must not contain any leading zeros',\n GAME_IDS_MUST_BE_INTEGERS = 'Game IDs must be integers',\n}\n\nexport enum BULK_ERRORS {\n KEYS_UNIQUE = 'All keys must be unique',\n PLAYER_DATA_NON_NULL = 'All keys and data types must be non-null',\n IN_GAME_ITEMS_NON_NULL = 'All keys, display names, data types, and default quantities must be non-null',\n COMPLY_TO_VALIDATIONS = 'All fields must comply with their validations',\n UNSUPPORTED_COLUMN = 'Unsupported column',\n MISSING_COLUMN = 'Missing required column',\n CREATE = 'Error creating key(s)',\n}\n\nexport enum KEY_NAMESPACE {\n PLAYER_DATA = 'PlayerData',\n IN_GAME_ITEMS = 'InGameItems',\n}\n\nexport enum DEFAULT_NAMESPACE {\n DEFAULT_PLAYER_DATA = 'DefaultPlayerData',\n}\n\nexport type TLookupKeyNamespace = KEY_NAMESPACE | DEFAULT_NAMESPACE;\n\nexport enum UPLOAD_PROGRESS_MAX {\n VALIDATION = 100,\n}\n\nexport enum ACTION_TYPE {\n CREATE = 'create',\n EDIT = 'edit',\n}\n\nexport const SCHEMA_KEY_CAP = 100;\n\nexport const SCHEMA_KEY_CAP_EXCEEDED_ERROR = `Cannot create more than ${SCHEMA_KEY_CAP} keys`;\n\nexport const DEFAULT_PLAYER_DATA = [\n {\n id: 'GamesPlayed',\n key: 'games_played',\n type: 'Integer',\n description: 'A count of the games a player has entered',\n },\n {\n id: 'CashGamesPlayed',\n key: 'cash_games_played',\n type: 'Integer',\n description: 'A count of the cash games a player has entered',\n },\n {\n id: 'GamesWon',\n key: 'games_won',\n type: 'Integer',\n description: 'A count of the total games a player has won',\n },\n {\n id: 'CashGamesWon',\n key: 'cash_games_won',\n type: 'Integer',\n description: 'A count of the total cash games a player has won',\n },\n {\n id: 'BestScoreLifetime',\n key: 'best_score_lifetime',\n type: 'Float',\n description: 'The best score achieved by this player',\n },\n {\n id: 'AverageScore',\n key: 'average_score',\n type: 'Float',\n description: 'The average of all scores by this player',\n },\n {\n id: 'PlayerLevel',\n key: 'player_level',\n type: 'Integer',\n description: 'The player’s level for this game',\n },\n {\n id: 'SkillzLevel',\n key: 'skillz_level',\n type: 'Integer',\n description: 'The player’s global Skillz level',\n },\n {\n id: 'InstallDate',\n key: 'install_date',\n type: 'Date',\n description: 'The UTC date and timestamp the user installed the game',\n },\n];\n\nexport const DEFAULT_PLAYER_DATA_HEAD_ROWS: IAtomTableHeaderColumn[] = [\n {\n id: 'default-player-data__table-header-table-key',\n cellContent: 'Key',\n },\n {\n id: 'default-player-data__table-header-table-type',\n cellContent: 'Type',\n },\n {\n id: 'default-player-data__table-header-table-description',\n cellContent: 'Description',\n },\n];\n\nexport const DEFAULT_PLAYER_DATA_ORDER: (keyof IDefaultPlayerDataSchemaTable)[] = [\n 'key',\n 'type',\n 'description',\n];\n\nexport enum SNACKBAR_MESSAGES {\n ERROR_PROCESSING_TRY_AGAIN = 'Error processing: Please try again. If the issue persists, contact us',\n}\n\nexport const MIN_SCREEN_WIDTH_TO_ANIMATE = 960;\n\nexport const DEFAULT_PROGRESSION_SCHEMA_PAGE_SIZE = 20;\n\nexport const IGI_EDIT_AUTHORIZATION_ERROR_MESSAGE =\n 'You can only modify an In-Game Item if you have access to all the games assigned to it.';\n\nexport const IGI_PUBLISH_AUTHORIZATION_ERROR_MESSAGE =\n 'You can only publish an In-Game Item if you have access to all the games assigned to it.';\n","export enum OPERATORS {\n GT = '>',\n LT = '<',\n GTE = '>=',\n LTE = '<=',\n EQ = '===',\n}\n\nexport enum OPERATORS_OTHER {\n AND = '&&',\n OR = '||',\n}\n","import * as React from 'react';\n\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleRoundedIcon from '@mui/icons-material/CheckCircleRounded';\nimport CreateIcon from '@mui/icons-material/Create';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LibraryAddIcon from '@mui/icons-material/LibraryAdd';\nimport SyncIcon from '@mui/icons-material/Sync';\nimport SyncAlt from '@mui/icons-material/SyncAlt';\n\nimport { IMenuItem } from 'portal-common-library/interfaces/menu';\n\nimport './styles/menuItemStyles.scss';\n\nexport enum PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES {\n DELETE = 'delete',\n EDIT_ENTRY_POINT = 'editEntryPoint',\n VIEW_IN_SANDBOX = 'viewInSandbox',\n ASSIGN_TO_BUILDS = 'assignToBuilds',\n STOP_IN_SANDBOX = 'stopInSandbox',\n CHANGE_NAME = 'changeName',\n ACTIVATE_IN_PRODUCTION = 'activateInProduction',\n DEACTIVATE_FROM_PRODUCTION = 'deactivateFromProduction',\n SYNC_TO_PRODUCTION = 'syncToProduction',\n}\n\nexport enum PROGRESSION_ROOM_MENU_ITEM_COPY {\n DELETE = 'Delete',\n EDIT_ENTRY_POINT = 'Edit Entry Point',\n VIEW_IN_SANDBOX = 'Activate in Sandbox',\n ASSIGN_TO_BUILDS = 'Assign to Build(s)',\n STOP_IN_SANDBOX = 'Deactivate from Sandbox',\n CHANGE_NAME = 'Change Name',\n ACTIVATE_IN_PRODUCTION = 'Activate in Production',\n DEACTIVATE_FROM_PRODUCTION = 'Deactivate from Production',\n SYNC_TO_PRODUCTION = 'Sync To Production',\n}\n\nexport const deleteProgressionRoom: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.DELETE,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.DELETE}\n \n ),\n};\n\nexport const viewProgressionRoomInSandbox: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.VIEW_IN_SANDBOX,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.VIEW_IN_SANDBOX}\n \n ),\n};\n\nexport const stopProgressionRoomInSandbox: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.STOP_IN_SANDBOX,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.STOP_IN_SANDBOX}\n \n ),\n};\n\nexport const assignToBuilds: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.ASSIGN_TO_BUILDS,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.ASSIGN_TO_BUILDS}\n \n ),\n};\n\nexport const editEntryPoint: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.EDIT_ENTRY_POINT,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.EDIT_ENTRY_POINT}\n \n ),\n};\n\nexport const changeEntryPointName: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.CHANGE_NAME,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.CHANGE_NAME}\n \n ),\n};\n\nexport const activateProgressionRoomInProduction: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.ACTIVATE_IN_PRODUCTION,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.ACTIVATE_IN_PRODUCTION}\n \n ),\n};\n\nexport const deactivateProgressionRoomFromProduction: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.DEACTIVATE_FROM_PRODUCTION,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.DEACTIVATE_FROM_PRODUCTION}\n \n ),\n};\n\nexport const syncToProgressionRoomToProduction: IMenuItem = {\n attributeName: PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES.SYNC_TO_PRODUCTION,\n itemBody: (\n \n \n {PROGRESSION_ROOM_MENU_ITEM_COPY.SYNC_TO_PRODUCTION}\n \n ),\n};\n","import { LOCALE } from '@app/common/constants';\n\nexport const LOCALE_MAPPING = {\n [LOCALE.DE]: 'German',\n [LOCALE.EN]: 'English',\n [LOCALE.ES]: 'Spanish',\n [LOCALE.FR]: 'French',\n [LOCALE.IT]: 'Italian',\n [LOCALE.JA]: 'Japanese',\n [LOCALE.PT]: 'Portuguese',\n [LOCALE.RU]: 'Russian',\n [LOCALE.ZH]: 'Chinese',\n};\n\nexport const localeDropdown = Object.values(LOCALE).map((locale) => {\n let component = LOCALE_MAPPING[locale];\n\n if (locale === LOCALE.EN) {\n component = 'English (required)';\n }\n\n return { value: locale, component };\n});\n","import { IGameProgressionRoom } from '@appEntryPoints/common/interfaces';\n\nexport const gameBuildsMappingCount = (room: IGameProgressionRoom | undefined): number => {\n if (!room) return 0;\n\n let totalCount = 0;\n\n room.production.versions.forEach(({ gameBinaryIds }) => (totalCount += gameBinaryIds.length));\n\n return Math.floor(totalCount / 2);\n};\n","import {\n IProgressionRoomVersionLocaleValidation,\n IStateProgressionRoomVersionLocaleBodyImage,\n} from '@appEntryPoints/common/interfaces';\n\nimport { emptyConditionValidation } from '../../modules/Accordion/constants';\n\nexport const existingConditionCounter = (validation: IProgressionRoomVersionLocaleValidation) => {\n let conditionValidationCount = 0;\n\n validation.bodyImagesWithCondition.forEach(\n (bodyImageValidations) => (conditionValidationCount += bodyImageValidations.length)\n );\n\n return conditionValidationCount;\n};\n\nexport const newConditionCounterAndNewValidationObject = (\n bodyImagesWithCondition: IStateProgressionRoomVersionLocaleBodyImage[]\n) => {\n let newConditionsCount = 0;\n\n // create validation for each condition within each image\n const bodyImagesWithConditionValidations = bodyImagesWithCondition.map((bodyImageWithCondition) =>\n (bodyImageWithCondition.condition ?? []).map(() => {\n newConditionsCount++;\n\n return emptyConditionValidation[0];\n })\n );\n\n return { newConditionsCount, bodyImagesWithConditionValidations };\n};\n","import isEmpty from 'lodash/isEmpty';\n\nimport {\n TGameProgressionRooms,\n TGameProgressionRoomVersionMappings,\n} from '@appEntryPoints/common/interfaces';\n\nexport const hasLoadedAllVersionLocales = (\n reduxProgressionRooms: TGameProgressionRooms,\n reduxProgressionRoomVersionMappings: TGameProgressionRoomVersionMappings\n) => {\n if (isEmpty(reduxProgressionRooms)) return false;\n\n const isAnyVersionEmpty = Object.values(reduxProgressionRoomVersionMappings).some(\n ({ production, sandbox }) => isEmpty(sandbox) || isEmpty(production)\n );\n\n const isRoomAndVersionCountMatching =\n Object.keys(reduxProgressionRooms).length ===\n Object.keys(reduxProgressionRoomVersionMappings).length;\n\n const isRoomAndVersionLoaded = isRoomAndVersionCountMatching && !isAnyVersionEmpty;\n\n return isRoomAndVersionLoaded;\n};\n","import cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\n\nimport { LOCALE } from '@app/common/constants';\nimport {\n TStateProgressionRoomVersionLocale,\n TStateProgressionRoomVersionLocales,\n} from '@appEntryPoints/common/interfaces';\nimport { initialRoomVersionLocaleState } from '@appGameProgression/modules/EntryPoints/modules/EntryPoint/constants';\n\nexport const determineLocaleCopyToUse = (\n locale: LOCALE,\n stateVersionLocales: TStateProgressionRoomVersionLocales\n) => {\n return !!stateVersionLocales[locale]\n ? (stateVersionLocales[locale] as TStateProgressionRoomVersionLocale)\n : initialRoomVersionLocaleState(locale);\n};\n\nexport const determineLocalesUpdateTo = (\n currentLocale: LOCALE,\n currentVersionLocale: TStateProgressionRoomVersionLocale,\n stateVersionLocales: TStateProgressionRoomVersionLocales\n) => {\n const isCurrentVersionLocaleSameAsInitialState = versionLocaleMatchInitialState(\n currentLocale,\n currentVersionLocale\n );\n\n const isCurrentVersionLocaleSameAsCopyInState = versionLocaleMatchState(\n currentLocale,\n currentVersionLocale,\n stateVersionLocales\n );\n\n // it has changed if it is not same as the latest/edited copy of locale in state\n // or initial locale state\n const hasChangeInCurrentVersionLocale = !(\n isCurrentVersionLocaleSameAsInitialState || isCurrentVersionLocaleSameAsCopyInState\n );\n\n if (hasChangeInCurrentVersionLocale) {\n let newRoomVersionLocales = cloneDeep(stateVersionLocales);\n newRoomVersionLocales[currentLocale] = currentVersionLocale;\n\n return newRoomVersionLocales;\n }\n\n return null;\n};\n\nexport const versionLocaleMatchInitialState = (\n currentLocale: LOCALE,\n currentVersionLocale: TStateProgressionRoomVersionLocale\n) => {\n const emptyCopy = initialRoomVersionLocaleState(currentLocale);\n\n return isEqual(currentVersionLocale, emptyCopy);\n};\n\nexport const versionLocaleMatchState = (\n currentLocale: LOCALE,\n currentVersionLocale: TStateProgressionRoomVersionLocale,\n stateVersionLocales: TStateProgressionRoomVersionLocales\n) => {\n return (\n !!stateVersionLocales[currentLocale] &&\n isEqual(currentVersionLocale, stateVersionLocales[currentLocale])\n );\n};\n\nexport const removeEmptyFromStateLocales = (\n currentLocale: LOCALE,\n currentVersionLocale: TStateProgressionRoomVersionLocale,\n stateVersionLocales: TStateProgressionRoomVersionLocales\n) => {\n const isCurrentVersionLocaleSameAsInitialState = versionLocaleMatchInitialState(\n currentLocale,\n currentVersionLocale\n );\n\n if (\n currentLocale !== LOCALE.EN &&\n isCurrentVersionLocaleSameAsInitialState &&\n stateVersionLocales[currentLocale]\n ) {\n let newRoomVersionLocales = cloneDeep(stateVersionLocales);\n delete newRoomVersionLocales[currentLocale];\n\n return newRoomVersionLocales;\n }\n\n return null;\n};\n","/**\n * function taken from the progression-room-service used to parse out developer keys\n * from a given text\n * @param text value to parse out the developer key from\n * @returns a list of the developer keys present in the text\n */\nexport const extractDeveloperKeyFromInput = (text: string | undefined | null): string[] => {\n const keys: string[] = [];\n\n // this regex is parsing for values wrapped in ${<>} where <> is a string of N number of characters where N >= 1\n const regex = /\\$\\{([^}{]+)\\}/g;\n\n if (text === undefined || text === null) {\n return keys;\n }\n\n let parsed = regex.exec(text);\n\n while (parsed !== null) {\n keys.push(parsed[1]);\n\n parsed = regex.exec(text);\n }\n\n return keys;\n};\n","import { ENVIRONMENT } from '@app/common/constants';\nimport {\n IGameProgressionRoomVersions,\n TGameProgressionRooms,\n TGameProgressionRoomVersionMappings,\n} from '@appEntryPoints/common/interfaces';\n\nexport const extractLatestEnvRoomVersionId = (\n env: ENVIRONMENT,\n reduxProgressionRoomVersionMapping: TGameProgressionRoomVersionMappings,\n roomIdentifier: string\n) => {\n const progressionRoomVersionMapping = reduxProgressionRoomVersionMapping[roomIdentifier];\n\n if (!progressionRoomVersionMapping) {\n return null;\n }\n\n const envRoomVersionIds = progressionRoomVersionMapping[env].roomVersionIds;\n\n return envRoomVersionIds[0] ?? null;\n};\n\nexport const extractCurrentRoomId = (\n env: ENVIRONMENT,\n reduxProgressionRooms: TGameProgressionRooms,\n roomIdentifier: string\n) => {\n const progressionRoom = reduxProgressionRooms[roomIdentifier];\n\n if (!progressionRoom) {\n return null;\n }\n\n return progressionRoom[env].id;\n};\n\nexport const extractRoomName = (\n reduxProgressionRooms: TGameProgressionRooms,\n roomIdentifier: string\n) => {\n return reduxProgressionRooms[roomIdentifier]?.production.name ?? 'N/A';\n};\n\nexport const extractCurrentVersion = (\n env: ENVIRONMENT,\n progressionRoomVersionMappings: TGameProgressionRoomVersionMappings,\n progressionRoomVersions: IGameProgressionRoomVersions,\n roomIdentifier: string\n): string | null => {\n const latestVersionId = extractLatestEnvRoomVersionId(\n env,\n progressionRoomVersionMappings,\n roomIdentifier\n );\n\n if (!latestVersionId) return null;\n\n return progressionRoomVersions[env][latestVersionId]?.versionNumber ?? null;\n};\n","import { LOCALE } from '@app/common/constants';\nimport {\n TStateProgressionRoomVersionLocales,\n TStateProgressionRoomVersionLocale,\n TProgressionRoomVersionPublish,\n} from '@appEntryPoints/common/interfaces';\n\nimport { convertConditionsIntoFormData } from '.';\n\nexport function generateProductionProgressionRoomVersionFormData(\n progressionRoomVersion: TProgressionRoomVersionPublish\n): FormData {\n const form = new FormData();\n\n form.append(`progression_room[version_number]`, progressionRoomVersion.versionNumber);\n\n progressionRoomVersion.locales.forEach((locale, localeIdx) => {\n form.append(`progression_room[locales][${localeIdx}][locale]`, locale.locale);\n\n // name & titles\n form.append(`progression_room[locales][${localeIdx}][room_name]`, locale.roomName);\n form.append(`progression_room[locales][${localeIdx}][header_title]`, locale.headerTitle);\n form.append(\n `progression_room[locales][${localeIdx}][header_subtitle1]`,\n locale.headerSubtitle1\n );\n\n if (locale.headerSubtitle2) {\n form.append(\n `progression_room[locales][${localeIdx}][header_subtitle2]`,\n locale.headerSubtitle2\n );\n }\n\n // colors\n form.append(\n `progression_room[locales][${localeIdx}][header_font_color1]`,\n locale.headerFontColor1\n );\n form.append(\n `progression_room[locales][${localeIdx}][header_font_color2]`,\n locale.headerFontColor2\n );\n\n form.append(\n `progression_room[locales][${localeIdx}][header_color][render_type]`,\n locale.headerColor.renderType\n );\n\n form.append(\n `progression_room[locales][${localeIdx}][header_color][colors][0]`,\n locale.headerColor.colors[0]\n );\n form.append(\n `progression_room[locales][${localeIdx}][header_color][colors][1]`,\n locale.headerColor.colors[1]\n );\n\n // images\n form.append(`progression_room[locales][${localeIdx}][room_icon]`, locale.roomIcon);\n\n if (locale.headerBadge) {\n form.append(`progression_room[locales][${localeIdx}][header_badge]`, locale.headerBadge);\n }\n\n if (locale.headerImage) {\n form.append(`progression_room[locales][${localeIdx}][header_image]`, locale.headerImage);\n }\n\n // body images\n const lastIndex = locale.bodyImages.length - 1;\n locale.bodyImages.forEach((bodyImage, bodyImageIdx) => {\n form.append(\n `progression_room[locales][${localeIdx}][body_images][${bodyImageIdx}][url]`,\n bodyImage.url\n );\n\n if (bodyImageIdx < lastIndex && !!bodyImage.condition) {\n const conditions = convertConditionsIntoFormData(bodyImage.condition);\n const bodyImageKey = `progression_room[locales][${localeIdx}][body_images][${bodyImageIdx}][condition]`;\n\n conditions.forEach(({ formDataStr, value }) => {\n form.append(`${bodyImageKey}${formDataStr}`, value);\n });\n }\n });\n });\n\n return form;\n}\n\nexport function generateSandboxProgressionRoomVersionFormData(\n progressionRoomVersionState: TStateProgressionRoomVersionLocales,\n versionNumber: string\n): FormData {\n let form: FormData = new FormData();\n form.append(`progression_room[version_number]`, versionNumber);\n (Object.keys(progressionRoomVersionState) as LOCALE[]).forEach((locale, localeIndex) => {\n const versionLocale = progressionRoomVersionState[locale] as TStateProgressionRoomVersionLocale;\n form.append(`progression_room[locales][${localeIndex}][locale]`, versionLocale.locale);\n form.append(`progression_room[locales][${localeIndex}][room_name]`, versionLocale.roomName);\n form.append(\n `progression_room[locales][${localeIndex}][room_icon]`,\n versionLocale.roomIconFile ? versionLocale.roomIconFile : versionLocale.roomIcon\n );\n form.append(\n `progression_room[locales][${localeIndex}][header_title]`,\n versionLocale.headerTitle\n );\n form.append(\n `progression_room[locales][${localeIndex}][header_subtitle1]`,\n versionLocale.headerSubtitle1\n );\n if (versionLocale.headerSubtitle2) {\n form.append(\n `progression_room[locales][${localeIndex}][header_subtitle2]`,\n versionLocale.headerSubtitle2\n );\n }\n form.append(\n `progression_room[locales][${localeIndex}][header_font_color1]`,\n versionLocale.headerFontColor1\n );\n form.append(\n `progression_room[locales][${localeIndex}][header_font_color2]`,\n versionLocale.headerFontColor2\n );\n if (versionLocale.headerBadge || versionLocale.headerBadgeFile) {\n form.append(\n `progression_room[locales][${localeIndex}][header_badge]`,\n versionLocale.headerBadgeFile ? versionLocale.headerBadgeFile : versionLocale.headerBadge\n );\n }\n if (versionLocale.headerImage || versionLocale.headerImageFile) {\n form.append(\n `progression_room[locales][${localeIndex}][header_image]`,\n versionLocale.headerImageFile ? versionLocale.headerImageFile : versionLocale.headerImage\n );\n }\n form.append(\n `progression_room[locales][${localeIndex}][header_color][render_type]`,\n versionLocale.headerColor.renderType\n );\n form.append(\n `progression_room[locales][${localeIndex}][header_color][colors][0]`,\n versionLocale.headerColor.colors[0]\n );\n form.append(\n `progression_room[locales][${localeIndex}][header_color][colors][1]`,\n versionLocale.headerColor.colors[1]\n );\n\n if (!!versionLocale.defaultBodyImage.url) {\n const fullBodyImages = versionLocale.bodyImagesWithCondition.concat([\n versionLocale.defaultBodyImage,\n ]);\n const lastIndex = fullBodyImages.length - 1;\n\n fullBodyImages.forEach((bodyImage, bodyImageIndex) => {\n if (!!bodyImage.file) {\n form.append(\n `progression_room[locales][${localeIndex}][body_images][${bodyImageIndex}][file]`,\n bodyImage.file\n );\n } else {\n form.append(\n `progression_room[locales][${localeIndex}][body_images][${bodyImageIndex}][url]`,\n bodyImage.url\n );\n form.append(\n `progression_room[locales][${localeIndex}][body_images][${bodyImageIndex}][mime_type]`,\n bodyImage.mimeType\n );\n }\n\n if (bodyImageIndex < lastIndex && !!bodyImage.condition) {\n const conditions = convertConditionsIntoFormData(bodyImage.condition);\n const bodyImageKey = `progression_room[locales][${localeIndex}][body_images][${bodyImageIndex}][condition]`;\n\n conditions.forEach(({ formDataStr, value }) => {\n form.append(`${bodyImageKey}${formDataStr}`, value);\n });\n }\n });\n }\n });\n\n return form;\n}\n","import { IProgressionRoomVersion } from '@appEntryPoints/common/interfaces';\n\nexport const determineNextSandboxVersionNumber = (\n latestSandboxVersion: IProgressionRoomVersion | null,\n latestProdVersion: IProgressionRoomVersion | null\n) => {\n // case 1: 0.1 for first sandbox version number\n if (!latestSandboxVersion) {\n return '0.1';\n }\n\n const sandboxVersionNumbers = latestSandboxVersion.versionNumber.split('.');\n\n // case 2: increase major version when sandbox version major version = prod major version\n // if sandbox major version is < prod major then start off clean, since that's corrupt data\n if (\n !!latestProdVersion &&\n sandboxVersionNumbers[0] <= latestProdVersion.versionNumber.split('.')[0]\n ) {\n return `${Number(latestProdVersion.versionNumber.split('.')[0]) + 1}.0`;\n }\n\n // case 3: increase minor version when sandbox version major version > prod major version\n return `${sandboxVersionNumbers[0]}.${Number(sandboxVersionNumbers[1]) + 1}`;\n};\n","import { ONE_KB_IN_BYTES, ONE_MB_IN_BYTES } from '@app/common/helpers';\nimport { IStateProgressionRoomVersionLocaleBodyImage } from '@appEntryPoints/common/interfaces';\n\nexport const imageRequirements = {\n roomIcon: {\n extensions: ['png', 'jpg', 'jpeg', 'svg'],\n sizeInKb: 20,\n resolution: '40x40px',\n },\n headerBadge: {\n extensions: ['png', 'jpg', 'jpeg', 'svg'],\n sizeInKb: 20,\n resolution: '100x100px',\n },\n headerImage: {\n extensions: ['png', 'jpg', 'jpeg'],\n sizeInKb: 100,\n resolution: '700x140px',\n },\n};\n\nconst getImageRegexFromExtensions = (extensions: string[]): RegExp => {\n const str = `image/(${extensions.join('|')})`;\n\n return new RegExp(str);\n};\n\nconst generateRequirementsForImage = (imageFor: string) => {\n const result = imageFor.replace(/([A-Z])/g, ' $1');\n const imageFieldName =\n imageFor === 'roomIcon' ? 'Entry Point Icon' : result.charAt(0).toUpperCase() + result.slice(1);\n\n if (imageFor in imageRequirements) {\n const requirement = imageRequirements[imageFor as keyof typeof imageRequirements];\n\n return {\n maxSize: requirement.sizeInKb * ONE_KB_IN_BYTES,\n fileTypeRegex: getImageRegexFromExtensions(requirement.extensions),\n errorMessage: `The '${imageFieldName}' image needs to be ${requirement.extensions\n .join(', ')\n .toUpperCase()}. The image also needs to be less than or equal to ${\n requirement.sizeInKb\n }KB. Please try again with a different image.`,\n };\n }\n\n const regexBodyImage = /(image\\/(png|jpe?g|gif))|(video\\/mp4)/;\n\n return {\n maxSize: ONE_MB_IN_BYTES,\n fileTypeRegex: regexBodyImage,\n errorMessage: `The '${imageFieldName}' image needs to be PNG, JPG, JPEG, MP4, or GIF file types. The image also needs to be less than or equal to 1MB. Please try again with a different image.`,\n };\n};\n\nexport const imageSizeValidation = (imageFor: string, image: File) => {\n const requirement = generateRequirementsForImage(imageFor);\n const isFileValid =\n image.size <= requirement.maxSize && requirement.fileTypeRegex.test(image.type);\n\n return {\n isFileValid,\n errorMessage: isFileValid ? '' : requirement.errorMessage,\n };\n};\n\nexport const formatBodyImageDisplayName = (\n bodyImage: IStateProgressionRoomVersionLocaleBodyImage\n): string => {\n return bodyImage.file ? bodyImage.file.name : extractFileNameFromS3Url(bodyImage.url);\n};\n\nexport const formatEntryPointImageDisplayName = (file: File | null, s3Url: string): string => {\n return file ? file.name : extractFileNameFromS3Url(s3Url);\n};\n\nconst extractFileNameFromS3Url = (url: string): string => {\n // progression s3 url - look at the tests for examples of possible URL formats\n const tempString = url?.split('/').pop() ?? '';\n const lastIndexOfDash = tempString.lastIndexOf('-');\n const extension = tempString.split('.').pop();\n\n // get the part before the last '-' and add the extension to get the filename\n return lastIndexOfDash > 0 && extension\n ? `${tempString.substr(0, lastIndexOfDash)}.${extension}`\n : tempString;\n};\n","import cloneDeep from 'lodash/cloneDeep';\nimport merge from 'lodash/merge';\n\nimport {\n IProgressionRoomVersionLocale,\n TStateProgressionRoomVersionLocale,\n IStateProgressionRoomVersionLocaleBodyImage,\n} from '@appEntryPoints/common/interfaces';\n// import {\n// initialBaseBodyImages,\n// initialBaseVersionLocaleFiles,\n// } from '../modules/EntryPoint/constants';\nimport {\n initialBaseBodyImages,\n initialBaseVersionLocaleFiles,\n} from '@appGameProgression/modules/EntryPoints/modules/EntryPoint/constants';\n\nexport const formatResponseLocaleToLocaleState = (\n responseVersionLocale: IProgressionRoomVersionLocale\n): TStateProgressionRoomVersionLocale => {\n const { bodyImages, ...versionLocaleWithoutBodyImages } = responseVersionLocale;\n\n let bodyImagesState = initialBaseBodyImages;\n const bodyImagesCount = bodyImages.length;\n\n const formattedBodyImages = bodyImages.map((bodyImage) => {\n return { ...bodyImage, file: null };\n });\n\n if (bodyImagesCount === 1) {\n bodyImagesState = {\n defaultBodyImage: formattedBodyImages[0],\n bodyImagesWithCondition: initialBaseBodyImages.bodyImagesWithCondition,\n };\n }\n\n // default Image body is last element of bodyImages with no conditions\n if (bodyImagesCount > 1) {\n const bodyImagesCopy = cloneDeep(formattedBodyImages);\n const defaultBodyImage = bodyImagesCopy.pop() as IStateProgressionRoomVersionLocaleBodyImage;\n bodyImagesState = {\n defaultBodyImage,\n bodyImagesWithCondition: bodyImagesCopy,\n };\n }\n\n return merge(\n {} as TStateProgressionRoomVersionLocale,\n initialBaseVersionLocaleFiles,\n versionLocaleWithoutBodyImages,\n bodyImagesState\n );\n};\n","import {\n IProgressionRoomVersionLocale,\n IResponseProgressionRoomVersionLocale,\n TBaseOperand,\n TCondition,\n TRoomCondition,\n} from '@appEntryPoints/common/interfaces';\nimport {\n OPERATORS,\n OPERATORS_OTHER,\n} from '@appGameProgression/modules/EntryPoints/common/constants';\n\nexport const formatLocalesBodyImagesConditions = (\n locales: IResponseProgressionRoomVersionLocale[]\n): IProgressionRoomVersionLocale[] => {\n const formattedLocales = locales.map((locale) => {\n const { bodyImages, ...rest } = locale;\n\n const formattedBodyImage = bodyImages.map(({ url, mimeType, condition }) => {\n let formattedCondition = condition ? flattenAndRoomCondition(condition, []) : null;\n\n return {\n url,\n mimeType,\n condition: formattedCondition,\n };\n });\n\n return {\n ...rest,\n bodyImages: formattedBodyImage,\n };\n });\n\n return formattedLocales;\n};\n\nexport const flattenAndRoomCondition = (\n conditions: TRoomCondition,\n acc: TCondition[]\n): TCondition[] => {\n const isObject: boolean =\n !!conditions && typeof conditions === 'object' && conditions.constructor === Object;\n\n if (isObject) {\n if (conditions?.[OPERATORS_OTHER.AND]) {\n const formattedCondition = conditions[OPERATORS_OTHER.AND] as TCondition[];\n const formattedCondition1 = flattenAndRoomCondition(formattedCondition[0], []);\n const formattedCondition2 = flattenAndRoomCondition(formattedCondition[1], []);\n\n return acc.concat(formattedCondition1.concat(formattedCondition2));\n }\n\n acc.push(conditions as TCondition);\n }\n\n return acc;\n};\n\nexport const convertArrayIntoFormDataBase = (\n baseConditionHelper: (item: T, acc: string) => G[],\n items: T[],\n accAddOnKey: string,\n acc: string = ''\n): G[] => {\n if (items.length === 0) {\n return [];\n }\n\n if (items.length === 1) {\n return baseConditionHelper(items[0], acc);\n }\n\n let halfIndex = Math.ceil(items.length / 2);\n\n const firstHalf = convertArrayIntoFormDataBase(\n baseConditionHelper,\n items.slice(0, halfIndex), // halfIndex non-inclusive\n accAddOnKey,\n `${acc}[${accAddOnKey}][0]`\n );\n const secondHalf = convertArrayIntoFormDataBase(\n baseConditionHelper,\n items.slice(halfIndex), // halfIndex as start\n accAddOnKey,\n `${acc}[${accAddOnKey}][1]`\n );\n\n return firstHalf.concat(secondHalf);\n};\n\ninterface IFormDataKeyValue {\n formDataStr: string;\n value: string;\n}\n\nexport const convertSingleConditionIntoFormData = (\n condition: TCondition,\n acc: string\n): IFormDataKeyValue[] => {\n if (Object.keys(condition).length === 0) {\n return [];\n }\n\n const conditionKey = Object.keys(condition)[0] as OPERATORS;\n const conditionValues = Object.values(condition)[0] as [TBaseOperand, TBaseOperand];\n\n return conditionValues.map((value, index) => {\n return {\n formDataStr: `${acc}[${conditionKey}][${index}]`,\n value,\n };\n });\n};\n\nexport const convertConditionsIntoFormData = (\n conditions: TCondition[],\n acc: string = ''\n): IFormDataKeyValue[] => {\n const accAddOnKey = OPERATORS_OTHER.AND;\n\n return convertArrayIntoFormDataBase(\n convertSingleConditionIntoFormData,\n conditions,\n accAddOnKey,\n acc\n );\n};\n","import { TGameProgressionRooms } from '@appEntryPoints/common/interfaces';\n\nexport const extractGameBinaryMappedRoom = (\n gameBinaryId: number,\n reduxProgressionRooms: TGameProgressionRooms\n) => {\n const result = Object.entries(reduxProgressionRooms).map(([roomIdentifier, { production }]) => {\n const versionMappedToBinary = production.versions.find(({ gameBinaryIds }) => {\n return gameBinaryIds.includes(gameBinaryId.toString());\n });\n\n return versionMappedToBinary ? { roomIdentifier, versionMappedToBinary } : null;\n });\n\n return result.find((item) => !!item);\n};\n","import { LOCALE, SORT_DIRECTION } from '@app/common/constants';\nimport {\n IBodyImagesWithConditionValidation,\n TCondition,\n IProgressionRoomVersionBodyImages,\n IProgressionRoomVersionLocaleFiles,\n IStateProgressionRoomVersionLocaleBodyImage,\n TStateProgressionRoomVersionLocale,\n} from '@appEntryPoints/common/interfaces';\nimport { GAME_BUILD_STATUS } from '@appGameHome/modules/GameBuild/constants';\nimport { IGameBuildIndexParams } from '@appGameHome/modules/GameBuild/interfaces';\nimport { TABLE_SORT_ATTRIBUTES } from '@appGameHome/modules/GameBuild/modules/GameBuildsTable/constants';\nimport { OPERATORS } from '@appGameProgression/modules/EntryPoints/common/constants/condition';\nimport { IProgressionRoomValidation } from '@appGameProgression/modules/EntryPoints/modules/EntryPoint/interfaces';\n\nexport const supportImageTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/svg+xml'];\nexport const supportImageTypesBodyImage = supportImageTypes.concat(['video/mp4', 'image/gif']);\n\nexport const initialBaseVersionLocaleFiles: IProgressionRoomVersionLocaleFiles = {\n roomIconFile: null,\n headerImageFile: null,\n headerBadgeFile: null,\n};\n\nexport const initialBaseBodyImages: IProgressionRoomVersionBodyImages = {\n defaultBodyImage: {\n condition: null,\n url: '',\n file: null,\n mimeType: '',\n },\n bodyImagesWithCondition: [] as IStateProgressionRoomVersionLocaleBodyImage[],\n};\n\nexport const initialRoomVersionLocaleState = (\n locale: LOCALE\n): TStateProgressionRoomVersionLocale => {\n return {\n ...initialBaseVersionLocaleFiles,\n ...initialBaseBodyImages,\n locale,\n roomIcon: '',\n roomName: '',\n headerTitle: '',\n headerSubtitle1: '',\n headerSubtitle2: '',\n headerFontColor1: '#F2F2F2',\n headerFontColor2: '#FFDD66',\n headerBadge: '',\n headerImage: '',\n headerColor: {\n renderType: 'gradient',\n colors: ['#343434', '#8C8C8C'],\n },\n };\n};\n\nexport const initialValidations: IProgressionRoomValidation = {\n headerFontColor1: { status: true, error: '' },\n headerFontColor2: { status: true, error: '' },\n backgroundColorLeft: { status: true, error: '' },\n backgroundColorRight: { status: true, error: '' },\n};\n\nexport const ENTRY_POINT_CSS_PREFIX = 'entry-point';\n\nexport const headerFontColor1Swatches = ['#E5F3FE', '#710000', '#02005D', '#000000'];\nexport const headerFontColor2Swatches = ['#006C2B', '#FFD9C3', '#390066', '#000000'];\nexport const headerColorLeftSwatches = ['#548D21', '#FFD0AF', '#EFECFF', '#FAEA99'];\nexport const headerColorRightSwatches = ['#9ECE5B', '#FF753A', '#A8A8F6', '#DCAB00'];\n\nexport const emptyConditionState = (developerKey: string): TCondition => {\n return ({ [OPERATORS.EQ]: ['${' + `${developerKey}` + '}', ''] } as unknown) as TCondition;\n};\n\nexport const emptyConditionValidation: IBodyImagesWithConditionValidation[] = [\n {\n value: [{ status: true, error: '' }],\n },\n];\n\nexport const comparisonOperators = {\n [OPERATORS.GT]: 'More than',\n [OPERATORS.LT]: 'Less than',\n [OPERATORS.GTE]: 'More than or equal to',\n [OPERATORS.LTE]: 'Less than or equal to',\n [OPERATORS.EQ]: 'Equal to',\n};\n\nexport const defaultGameBuildFetchParams: IGameBuildIndexParams = {\n uploadStatus: GAME_BUILD_STATUS.COMPLETE,\n sortAttribute: TABLE_SORT_ATTRIBUTES.CREATED_AT,\n sortDirection: SORT_DIRECTION.DESC,\n offset: 0,\n limit: 30,\n};\n\nexport enum FIELDS_OF_TSTATE_LOCAL {\n BODY_IMAGES_WITH_CONDITION = 'bodyImagesWithCondition',\n DEFAULT_BDY_IMAGE = 'defaultBodyImage',\n HEADER_SUBTITLE_2 = 'headerSubtitle2',\n\n // part of the required fields\n ROOM_NAME = 'roomName',\n ROOM_ICON = 'roomIcon',\n HEADER_TITLE = 'headerTitle',\n HEADER_SUBTITLE_1 = 'headerSubtitle1',\n HEADER_FONT_COLOR_1 = 'headerFontColor1',\n HEADER_FONT_COLOR_2 = 'headerFontColor2',\n HEADER_COLOR = 'headerColor',\n}\n\nexport const localeFieldsToValidate: (keyof TStateProgressionRoomVersionLocale)[] = [\n 'roomName',\n 'headerTitle',\n 'headerSubtitle1',\n 'headerSubtitle2',\n 'bodyImagesWithCondition',\n];\n\nexport const allRequiredFieldsToValidate: (keyof TStateProgressionRoomVersionLocale)[] = [\n 'roomName',\n 'headerTitle',\n 'roomIcon',\n 'headerSubtitle1',\n 'headerFontColor1',\n 'headerFontColor2',\n 'headerColor',\n];\n","import { LOCALE, SORT_DIRECTION } from '@app/common/constants';\nimport {\n IBodyImagesWithConditionValidation,\n IProgressionRoomVersionBodyImages,\n IProgressionRoomVersionLocaleFiles,\n IStateProgressionRoomVersionLocaleBodyImage,\n TCondition,\n TStateProgressionRoomVersionLocale,\n} from '@appEntryPoints/common/interfaces';\nimport { GAME_BUILD_STATUS } from '@appGameHome/modules/GameBuild/constants';\nimport { IGameBuildIndexParams } from '@appGameHome/modules/GameBuild/interfaces';\nimport { TABLE_SORT_ATTRIBUTES } from '@appGameHome/modules/GameBuild/modules/GameBuildsTable/constants';\nimport { OPERATORS } from '@appGameProgression/modules/EntryPoints/common/constants/condition';\n\nimport { IProgressionRoomValidation } from './interfaces';\n\nexport const supportImageTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/svg+xml'];\nexport const supportImageTypesBodyImage = supportImageTypes.concat(['video/mp4', 'image/gif']);\n\nexport const emptyConditionState = (developerKey: string): TCondition => {\n return ({ [OPERATORS.EQ]: ['${' + `${developerKey}` + '}', ''] } as unknown) as TCondition;\n};\n\nexport const emptyConditionValidation: IBodyImagesWithConditionValidation[] = [\n {\n value: [{ status: true, error: '' }],\n },\n];\n\nexport const initialBaseVersionLocaleFiles: IProgressionRoomVersionLocaleFiles = {\n roomIconFile: null,\n headerImageFile: null,\n headerBadgeFile: null,\n};\n\nexport const initialBaseBodyImages: IProgressionRoomVersionBodyImages = {\n defaultBodyImage: {\n condition: null,\n url: '',\n file: null,\n mimeType: '',\n },\n bodyImagesWithCondition: [] as IStateProgressionRoomVersionLocaleBodyImage[],\n};\n\nexport const initialRoomVersionLocaleState = (\n locale: LOCALE\n): TStateProgressionRoomVersionLocale => {\n return {\n ...initialBaseVersionLocaleFiles,\n ...initialBaseBodyImages,\n locale,\n roomIcon: '',\n roomName: '',\n headerTitle: '',\n headerSubtitle1: '',\n headerSubtitle2: '',\n headerFontColor1: '#F2F2F2',\n headerFontColor2: '#FFDD66',\n headerBadge: '',\n headerImage: '',\n headerColor: {\n renderType: 'gradient',\n colors: ['#343434', '#8C8C8C'],\n },\n };\n};\n\nexport const defaultGameBuildFetchParams: IGameBuildIndexParams = {\n uploadStatus: GAME_BUILD_STATUS.COMPLETE,\n sortAttribute: TABLE_SORT_ATTRIBUTES.CREATED_AT,\n sortDirection: SORT_DIRECTION.DESC,\n offset: 0,\n limit: 30,\n};\n\nexport const comparisonOperators = {\n [OPERATORS.GT]: 'More than',\n [OPERATORS.LT]: 'Less than',\n [OPERATORS.GTE]: 'More than or equal to',\n [OPERATORS.LTE]: 'Less than or equal to',\n [OPERATORS.EQ]: 'Equal to',\n};\n\nexport const INVALID_HEX_CODE_ERROR =\n 'Must be a 6 character hex code starting with # (ie: #FFFFFF)';\n\nexport const initialValidations: IProgressionRoomValidation = {\n headerFontColor1: { status: true, error: '' },\n headerFontColor2: { status: true, error: '' },\n backgroundColorLeft: { status: true, error: '' },\n backgroundColorRight: { status: true, error: '' },\n};\n\nexport const headerFontColor1Swatches = ['#F2F2F2', '#E5F3FE', '#710000', '#02005D', '#000000'];\nexport const headerFontColor2Swatches = ['#FFDD66', '#006C2B', '#FFD9C3', '#390066', '#000000'];\nexport const headerColorLeftSwatches = ['#1F64C6', '#548D21', '#FFD0AF', '#EFECFF', '#FAEA99'];\nexport const headerColorRightSwatches = ['#36ABFF', '#9ECE5B', '#FF753A', '#A8A8F6', '#DCAB00'];\n","import { CaseReducer, createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport { fetchProgressionRoomVersions } from '@appGameHome/common/actions';\n\nimport {\n TGameProgressionRoomVersionMappings,\n IProgressionRoomVersion,\n} from '../../common/interfaces';\n\nconst defaultSingleRoomState = {\n sandbox: { roomVersionIds: [] as string[] },\n production: { roomVersionIds: [] as string[] },\n};\n\ninterface IReducerPayload {\n env: ENVIRONMENT;\n items: T[];\n totalCount: number;\n currentRoomIdentifier?: string;\n}\n\ntype TProgressionRoomReducer = IProgressionRoomVersion;\n\ninterface IReducerGenerator {\n (): CaseReducer<\n TGameProgressionRoomVersionMappings,\n PayloadAction>\n >;\n}\n\nconst createProgressionRoomVersionMappingReducer: IReducerGenerator = <\n T extends TProgressionRoomReducer\n>() =>\n function fulfilledProgressionRoomVersionFetchActionReducer(\n state: TGameProgressionRoomVersionMappings,\n action: PayloadAction>\n ) {\n const { env } = action.payload;\n const currentRoomIdentifier = action.payload.currentRoomIdentifier;\n\n switch (action.type) {\n case fetchProgressionRoomVersions.fulfilled.type:\n const roomVersionIds = (action.payload.items as IProgressionRoomVersion[]).map(\n ({ id }) => id\n );\n\n if (!!currentRoomIdentifier) {\n if (!state[currentRoomIdentifier]) {\n state[currentRoomIdentifier] = {\n ...defaultSingleRoomState,\n [env]: { roomVersionIds },\n };\n } else {\n state[currentRoomIdentifier][env].roomVersionIds = roomVersionIds;\n }\n }\n\n break;\n default:\n state = {} as TGameProgressionRoomVersionMappings;\n break;\n }\n };\n\nconst initialState = {} as TGameProgressionRoomVersionMappings;\n\ninterface IMappingDelete {\n payload: string;\n type: string;\n}\n\nconst progressionRoomVersionMappings = createSlice({\n name: 'progressionRoomVersionMappings',\n initialState,\n reducers: {\n reset: () => initialState,\n deleteMappings: (state, { payload }: IMappingDelete) => {\n delete state[payload];\n },\n },\n extraReducers: (builder) => {\n builder.addCase(\n fetchProgressionRoomVersions.fulfilled,\n createProgressionRoomVersionMappingReducer()\n );\n\n builder.addCase(fetchProgressionRoomVersions.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport const { deleteMappings: deleteProgressionRoomVersionMappings } =\n progressionRoomVersionMappings.actions;\nexport default progressionRoomVersionMappings.reducer;\n","import { CaseReducer, createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nimport { ENVIRONMENT } from '@app/common/constants';\nimport { fetchProgressionRoomMappings, fetchProgressionRooms } from '@appGameHome/common/actions';\n\nimport {\n TGameProgressionRooms,\n IResponseProgressionRoom,\n IProgressionRoom,\n IResponseProgressionRoomVersionBinaryMapping,\n} from './common/interfaces';\n\nconst defaultSingleRoomState = {\n sandbox: {} as IProgressionRoom,\n production: {} as IProgressionRoom,\n};\n\ninterface IReducerPayload {\n env: ENVIRONMENT;\n items: T[];\n totalCount: number;\n currentRoomIdentifier?: string;\n}\n\ntype TProgressionRoomReducer =\n | IResponseProgressionRoom\n | IResponseProgressionRoomVersionBinaryMapping;\n\ninterface IReducerGenerator {\n (): CaseReducer<\n TGameProgressionRooms,\n PayloadAction>\n >;\n}\n\nconst createProgressionRoomReducer: IReducerGenerator = () =>\n function fulfilledProgressionRoomFetchActionReducer(\n state: TGameProgressionRooms,\n action: PayloadAction>\n ) {\n const { env } = action.payload;\n const currentRoomIdentifier = action.payload.currentRoomIdentifier;\n\n switch (action.type) {\n case fetchProgressionRooms.fulfilled.type:\n (action.payload.items as IResponseProgressionRoom[]).forEach((room) => {\n const roomIdentifier = room.roomIdentifier;\n const formattedRoom = { ...room };\n if (!state[roomIdentifier]) {\n state[roomIdentifier] = {\n ...defaultSingleRoomState,\n [env]: formattedRoom,\n };\n } else {\n state[roomIdentifier][env] = formattedRoom;\n }\n });\n break;\n\n case fetchProgressionRoomMappings.fulfilled.type:\n const roomVersionBinaryMappings = action.payload\n .items as IResponseProgressionRoomVersionBinaryMapping[];\n\n if (!!currentRoomIdentifier && state[currentRoomIdentifier]) {\n // [env] will always be production\n state[currentRoomIdentifier][env].versions = roomVersionBinaryMappings;\n }\n\n break;\n default:\n state = {} as TGameProgressionRooms;\n break;\n }\n };\n\nconst initialState = {} as TGameProgressionRooms;\n\nconst progressionRooms = createSlice({\n name: 'progressionRooms',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder.addCase(\n fetchProgressionRooms.fulfilled,\n createProgressionRoomReducer()\n );\n\n builder.addCase(fetchProgressionRooms.rejected, (_, action) => {\n throw action.error;\n });\n\n builder.addCase(\n fetchProgressionRoomMappings.fulfilled,\n createProgressionRoomReducer()\n );\n\n builder.addCase(fetchProgressionRoomMappings.rejected, (_, action) => {\n throw action.error;\n });\n },\n});\n\nexport const { reset: resetProgressionRooms } = progressionRooms.actions;\nexport default progressionRooms.reducer;\n","import { TSeasonStatus, ISeason } from './interfaces';\n\nexport const seasonStatusNames: Record = {\n active: 'Active',\n upcoming: 'Upcoming Seasons',\n past: 'Past Seasons',\n draft: 'Drafts',\n deleted: 'Deleted',\n // TODO [WS-23372] remove if we decide not to have published/unpublished in the future\n // unpublished: 'Unpublished',\n};\n\n// endpoint will be used to determine active, upcoming, and past seasons\nconst now = new Date('2022-02-01T00:00:00Z');\nconst tomorrow = new Date('2022-02-02T00:00:00Z');\nconst nextMonth = new Date(now.getFullYear(), now.getMonth() + 1, 1);\nconst yesterday = new Date('2022-01-31T00:00:00Z');\nconst lastMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n\nexport const dummySeasons: ISeason[] = [\n {\n id: '0',\n color: '#CC48E8',\n syncedAt: now.toISOString(),\n seasonName: `Chelsea's Summer`,\n seasonIndex: 0,\n startTime: now.toISOString(),\n endTime: nextMonth.toISOString(),\n createdAt: now.toISOString(),\n updatedAt: now.toISOString(),\n deletedAt: now.toISOString(),\n pausedAt: now.toISOString(),\n gameId: '1',\n description: 'Description',\n seasonParams: {},\n isActive: true,\n },\n {\n id: '1',\n color: '#F5992C',\n syncedAt: now.toISOString(),\n seasonName: `Chelsea's Halloween`,\n seasonIndex: 1,\n startTime: tomorrow.toISOString(),\n endTime: nextMonth.toISOString(),\n createdAt: now.toISOString(),\n updatedAt: now.toISOString(),\n deletedAt: now.toISOString(),\n pausedAt: now.toISOString(),\n gameId: '1',\n description: 'Description',\n seasonParams: {},\n isActive: false,\n },\n {\n id: '2',\n color: '#DD6952',\n syncedAt: now.toISOString(),\n seasonName: `Chelsea's Thanksgiving`,\n seasonIndex: 2,\n startTime: tomorrow.toISOString(),\n endTime: nextMonth.toISOString(),\n createdAt: now.toISOString(),\n updatedAt: now.toISOString(),\n deletedAt: now.toISOString(),\n pausedAt: now.toISOString(),\n gameId: '1',\n description: 'Description',\n seasonParams: {},\n isActive: false,\n },\n {\n id: '3',\n color: '#7DB534',\n syncedAt: now.toISOString(),\n seasonName: `St.Patricks Day`,\n seasonIndex: -1,\n startTime: now.toISOString(),\n endTime: nextMonth.toISOString(),\n createdAt: now.toISOString(),\n updatedAt: now.toISOString(),\n deletedAt: now.toISOString(),\n pausedAt: now.toISOString(),\n gameId: '1',\n description: 'Description',\n seasonParams: {},\n isActive: false,\n },\n {\n id: '4',\n color: '#8CBAFF',\n syncedAt: null,\n seasonName: `Chelsea Season Idea`,\n seasonIndex: -2,\n startTime: now.toISOString(),\n endTime: nextMonth.toISOString(),\n createdAt: now.toISOString(),\n updatedAt: now.toISOString(),\n deletedAt: now.toISOString(),\n pausedAt: now.toISOString(),\n gameId: '1',\n description: 'Description',\n seasonParams: {},\n isActive: false,\n },\n];\n\n// not part of dummySeasons because SeasonHome test takes dummySeasons as a whole\nexport const pastSeason = {\n id: '5',\n color: '#FF3939',\n syncedAt: yesterday.toISOString(),\n seasonName: `Chelsea's Summer`,\n seasonIndex: 0,\n startTime: lastMonth.toISOString(),\n endTime: yesterday.toISOString(),\n createdAt: lastMonth.toISOString(),\n updatedAt: lastMonth.toISOString(),\n deletedAt: lastMonth.toISOString(),\n pausedAt: null,\n gameId: '1',\n description: 'Description',\n seasonParams: {},\n isActive: false,\n};\n\nexport const COMPONENT_CLASS_NAME = 'game-home-seasons-tab';\n","import React from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: (event: React.MouseEvent) => void;\n hasBorder?: boolean;\n style?: Record;\n component?: string;\n}\n\nexport const DialogTitleWithCloseButton = ({ hasBorder = true, ...props }: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n \n {children}\n {onClose ? (\n theme.palette.grey[500],\n }}\n >\n \n \n ) : null}\n \n );\n};\n","import React from 'react';\n\nimport './imageCard.scss';\n\ninterface IImageCardProps {\n dataId?: string;\n image: string;\n handleClick: () => void;\n title: string;\n icon: JSX.Element;\n hideGradientOverlay?: boolean;\n}\n\nfunction ImageCard({\n dataId,\n image,\n handleClick,\n title,\n icon,\n hideGradientOverlay,\n}: IImageCardProps): JSX.Element {\n return (\n \n
    \n
    \n {icon}\n {title}\n
    \n
    \n \n );\n}\n\nexport default ImageCard;\n","import React, { useState, PropsWithChildren } from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport Modal from '@mui/material/Modal';\nimport Typography from '@mui/material/Typography';\n\nimport AtomButton from 'portal-common-library/atoms/AtomButton';\n\nimport variables from '@app/core/variables.scss';\n\nimport { COMPONENT_CLASS_NAME } from '../constants';\nimport ImageCard from './ImageCard';\n\nconst VIDEO_COMPONENT_CLASS_NAME = `${COMPONENT_CLASS_NAME}__video-modal`;\n\ninterface IVideoModalPropsWithoutPlaceholder {\n videoTitle: string;\n videoUrl: string;\n}\n\nexport interface IVideoModalProps extends IVideoModalPropsWithoutPlaceholder {\n videoThumbnail: string;\n videoDescription?: string;\n}\n\nconst videoModalStyle = {\n position: 'absolute' as const,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '100%',\n maxWidth: 1152,\n bgcolor: variables.colorWhite,\n boxShadow: 24,\n border: 0,\n aspectRatio: '16 / 9',\n};\n\nfunction renderPlaceholder(\n props: IVideoModalProps | PropsWithChildren\n) {\n if ('children' in props) {\n return props.children;\n }\n\n const { videoTitle, videoThumbnail, videoDescription, videoUrl } = props as IVideoModalProps;\n const shouldShowImageOnly = videoUrl === '';\n\n return (\n <>\n null}\n title={shouldShowImageOnly ? '' : videoTitle}\n icon={shouldShowImageOnly ? <> : }\n hideGradientOverlay={shouldShowImageOnly}\n />\n {videoDescription}\n \n );\n}\n\n// generic version of video modal, used in InteractiveCard\nexport function renderVideoModal(\n isOpen: boolean,\n videoTitle: string,\n handleToggle: () => void,\n videoUrl: string\n): JSX.Element {\n return (\n \n \n \n \n {videoTitle}\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction VideoModal(\n params: IVideoModalProps | PropsWithChildren\n): JSX.Element {\n const { videoTitle, videoUrl } = params;\n const [isOpen, setIsOpen] = useState(false);\n const shouldShowImageOnly = videoUrl === '';\n\n const handleToggle = (): void => {\n if (shouldShowImageOnly) return;\n setIsOpen((prev) => !prev);\n };\n\n return (\n <>\n {renderPlaceholder(params)}\n {renderVideoModal(isOpen, videoTitle, handleToggle, videoUrl)}\n \n );\n}\n\nexport default VideoModal;\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { IAction, TErrorGeneral } from '@app/common/interfaces';\nimport axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\n\nimport { IVerificationDeepLink } from './constants';\n\nexport const DEEP_LINKING = {\n RECEIVE_VERIFICATION: 'deep_linking/RECEIVE_VERIFICATION',\n};\n\nexport const sendDeepLinkTest = (email: string, gameId: number) => {\n const form = new FormData();\n\n form.append('verification[email]', email);\n\n return axios.post(`/verifications/${gameId}/send_test_deep_link`, form);\n};\n\nexport const verifyDeepLinkTest = (match: string, gameId: number) => {\n const form = new FormData();\n\n form.append('verification[deep_link]', match);\n\n return axios.post(`/verifications/${gameId}/verify_deep_link.json`, form);\n};\n\nexport const getVerification = (data: IVerificationDeepLink): IAction => {\n return {\n type: DEEP_LINKING.RECEIVE_VERIFICATION,\n data,\n };\n};\n\nexport const getDeepLinkingVerification = (gameId: number) => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios\n .get(`/verifications/${gameId}/get_deep_link_verification_status.json`)\n .then((response: AxiosResponse) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(getVerification(camelize(response.data)));\n\n return response;\n });\n };\n};\n","import {\n IPlatformKeys,\n IProTournaments,\n IOrientation,\n IWinMetric,\n IFromList,\n IPlatformValues,\n IOrientationValues,\n IWinMetricValues,\n ISkuValues,\n IEntryFeeValues,\n IExistingGameValue,\n IGameAttributes,\n IMissingUrlText,\n IMissingUrl,\n IFieldNames\n} from './interfaces';\n\nconst platformKeys: IPlatformKeys = {\n iOS: 'ios',\n Android: 'android',\n 'Cross Platform': 'cross_platform'\n};\n\nconst proTournaments: IProTournaments = {\n 'Cash And Virtual Currency': 'cash_and_virtual_currency',\n 'Virtual Currency Only': 'virtual_currency_only'\n};\n\nconst orientation: IOrientation = {\n Portrait: 'portrait',\n Landscape: 'landscape'\n};\n\nconst winMetric: IWinMetric = {\n 'Higher Score Wins': 'high_score',\n 'Low Score Wins': 'low_score'\n};\n\nconst skuValues: ISkuValues = {\n Yes: 1,\n No: 0\n};\n\nexport const FORM_LIST: IFromList = {\n platformKeys,\n proTournaments,\n orientation,\n winMetric,\n skuValues\n};\n\nexport const platformValues: IPlatformValues = {\n ios: 'iOS',\n android: 'Android',\n cross_platform: 'Cross Platform'\n};\n\nconst orientationValues: IOrientationValues = {\n portrait: 'Portrait',\n landscape: 'Landscape'\n};\n\nconst winMetricValues: IWinMetricValues = {\n high_score: 'High Score',\n low_score: 'Low Score'\n};\n\nconst entryFeeValues: IEntryFeeValues = {\n cash_and_virtual_currency: 'Cash And Virtual Currency',\n virtual_currency_only: 'Virtual Currency Only'\n};\n\nexport const EXISTING_GAME_VALUE: IExistingGameValue = {\n platformValues,\n orientationValues,\n winMetricValues,\n entryFeeValues\n};\n\nexport const GAME_ATTRIBUTES: IGameAttributes = {\n TITLE: 'Game Title:',\n PLATFORM: 'Game Platform:',\n VC_ONLY: 'Entry Fee Types:',\n IOS_APP_ID: 'Game iOS App ID:',\n IOS_BUNDLE_ID: 'iOS Bundle ID:',\n ANDROID_PACKAGENAME: 'Android Package Name:',\n IOS_STORE_URL: 'iOS Store URL:',\n ANDROID_STORE_URL: 'Skillz Games Portal URL:',\n SAMSUNG_STORE_URL: 'Samsung Store URL:',\n ORIENTATION: 'Game Orientation:',\n WIN_METRIC: 'Win Metric:',\n DESCRIPTION: 'App Description:',\n ICON_URL: 'App Icon',\n GAMEPLAY_SCREENSHOT: 'Tutorial Image'\n};\n\nexport const MISSING_URL_TEXT: IMissingUrlText = {\n IOS: 'How to submit your game to the Apple Store',\n SAMSUNG: 'How to submit your game to the Samsung Galaxy Store',\n ANDROID: 'How to submit your Android game to the Skillz Games Portal'\n};\n\nexport const MISSING_URL: IMissingUrl = {\n IOS: 'https://docs.skillz.com/docs/release-to-ios-app-store/',\n SAMSUNG: 'https://docs.skillz.com/docs/release-to-samsung-galaxy-store/',\n ANDROID: 'https://docs.skillz.com/docs/release-to-skillz-gamer-portal/'\n};\n\nexport const FIELD_NAMES: IFieldNames = {\n ICON: 'icon'\n};\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport {\n IAction,\n TAxiosDispatch,\n TMiddlewareDispatch,\n TAxiosResponse,\n} from '@app/common/interfaces';\nimport axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\n\nimport { IPushNotificationsState, ICertificate, TAndroidRequest } from './interfaces';\n\nfunction formAndroidRequest(state: IPushNotificationsState): TAndroidRequest {\n return {\n key: state.fcm,\n platform: 'android',\n overwrite: state.hasOverwriteAndroid.toString(),\n };\n}\n\nexport enum PUSH_NOTIFICATIONS {\n RECEIVE_CERTIFICATES = 'pushNotifications/RECEIVE_CERTIFICATES',\n}\n\nexport function receiveCertificates(data: ICertificate[]): IAction {\n return {\n type: PUSH_NOTIFICATIONS.RECEIVE_CERTIFICATES,\n data,\n };\n}\n\nexport function fetchNotificationCertificates(gameId: number): TAxiosDispatch {\n return (dispatch: TMiddlewareDispatch): TAxiosResponse => {\n return axios({\n url: `/api/v1/games/${gameId}/notification_certificates`,\n method: 'GET',\n }).then((response: AxiosResponse) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(receiveCertificates(camelize(response.data)));\n\n return response;\n });\n };\n}\n\nexport function updateIosCertificate(\n gameId: number,\n state: IPushNotificationsState\n): TAxiosDispatch {\n return (dispatch: TMiddlewareDispatch): TAxiosResponse => {\n let form: FormData = new FormData();\n\n form.append('notification_certificate[game_id]', gameId.toString());\n if (state.p12) {\n // for ios certificates, there will always be a file\n form.append('notification_certificate[file]', state.p12);\n }\n form.append('notification_certificate[platform]', 'ios');\n form.append('notification_certificate[password]', state.password);\n form.append('notification_certificate[overwrite]', state.hasOverwriteIos.toString());\n\n return axios({\n url: `/api/v1/games/${gameId}/notification_certificates`,\n method: 'POST',\n data: form,\n headers: { 'Content-Type': 'multipart/form-data' },\n }).then((response: AxiosResponse) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(receiveCertificates(camelize(response.data)));\n\n return response;\n });\n };\n}\n\nexport function updateAndroidCertificate(\n gameId: number,\n state: IPushNotificationsState\n): TAxiosDispatch {\n return (dispatch: TMiddlewareDispatch): TAxiosResponse => {\n let androidRequest: TAndroidRequest = formAndroidRequest(state);\n\n return axios({\n url: `/api/v1/games/${gameId}/notification_certificates`,\n method: 'POST',\n data: snakeCaseConverter({ notificationCertificate: androidRequest }),\n }).then((response: AxiosResponse) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(receiveCertificates(camelize(response.data)));\n\n return response;\n });\n };\n}\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { IAction } from '@app/common/interfaces';\nimport axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\n\nexport interface ISingleSignOn {\n prefix: string | null;\n verified: boolean | null;\n}\n\nexport const SINGLE_SIGN_ON = {\n RECEIVE_PREFIX: 'singleSignOn/RECEIVE_PREFIX',\n};\n\nexport const sendSSORequest = (gameId: number, prefix: string) => {\n let form = new FormData();\n form.append('sso[id]', gameId.toString());\n form.append('sso[prefix]', prefix);\n\n return axios.post(`/single_sign_on/${gameId}/send_sso_request.json`, form);\n};\n\nexport const receivePrefix = (data: ISingleSignOn) => {\n return {\n type: SINGLE_SIGN_ON.RECEIVE_PREFIX,\n data,\n };\n};\n\nexport const fetchSSOPrefix = (gameId: number) => (dispatch: Dispatch>) => {\n return axios\n .get(`/single_sign_on/${gameId}/get_sso_prefix.json`)\n .then((response: AxiosResponse) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n dispatch(receivePrefix(camelize(response.data)));\n });\n};\n","import axios, { AxiosResponse } from 'axios';\n\nimport { postRequest } from '@app/common/helpers';\n\nconst checkSdkThemingFf = (): boolean => {\n if (window.appConfig.featureFlags.sdkThemingRevamp) return true;\n\n return false;\n};\n\ninterface IFieldValue {\n description: string;\n type: string;\n values: string;\n image: string;\n}\n\ninterface IGradientFieldValue {\n description: string;\n gradient: string[];\n type: string;\n}\n\ninterface IImageFieldValue {\n description: string;\n type: string;\n value?: string;\n image?: {\n lastModified: number;\n name: string;\n size: number;\n type: string;\n };\n}\n\ninterface IOpacityLevelFieldValue {\n description: string;\n type: string;\n value: number;\n}\nexport interface IJsonBody {\n currencyValues: {\n description: IFieldValue;\n practiceCurrencyString: IFieldValue;\n practiceCurrencyFullIconLargeURI: IFieldValue;\n practiceCurrencySimpleIconURI: IFieldValue;\n };\n end: { value: string };\n enums: {\n sidePanelBlurStyle: IFieldValue;\n };\n statusBarContentStyle: IFieldValue;\n gradients: {\n bracketPrizeViewCashGradient: IGradientFieldValue;\n bracketPrizeViewLiveEventGradient: IGradientFieldValue;\n bracketPrizeViewZGradient: IGradientFieldValue;\n btnGradientOne: IGradientFieldValue;\n btnGradientStore: IGradientFieldValue;\n btnGradientThree: IGradientFieldValue;\n btnGradientTwo: IGradientFieldValue;\n cashIconGradient: IGradientFieldValue;\n description: IGradientFieldValue;\n navigationBarGradient: IGradientFieldValue;\n overlayEntryContainerGradient: IGradientFieldValue;\n playButtonGradient: IGradientFieldValue;\n pointsPrizeGradient: IGradientFieldValue;\n practiceCurrencyIconGradient: IGradientFieldValue;\n prizeViewCashGradient: IGradientFieldValue;\n prizeViewLiveEventGradient: IGradientFieldValue;\n prizeViewTicketzGradient: IGradientFieldValue;\n prizeViewZGradient: IGradientFieldValue;\n profileIconGradient: IGradientFieldValue;\n progressViewDarkGradient: IGradientFieldValue;\n selectedCellBackgroundGradient: IGradientFieldValue;\n sideMenuHighlightedGradient: IGradientFieldValue;\n tauntImageGradient: IGradientFieldValue;\n textCashGradient: IGradientFieldValue;\n textNeutralGradient: IGradientFieldValue;\n textTicketzGradient: IGradientFieldValue;\n textZGradient: IGradientFieldValue;\n excitingBannerGradient: IGradientFieldValue;\n excitingHighlightGradient: IGradientFieldValue;\n primaryRibbonGradient: IGradientFieldValue;\n };\n images: {\n backgroundImage: IImageFieldValue;\n bracketPrizeViewCashImage: IImageFieldValue;\n bracketPrizeViewLiveEventImage: IImageFieldValue;\n bracketPrizeViewZImage: IImageFieldValue;\n prizeViewCashImage: IImageFieldValue;\n prizeViewLiveEventImage: IImageFieldValue;\n prizeViewSyncImage: IImageFieldValue;\n prizeViewTicketzImage: IImageFieldValue;\n prizeViewZImage: IImageFieldValue;\n excitingBannerImage: IImageFieldValue;\n interstitialBackgroundImage: IImageFieldValue;\n };\n opacityLevels: {\n description: string;\n opacityNone: IOpacityLevelFieldValue;\n opacityPrimary: IOpacityLevelFieldValue;\n opacitySecondary: IOpacityLevelFieldValue;\n opacityTertiary: IOpacityLevelFieldValue;\n };\n sheetStyles: Record>;\n start: { value: string };\n version: { SkillzOTAVersion: string | null; description: string; type: string };\n}\n\nexport interface IFetchResponseItem {\n id: string;\n jsonBody: IJsonBody;\n}\n\ninterface IFetchResponseItems {\n items: IFetchResponseItem[];\n}\n\ninterface IUploadedImagesProperties {\n value?: string;\n description: string;\n type: string;\n}\n\nexport interface IUploadedImages {\n backgroundImage: IUploadedImagesProperties;\n bracketPrizeViewCashImage: IUploadedImagesProperties;\n bracketPrizeViewLiveEventImage: IUploadedImagesProperties;\n bracketPrizeViewZImage: IUploadedImagesProperties;\n prizeViewCashImage: IUploadedImagesProperties;\n prizeViewLiveEventImage: IUploadedImagesProperties;\n prizeViewSyncImage: IUploadedImagesProperties;\n prizeViewTicketzImage: IUploadedImagesProperties;\n prizeViewZImage: IUploadedImagesProperties;\n excitingBannerImage: IUploadedImagesProperties;\n interstitialBackgroundImage: IUploadedImagesProperties;\n}\n\nconst oldFetch = (themeId: number, gameId: number): Promise => {\n return axios\n .get(`/themes/${themeId}/find_themes.json?game_id=${gameId}`)\n .then(\n (response: AxiosResponse) => response.data\n ) as unknown as Promise;\n};\n\nconst newFetch = (themeId: number, gameId: number): Promise => {\n if (themeId === 0) {\n return axios\n .get(`/publisher/v1/games/${gameId}/custom_themes`)\n .then((response: AxiosResponse) => response.data)\n .catch(() => {\n return axios\n .get(`/publisher/v1/base_themes`)\n .then((response: AxiosResponse) => response.data.items[0]);\n });\n }\n\n return axios\n .get(`/publisher/v1/base_themes/${themeId}`)\n .then((response: AxiosResponse) => response.data);\n};\n\nexport const getBaseTheme = (themeId: number, gameId: number) => {\n if (checkSdkThemingFf()) {\n return newFetch(themeId, gameId);\n }\n\n return oldFetch(themeId, gameId);\n};\n\nexport const saveBaseTheme = (\n gameId: string,\n jsonBody: IJsonBody,\n themeName: string,\n themeId: string,\n uploadedImages: IUploadedImages\n) => {\n let form = new FormData();\n /* eslint-disable */\n\n // the original params do not have an images key therefore, the k:v pair is deleted and manually placed\n // in with the custom images that the user inputs in the advanced theme. Does not affect base theme.\n\n Object.entries(jsonBody).forEach((entry): boolean | void => {\n if (entry[0] === 'currencyValues') {\n // stringify currency string and parse it in the rails controller to\n // prevent breaking the theme creation\n\n form.append(\n `theme[fields][currencyValues][practiceCurrencyString]`,\n JSON.stringify(entry[1].practiceCurrencyString)\n );\n } else if (entry[0] === 'images') {\n return true;\n } else {\n form.append(`theme[fields][${entry[0]}]`, JSON.stringify(entry[1]));\n }\n });\n\n // uploading the files for custom images field\n\n Object.entries(uploadedImages).forEach((entry) => {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n if (entry[1].image) {\n form.append(`theme[fields][images][${entry[0]}]`, entry[1].image);\n }\n });\n\n // uploading the files for currency values field\n\n Object.entries(jsonBody.currencyValues).forEach((entry) => {\n if (entry[1].image) {\n form.append(`theme[fields][currencyValues][${entry[0]}]`, entry[1].image);\n }\n });\n\n form.append('theme[game_id]', gameId);\n form.append('commit', 'Setup Theme');\n form.append('base_theme_id', themeId);\n form.append('game_id', gameId);\n form.append('name', themeName);\n\n if (!checkSdkThemingFf()) {\n form.append('identifier', 'ivt');\n }\n\n const postUrl = checkSdkThemingFf()\n ? `/publisher/v1/games/${gameId}/custom_themes.json`\n : `/themes`;\n\n return postRequest(postUrl, form);\n};\n\nexport const updateTheme = (\n gameId: string,\n jsonBody: IJsonBody,\n baseThemeId: string,\n themeId: string,\n uploadedImages: IUploadedImages\n) => {\n let form = new FormData();\n\n // the original params do not have an images key therefore, the k:v pair is deleted and manually placed\n // in with the custom images that the user inputs in the advanced theme. Does not affect base theme.\n\n Object.entries(jsonBody).forEach((entry): boolean | void => {\n if (entry[0] === 'currencyValues') {\n // stringify currency string and parse it in the rails controller to\n // prevent breaking the theme creation\n\n form.append(\n `theme[fields][currencyValues][practiceCurrencyString]`,\n JSON.stringify(entry[1].practiceCurrencyString)\n );\n } else if (entry[0] === 'images') {\n return true;\n } else {\n form.append(`theme[fields][${entry[0]}]`, JSON.stringify(entry[1]));\n }\n });\n\n // uploading the files for custom images field\n\n Object.entries(uploadedImages).forEach((entry) => {\n if (entry[1].image) {\n form.append(`theme[fields][images][${entry[0]}]`, entry[1].image);\n }\n });\n\n // uploading the files for currency values field\n\n Object.entries(jsonBody.currencyValues).forEach((entry) => {\n if (entry[1].image) {\n form.append(`theme[fields][currencyValues][${entry[0]}]`, entry[1].image);\n }\n });\n\n form.append('theme[game_id]', gameId);\n form.append('commit', 'Setup Theme');\n form.append('base_theme_id', baseThemeId);\n form.append('game_id', gameId);\n\n if (!checkSdkThemingFf()) {\n form.append('identifier', 'ivt');\n }\n\n const url = checkSdkThemingFf()\n ? `/publisher/v1/games/${gameId}/custom_themes.json`\n : `/themes/${themeId}`;\n\n return $.ajax({\n url,\n method: 'PATCH',\n data: form,\n processData: false,\n contentType: false,\n });\n};\n\nexport const emailCustomTheme = (id: string) => {\n return $.ajax({\n url: `/email_custom_themes/${id}`,\n method: 'GET',\n });\n};\n\nexport const requestSync = (gameId: string) => {\n const url = checkSdkThemingFf()\n ? `/publisher/v1/games/${gameId}/custom_themes/request_sync.json`\n : `/custom_theme/${gameId}/request_sync.json`;\n\n return $.ajax({\n url,\n method: 'POST',\n });\n};\n\nexport const syncThemeToProd = (id: string) => {\n return $.ajax({\n url: `/themes/${id}/sync_production`,\n method: 'POST',\n });\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n// TODO UPDATE [WS-22306] properly type this file\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport * as ApiUtils from './utils';\nimport { IJsonBody, IUploadedImages } from './utils';\n\nexport const BASE_THEME = {\n COLOR: 'baseTheme/COLOR',\n};\n\nexport const CUSTOM_THEME = {\n SAVED_THEMES: 'customTheme/SAVED_THEMES',\n};\n\nexport const ADVANCED_THEME = {\n UPDATE: 'advancedTheme/THEME',\n GRADIENT: 'advancedTheme/GRADIENT',\n GRADIENT_REPLACE: 'advancedTheme/GRADIENT_REPLACE',\n};\n\nexport interface IBaseTheme {\n id: number;\n jsonBody: {\n viewPrimaryColor: unknown;\n opacityLevels: { opacityPrimary: { value: string } };\n sheetStyles: {\n viewPrimaryColor: { color: string; backgroundColor: string };\n textColorPrimary: { color: string };\n textColorSecondary: { color: string };\n };\n gradients: {\n backgroundViewGradient: {\n gradient: unknown[];\n };\n };\n };\n}\n\nexport interface IBaseThemeResponse extends IBaseTheme {\n status?: string;\n id: number;\n errors?: string[];\n}\n\nexport const storeTheme = (theme: { id: number }) => {\n // create a themeData object that holds the themeId and the theme payload\n // and adds it to the store to prevent refetching the theme each time\n let themeData: Record = {};\n themeData[theme.id] = theme;\n\n return {\n type: BASE_THEME.COLOR,\n theme: themeData,\n };\n};\n\nexport const getBaseTheme = (themeId: number, gameId: number) => (dispatch: Dispatch) => {\n return ApiUtils.getBaseTheme(themeId, gameId)\n .then(camelize)\n .then((response) => {\n dispatch(storeTheme(response as unknown as { id: number }));\n\n // TODO UPDATE [WS-22306] properly type this response\n return response as unknown as IBaseTheme;\n });\n};\n\n// schema for action arguments\n// state[selected].jsonBody[mainField][subField][keyField] = data;\n\nexport const receiveTheme = (\n mainField: string,\n subField: string,\n keyField: string,\n data: string | number | File,\n selected: number\n) => {\n return {\n type: ADVANCED_THEME.UPDATE,\n mainField,\n subField,\n keyField,\n data,\n selected,\n };\n};\n\n// schema for action arguments\n// state[selected].jsonBody.gradients[subField].gradient[index] = data;\n\nexport const receiveGradientTheme = (\n subField: string,\n data: string,\n selected: number,\n index: number\n) => {\n return {\n type: ADVANCED_THEME.GRADIENT,\n subField,\n data,\n selected,\n index,\n };\n};\n\n// schema for action arguments\n// state[selected].jsonBody.gradients[subField] = data;\nexport const receiveThemeGradientToReplace = (\n subField: string,\n data: string[],\n selected: number\n) => {\n return {\n type: ADVANCED_THEME.GRADIENT_REPLACE,\n subField,\n data,\n selected,\n };\n};\n\n// unable to dispatch to store since the api returns only 1 of many themes that are saved.\n// if the themes are required in the future, it will be necessary to create an action that actually\n// fetches the themes related to the game.\n\nexport const saveBaseTheme =\n (\n gameId: string,\n data: IJsonBody,\n themeName: string,\n themeId: string,\n uploadedImages: IUploadedImages\n ) =>\n (dispatch: Dispatch) => {\n return ApiUtils.saveBaseTheme(gameId, data, themeName, themeId, uploadedImages).then(\n (response: IBaseThemeResponse) => {\n if (response.status !== 'unprocessable_entity') {\n dispatch(storeTheme(camelize(response)));\n }\n\n return response;\n }\n );\n };\n\nexport const updateTheme =\n (\n gameId: string,\n data: IJsonBody,\n baseThemeId: string,\n themeId: string,\n uploadedImages: IUploadedImages\n ) =>\n (dispatch: Dispatch) => {\n return ApiUtils.updateTheme(gameId, data, baseThemeId, themeId, uploadedImages).then(\n (response: IBaseThemeResponse) => {\n if (response.status !== 'unprocessable_entity') {\n dispatch(storeTheme(camelize(response)));\n }\n\n return response;\n }\n );\n };\n\nexport const emailCustomTheme = (id: string) => {\n return ApiUtils.emailCustomTheme(id).then((response: IBaseThemeResponse) => {\n return response;\n });\n};\n\nexport const requestSync = (gameId: string) => (dispatch: Dispatch) => {\n return ApiUtils.requestSync(gameId).then((response: IBaseThemeResponse) => {\n dispatch(storeTheme(camelize(response)));\n\n return response;\n });\n};\n\nexport const syncThemeToProd = (id: string) => (dispatch: Dispatch) => {\n return ApiUtils.syncThemeToProd(id).then((response: IBaseThemeResponse) => {\n dispatch(storeTheme(camelize(response)));\n\n return response;\n });\n};\n","/* eslint-disable */\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport {\n TThunkAction,\n TDispatch,\n IAction,\n ITournament,\n TOpenSnackbarFunc,\n ITournamentSet,\n ITournamentRule,\n} from '@app/common/interfaces';\nimport axios, { AxiosResponse, AxiosError } from '@app/common/setup/axiosWithHeader';\n\nimport { ITournamentUpdate, ITournamentRuleWithIndex, ITournamentWithIndex } from './interfaces';\nimport { getAmzDate } from './utils/utils';\n\ntype TReceiveSandboxTournament = (data: ITournamentWithIndex) => IAction;\ntype TReceiveSandboxTournaments = (data: ITournament[]) => IAction;\ntype TReceiveSandboxTournamentSet = (data: ITournamentSet[]) => IAction;\ntype TReceiveProductionTournamentSet = (data: ITournamentSet[]) => IAction;\ntype TReceiveProductionTournaments = (data: ITournament[]) => IAction;\ntype TReceiveTournaentRule = (data: ITournamentRuleWithIndex) => IAction;\n\nexport enum NEW_TOURNAMENTS {\n RECEIVE_SANDBOX_TOURNAMENT = 'tournament/RECEIVE_SANDBOX_TOURNAMENT',\n RECEIVE_SANDBOX_TOURNAMENTS = 'tournaments/RECEIVE_SANDBOX_TOURNAMENTS',\n RECEIVE_PRODUCTION_TOURNAMENTS = 'tournaments/RECEIVE_PRODUCTION_TOURNAMENTS',\n RECEIVE_TOURNAMENT_RULE = 'tournaments/RECEIVE_TOURNAMENT_RULE',\n UPDATE_TOURNAMENT_RULE = 'tournaments/UPDATE_TOURNAMENT_RULE',\n REMOVE_TOURNAMENT_RULE = 'tournaments/REMOVE_TOURNAMENT_RULE',\n RECEIVE_SANDBOX_TOURNAMENT_SET = 'tournaments/RECEIVE_SANDBOX_TOURNAMENT_SET',\n RECEIVE_PRODUCTION_TOURNAMENT_SET = 'tournaments/RECEIVE_PRODUCTION_TOURNAMENT_SET',\n}\n\nexport const receiveProductionTournaments: TReceiveProductionTournaments = (\n data: ITournament[]\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.RECEIVE_PRODUCTION_TOURNAMENTS,\n data,\n };\n};\n\nexport const receiveSandboxTournament: TReceiveSandboxTournament = (\n data: ITournamentWithIndex\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.RECEIVE_SANDBOX_TOURNAMENT,\n data,\n };\n};\n\nexport const receiveSandboxTournaments: TReceiveSandboxTournaments = (\n data: ITournament[]\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.RECEIVE_SANDBOX_TOURNAMENTS,\n data,\n };\n};\n\nexport const receiveSandboxTournamentSet: TReceiveSandboxTournamentSet = (\n data: ITournamentSet[]\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.RECEIVE_SANDBOX_TOURNAMENT_SET,\n data,\n };\n};\n\nexport const receiveProductionTournamentSet: TReceiveProductionTournamentSet = (\n data: ITournamentSet[]\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.RECEIVE_PRODUCTION_TOURNAMENT_SET,\n data,\n };\n};\n\nexport const receiveTournamentRule: TReceiveTournaentRule = (\n data: ITournamentRuleWithIndex\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.RECEIVE_TOURNAMENT_RULE,\n data,\n };\n};\n\nexport const receiveUpdatedTournamentRule: TReceiveTournaentRule = (\n data: ITournamentRuleWithIndex\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.UPDATE_TOURNAMENT_RULE,\n data,\n };\n};\n\nexport const removeTournamentRule: TReceiveTournaentRule = (\n data: ITournamentRuleWithIndex\n): IAction => {\n return {\n type: NEW_TOURNAMENTS.REMOVE_TOURNAMENT_RULE,\n data,\n };\n};\n\nexport const fetchSandboxTournaments: TThunkAction = (gameId: number): TDispatch => {\n // TODO REPLACE [WS-10403] remove the below disable and fix error\n /* eslint-disable @typescript-eslint/no-explicit-any */\n return (dispatch: Dispatch): any => {\n return axios\n .get(`/games/${gameId}/get_tournaments.json`)\n .then((response: AxiosResponse) => {\n return dispatch(receiveSandboxTournaments(camelize(response.data)));\n });\n };\n};\n\nexport const updateSandboxTournamentTemplateSet = async (\n setId: number,\n gameId: number,\n tournamentSet: ITournamentSet,\n image: File | null,\n scoring: string,\n players: number\n) => {\n let backgroundImageUrl = tournamentSet.backgroundImageUrl;\n\n if (image) {\n const presignedUrl = await axios\n .get(`/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets/get_presigned_url`)\n .catch(() => Promise.reject('Error generating presigned url'));\n\n const form = new FormData();\n\n const extension = image.type.split('/')[1];\n let filename = `background_image_${gameId}_${setId}.${extension}`;\n\n //@ts-ignore\n const fields = presignedUrl.data.presigned_urls[0].fields;\n Object.keys(fields).forEach((key) => {\n if (key === 'key') {\n // to be used for uploading image url to database?\n filename = fields[key].replace('${filename}', filename);\n form.append('key', filename);\n } else if (key == 'X-Amz-Date') {\n const date = getAmzDate(fields[key]);\n form.append(key, date);\n } else {\n const value = fields[key];\n form.append(key, value);\n }\n });\n form.append('Content-Type', image.type);\n form.append('file', image);\n\n //@ts-ignore\n const url = presignedUrl.data.presigned_urls[0].url;\n await axios.post(url, form).catch(() => Promise.reject('Error uploading background image'));\n //@ts-ignore\n backgroundImageUrl = `${presignedUrl.data.cdn_base_url}${encodeURI(filename)}`;\n }\n await axios\n .patch(\n `/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets/${setId}`,\n snakeCaseConverter({\n ...tournamentSet,\n backgroundImageUrl,\n players,\n scoring,\n })\n )\n .then(camelize);\n};\n\nexport const addGameParameterToSet = async (\n gameId: number,\n setId: number,\n gameplayParamKey: string,\n gameplayParamValue: string\n) => {\n await axios\n .post(\n `/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets/${setId}/gameplay_parameters`,\n snakeCaseConverter({\n gameplayParamKey,\n gameplayParamValue,\n })\n )\n .then(camelize);\n};\n\nexport const deleteGameParameterFromSet = async (\n gameId: number,\n setId: number,\n gameplayParamid: number\n) => {\n await axios\n .delete(\n `/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets/${setId}/gameplay_parameters/${gameplayParamid}`\n )\n .then(camelize);\n};\n\nexport const editGameParameterFromSet = async (\n gameId: number,\n setId: number,\n gameplayParamId: number,\n gameplayParamKey: string,\n gameplayParamValue: string\n) => {\n await axios\n .patch(\n `/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets/${setId}/edit_gameplay_parameters`,\n snakeCaseConverter({\n gameplayParamId,\n gameplayParamKey,\n gameplayParamValue,\n })\n )\n .then(camelize);\n};\n\nexport const fetchProductionTournamentSet: TThunkAction = (gameId: number): TDispatch => {\n // TODO REPLACE [WS-10403] remove the below disable and fix error\n /* eslint-disable @typescript-eslint/no-explicit-any */\n return (dispatch: Dispatch): any => {\n return axios\n .get(`/api_internal/v1/games/${gameId}/production_tournament_template_sets`)\n .then((response: AxiosResponse) => {\n return dispatch(receiveProductionTournamentSet(camelize(response.data)));\n });\n };\n};\n\nexport const fetchSandboxTournamentSet: TThunkAction = (gameId: number): TDispatch => {\n // TODO REPLACE [WS-10403] remove the below disable and fix error\n /* eslint-disable @typescript-eslint/no-explicit-any */\n return (dispatch: Dispatch): any => {\n return axios\n .get(`/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets`)\n .then((response: AxiosResponse) => {\n return dispatch(receiveSandboxTournamentSet(camelize(response.data)));\n });\n };\n};\n\n// the redux for this isn't fully setup yet - it will be done once IVTV3 is fully deprecated\nexport const fetchProductionTournaments: TThunkAction = (gameId: number): TDispatch => {\n return (dispatch: Dispatch): any => {\n return axios\n .get(`/production_tournament_templates.json?game_id=${gameId}`)\n .then((response: AxiosResponse) => {\n return dispatch(receiveProductionTournaments(camelize(response.data)));\n });\n };\n};\n\nexport const deleteTournamentRule: TThunkAction = (index: number, id: number): TDispatch => {\n return (dispatch: Dispatch): any => {\n return axios\n .delete(`/tournament_rules/${id}.json`)\n .then((response: AxiosResponse) => {\n dispatch(removeTournamentRule(camelize({ index, response: response.data })));\n })\n .catch((error: AxiosError) => {\n return error;\n });\n };\n};\n\nexport const createTournamentRule: TThunkAction = (\n index: number,\n tournamentRuleParentId: number,\n key: string,\n value: string\n): TDispatch => {\n return (dispatch: Dispatch): any => {\n const tournamentRuleParentType: string = 'SandboxTournamentTemplate';\n\n return axios\n .post(`/tournament_rules.json`, {\n /* eslint-disable-next-line camelcase */\n tournament_rule: snakeCaseConverter({\n tournamentRuleParentId,\n key,\n value,\n tournamentRuleParentType,\n }),\n })\n .then((response: AxiosResponse) => {\n return dispatch(receiveTournamentRule(camelize({ index, response: response.data })));\n })\n .catch((error: AxiosError) => {\n return error;\n });\n };\n};\n\nexport const updateTournamentRule: TThunkAction = (\n index: number,\n id: number,\n tournamentRuleParentId: number,\n key: string,\n value: string\n): TDispatch => {\n return (dispatch: Dispatch): any => {\n return axios\n .patch(`/tournament_rules/${id}.json`, {\n /* eslint-disable-next-line camelcase */\n tournament_rule: snakeCaseConverter({\n tournamentRuleParentId,\n key,\n value,\n }),\n })\n .then((response: AxiosResponse) => {\n return dispatch(receiveUpdatedTournamentRule(camelize({ index, response: response.data })));\n })\n .catch((error: AxiosError) => {\n return error;\n });\n };\n};\n\nexport const saveTournament: TThunkAction = (\n tournamentId: number,\n index: number,\n data: ITournamentUpdate,\n openSnackbar: TOpenSnackbarFunc\n): TDispatch => {\n return (dispatch: Dispatch): any => {\n return (\n axios\n .patch(`/sandbox_tournament_templates/${tournamentId}.json`, {\n /* eslint-disable-next-line camelcase */\n sandbox_tournament_template: snakeCaseConverter(data),\n })\n .then((response: AxiosResponse) => {\n openSnackbar({\n text: 'Saved tournament',\n autoHideDuration: 2000,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left',\n });\n\n return dispatch(receiveSandboxTournament(camelize({ index, response: response.data })));\n })\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .catch((_: AxiosError) => {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n openSnackbar({\n text: 'Error saving tournament!',\n autoHideDuration: 2000,\n anchorOriginVertical: 'bottom',\n anchorOriginHorizontal: 'left',\n });\n })\n );\n };\n};\n\nexport const publishTournamentSet = (gameId: number, setId: number) => {\n return axios.patch(\n `/api_internal/v1/games/${gameId}/sandbox_tournament_template_sets/${setId}/publish`\n );\n};\n","export function getAmzDate(dateStr: string): string {\n const chars = [':', '-'];\n for (let i = 0; i < chars.length; i++) {\n while (dateStr.indexOf(chars[i]) !== -1) {\n dateStr = dateStr.replace(chars[i], '');\n }\n }\n dateStr = dateStr.split('.')[0] + 'Z';\n\n return dateStr;\n}\n","import { IPackages, IPackagesOrder, IVirtualCurrencyInitial } from './interfaces';\n\nexport enum VIRTUAL_CURRENCY {\n STORE_PACKAGE = 'virtualCurrency/STORE_PACKAGE',\n RECEIVE_PACKAGE = 'virtualCurrency/RECEIVE_PACKAGE',\n}\n\nexport enum PACKAGES_NAME {\n TINY_PACKAGE = 'Tiny Package',\n SMALL_PACKAGE = 'Small Package',\n MEDIUM_PACKAGE = 'Medium Package',\n LARGE_PACKAGE = 'Large Package',\n XLARGE_PACKAGE = 'X-Large Package',\n HUGE_PACKAGE = 'Huge Package',\n}\n\nexport const PACKAGES: IPackages[] = [\n {\n name: PACKAGES_NAME.TINY_PACKAGE,\n virtualCurrency: '100',\n cashValue: '0.99',\n },\n {\n name: PACKAGES_NAME.SMALL_PACKAGE,\n virtualCurrency: '600',\n cashValue: '4.99',\n },\n {\n name: PACKAGES_NAME.MEDIUM_PACKAGE,\n virtualCurrency: '1500',\n cashValue: '9.99',\n },\n {\n name: PACKAGES_NAME.LARGE_PACKAGE,\n virtualCurrency: '3200',\n cashValue: '19.99',\n },\n {\n name: PACKAGES_NAME.XLARGE_PACKAGE,\n virtualCurrency: '8500',\n cashValue: '49.99',\n },\n {\n name: PACKAGES_NAME.HUGE_PACKAGE,\n virtualCurrency: '19000',\n cashValue: '99.99',\n },\n];\n\nexport const PACKAGES_ORDER: IPackagesOrder = {\n [PACKAGES_NAME.TINY_PACKAGE]: 0,\n [PACKAGES_NAME.SMALL_PACKAGE]: 1,\n [PACKAGES_NAME.MEDIUM_PACKAGE]: 2,\n [PACKAGES_NAME.LARGE_PACKAGE]: 3,\n [PACKAGES_NAME.XLARGE_PACKAGE]: 4,\n [PACKAGES_NAME.HUGE_PACKAGE]: 5,\n};\n\nexport const INITIAL_PACKAGES: IVirtualCurrencyInitial[] = [\n {\n productId: '',\n },\n {\n productId: '',\n },\n {\n productId: '',\n },\n {\n productId: '',\n },\n {\n productId: '',\n },\n {\n productId: '',\n },\n];\n","import axios, { AxiosError, AxiosResponse } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport {\n IAction,\n IActionNoData,\n IErrors,\n TAxiosPromise,\n TDispatch,\n TErrorGeneral,\n} from '@app/common/interfaces';\nimport { IGamePerformanceStatus } from '@app/modules/GameManagement/common/interfaces';\n\nexport enum GAME_PERFORMANCE_STATUS_ACTIONS {\n RECEIVE = 'gamePerformanceStatus/RECEIVE',\n CLEAR = 'gamePerformanceStatus/CLEAR',\n}\n\nexport function receiveGamePerformanceStatus(\n data: IGamePerformanceStatus\n): IAction {\n return {\n type: GAME_PERFORMANCE_STATUS_ACTIONS.RECEIVE,\n data,\n };\n}\n\nexport function clearGamePerformanceStatus(): IActionNoData {\n return {\n type: GAME_PERFORMANCE_STATUS_ACTIONS.CLEAR,\n };\n}\n\nexport function fetchGamePerformanceStatus(gameId: number): TDispatch {\n return (dispatch: Dispatch>): TAxiosPromise => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return axios\n .get(`/api/v1/games/${gameId}/game_performance_status`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveGamePerformanceStatus(response.data));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n}\n","import { Dispatch } from 'redux';\nimport { ThunkAction } from 'redux-thunk';\nimport axios, { AxiosResponse, AxiosError } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { IRootState } from '@app/core/rootReducer';\nimport {\n IAction,\n TErrorGeneral,\n IErrors,\n IZendeskTicket,\n TAxiosPromise\n} from '@app/common/interfaces';\nimport { IPrizeEnablementRequest } from '@appOverview/interfaces';\n\nexport enum PRIZE_ENABLEMENT_REQUEST_ACTIONS {\n RECEIVE = 'prizeEnablementRequest/RECEIVE'\n}\n\nexport function receivePrizeEnablementRequest(\n data: IPrizeEnablementRequest\n): IAction {\n return {\n type: PRIZE_ENABLEMENT_REQUEST_ACTIONS.RECEIVE,\n data\n };\n}\n\ntype TPrizeEnablementReturn = TAxiosPromise;\n\nexport const fetchPrizeEnablementRequest = (\n gameId: number\n): ThunkAction> => {\n return (dispatch: Dispatch>): TPrizeEnablementReturn => {\n return axios\n .get(`/api_internal/v1/games/${gameId}/prize_enablement_request`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receivePrizeEnablementRequest(response.data));\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n };\n};\n\nexport const createPrizeEnablementRequest = (\n gameId: number\n): ThunkAction> => {\n return (dispatch: Dispatch>): TPrizeEnablementReturn => {\n return axios\n .post(`/api_internal/v1/games/${gameId}/prize_enablement_request`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receivePrizeEnablementRequest(response.data));\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n };\n};\n\nexport const createPrizeEnablementRequestZendeskTicket = (\n gameId: number,\n prizeEnablementRequestId: number\n): Promise | TErrorGeneral => {\n return axios\n .post(\n `/api/v1/games/${gameId}/prize_enablement_requests/${prizeEnablementRequestId}/zendesk_tickets`\n )\n .then(camelize)\n .then((response: AxiosResponse) => {\n return response.data;\n })\n .catch(\n (error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n }\n );\n};\n","// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { Dispatch } from 'redux';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { IAction, IErrors, IZendeskTicket, TErrorGeneral } from '@app/common/interfaces';\nimport axios, { AxiosError, AxiosResponse } from '@app/common/setup/axiosWithHeader';\nimport { IAccelerateApplication, TAccelerateRequest } from '@appOverview/interfaces';\n\nexport enum ACCELERATE_PROGRAM {\n RECEIVE_ACCELERATE_APPLICATION = 'accelerateProgram/RECEIVE_ACCELERATE_APPLICATION',\n}\n\nexport function receiveAccelerateApplication(\n data: IAccelerateApplication\n): IAction {\n return { type: ACCELERATE_PROGRAM.RECEIVE_ACCELERATE_APPLICATION, data };\n}\n\nexport const fetchAccelerateApplication = (gameId: number) => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios\n .get(`/api_internal/v1/games/${gameId}/accelerate_application`)\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveAccelerateApplication(response.data));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n};\n\nexport const updateAccelerateApplication = (gameId: number) => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios\n .patch(\n `/api_internal/v1/games/${gameId}/accelerate_application`,\n snakeCaseConverter({ accelerateApplication: { isWidgetClosed: true } })\n )\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveAccelerateApplication(response.data));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n};\n\nexport const createAccelerateApplication = (\n gameId: number,\n applicationRequest: TAccelerateRequest = null\n) => {\n return (dispatch: Dispatch>): Promise | TErrorGeneral => {\n return axios\n .post(\n `/api_internal/v1/games/${gameId}/accelerate_application`,\n applicationRequest && snakeCaseConverter({ accelerateApplication: applicationRequest })\n )\n .then(camelize)\n .then((response: AxiosResponse) => {\n dispatch(receiveAccelerateApplication(response.data));\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n };\n};\n\nexport const createAccelerateApplicationZendeskTicket = (\n gameId: number,\n accelerateApplicationId: number\n): Promise | TErrorGeneral => {\n return axios\n .post(\n `/api/v1/games/${gameId}/accelerate_application/${accelerateApplicationId}/zendesk_tickets`\n )\n .then(camelize)\n .then((response: AxiosResponse) => {\n return response.data;\n })\n .catch((error: AxiosError): TErrorGeneral => {\n return error.response ? error.response.data : error;\n });\n};\n","export const ABORT_RATE_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL = 8.0;\n\nexport const GAMES_PER_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL = 6;\nexport const SKILLZ_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL = 75;\nexport const DAY_7_RETENTION_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL = 4.5;\nexport const INSTALLS_TO_2Z_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL = 70;\n\nexport const SKILLZ_DAU_7_DAY_AVERAGE_SYNC_PRIZE_ENABLEMENT_GOAL = 75;\n","import {\n GAMES_PER_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n DAY_7_RETENTION_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n INSTALLS_TO_2Z_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n} from '@appGameHome/modules/Overview/constants/gamePerformanceStatus';\n\nexport const PRIZE_ENABLEMENT_STEPS_COPY = {\n DAU: 'Daily Active Users',\n GAMES_PER_DAU: `${GAMES_PER_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL} Games per DAU`,\n DAY_7_RETENTION: `${DAY_7_RETENTION_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL}% Day 7 Retention`,\n INSTALLS_TO_2_Z: `${INSTALLS_TO_2Z_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL}% Installs to 2Z`,\n FAIR_PLAY: 'Fair Play',\n};\n\nexport enum PRIZE_ENABLEMENT_STEPS_STATE {\n PENDING = 'pending',\n PASSED = 'passed',\n ACTION_REQUIRED = 'actionRequired',\n ICON_GAME = 'iconGame',\n ICON_GIFT_COLOR = 'iconGiftColor',\n ICON_GIFT_SHADE = 'iconGiftShade',\n}\n\nexport enum PRIZE_ENABLEMENT_LABEL_POSITION {\n TOP = 'top',\n BOTTOM = 'bottom',\n}\n\nexport enum SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE {\n SKILLZ_DAU_7_DAY_AVERAGE = 'skillzDau7DayAverage',\n GAMES_PER_DAU_7_DAY_AVERAGE = 'gamesPerDau7DayAverage',\n DAY_7_RETENTION_7_DAY_AVERAGE = 'day7Retention7DayAverage',\n INSTALLS_TO_1Z_7_DAY_AVERAGE = 'installsTo1z7DayAverage',\n IS_FAIR = 'isFair',\n}\n\nexport enum VIEW {\n MOBILE = 'mobile',\n DESKTOP = 'desktop',\n}\n","import * as React from 'react';\n\nimport kebabCase from 'lodash/kebabCase';\n\nimport { IActionNoData, IGameInfo } from '@app/common/interfaces';\nimport alertIcon from '@app/imageAssets/Overview/error.svg';\nimport { META_TAGS_ATTRIBUTES } from '@app/modules/GameManagement/common/constants';\nimport { IGamePerformanceStatus } from '@app/modules/GameManagement/common/interfaces';\nimport {\n DAY_7_RETENTION_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n GAMES_PER_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n INSTALLS_TO_2Z_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n SKILLZ_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL,\n SKILLZ_DAU_7_DAY_AVERAGE_SYNC_PRIZE_ENABLEMENT_GOAL,\n} from '@appOverview/constants/gamePerformanceStatus';\n\nimport {\n PRIZE_ENABLEMENT_STEPS_COPY,\n PRIZE_ENABLEMENT_STEPS_STATE,\n SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE,\n} from './constants';\nimport { ISortedGamePerformanceStatus, TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE } from './interfaces';\nimport { PathIcon } from './subcomponents';\n\nexport const sortGamePerformanceStatusAttributes = (\n status: IGamePerformanceStatus | null\n): ISortedGamePerformanceStatus => {\n let complete: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE[] = [];\n let incomplete: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE[] = [];\n\n if (status === null) {\n return { complete, incomplete };\n }\n\n if (\n status.skillzDau7DayAverage &&\n status.skillzDau7DayAverage >= SKILLZ_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL\n ) {\n complete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.SKILLZ_DAU_7_DAY_AVERAGE);\n } else {\n incomplete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.SKILLZ_DAU_7_DAY_AVERAGE);\n }\n\n if (\n status.gamesPerDau7DayAverage &&\n status.gamesPerDau7DayAverage >= GAMES_PER_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL\n ) {\n complete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.GAMES_PER_DAU_7_DAY_AVERAGE);\n } else {\n incomplete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.GAMES_PER_DAU_7_DAY_AVERAGE);\n }\n\n if (\n status.day7Retention7DayAverage &&\n status.day7Retention7DayAverage >= DAY_7_RETENTION_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL\n ) {\n complete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.DAY_7_RETENTION_7_DAY_AVERAGE);\n } else {\n incomplete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.DAY_7_RETENTION_7_DAY_AVERAGE);\n }\n\n if (\n status.installsTo1z7DayAverage &&\n status.installsTo1z7DayAverage >= INSTALLS_TO_2Z_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL\n ) {\n complete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.INSTALLS_TO_1Z_7_DAY_AVERAGE);\n } else {\n incomplete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.INSTALLS_TO_1Z_7_DAY_AVERAGE);\n }\n\n if (status.isFair) {\n complete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.IS_FAIR);\n } else {\n incomplete.push(SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.IS_FAIR);\n }\n\n return {\n complete,\n incomplete,\n };\n};\n\nexport const determineStepState = (\n stepValue: number | null | undefined,\n goal: number\n): PRIZE_ENABLEMENT_STEPS_STATE => {\n return stepValue && stepValue >= goal\n ? PRIZE_ENABLEMENT_STEPS_STATE.PASSED\n : PRIZE_ENABLEMENT_STEPS_STATE.PENDING;\n};\n\n// gamePerformance - DAU\n\nexport const renderSkillzDauCopy = (\n skillzDau7DayAverage: number | null | undefined,\n game: IGameInfo\n): JSX.Element => {\n const dauGoal =\n game.gameplayFormat === META_TAGS_ATTRIBUTES.REAL_TIME_ONLY\n ? SKILLZ_DAU_7_DAY_AVERAGE_SYNC_PRIZE_ENABLEMENT_GOAL\n : SKILLZ_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL;\n\n return (\n

    \n {dauGoal} {PRIZE_ENABLEMENT_STEPS_COPY.DAU}\n

    \n );\n};\n\nexport const renderSkillzDauPathIcon = (\n skillzDau7DayAverage: number | null | undefined\n): JSX.Element => {\n return (\n \n );\n};\n\n// gamePerformance - Games per DAU\n\nexport const renderGamesPerDauPathIcon = (\n gamesPerDau7DayAverage: number | null | undefined\n): JSX.Element => {\n return (\n \n );\n};\n\nexport const renderGamesPerDauCopy = (\n gamesPerDau7DayAverage: number | null | undefined\n): JSX.Element => {\n return (\n \n {PRIZE_ENABLEMENT_STEPS_COPY.GAMES_PER_DAU}\n

    \n );\n};\n\n// gamePerformance - Day 7 Retention\n\nexport const renderDay7RetentionPathIcon = (\n day7Retention7DayAverage: null | number | undefined\n): JSX.Element => {\n return (\n \n );\n};\n\nexport const renderDay7RetentionCopy = (\n day7Retention7DayAverage: null | number | undefined\n): JSX.Element => {\n return (\n \n {PRIZE_ENABLEMENT_STEPS_COPY.DAY_7_RETENTION}\n

    \n );\n};\n\n// gamePerformance - Installs to 1z\n\nexport const renderInstallsTo1ZPathIcon = (\n installsTo1z7DayAverage: null | number | undefined\n): JSX.Element => {\n return (\n \n );\n};\n\nexport const renderInstallsTo1ZCopy = (\n installsTo1z7DayAverage: null | number | undefined\n): JSX.Element => {\n return (\n \n {PRIZE_ENABLEMENT_STEPS_COPY.INSTALLS_TO_2_Z}\n

    \n );\n};\n\n// gamePerformance - FairPlay\nconst fairPlayState = (isFair: null | boolean | undefined): PRIZE_ENABLEMENT_STEPS_STATE => {\n let state: PRIZE_ENABLEMENT_STEPS_STATE;\n\n if (isFair === null) {\n state = PRIZE_ENABLEMENT_STEPS_STATE.PENDING;\n } else if (isFair) {\n state = PRIZE_ENABLEMENT_STEPS_STATE.PASSED;\n } else {\n state = PRIZE_ENABLEMENT_STEPS_STATE.ACTION_REQUIRED;\n }\n\n return state;\n};\n\nexport const renderFairPlayPathIcon = (isFair: null | boolean | undefined): JSX.Element => {\n return ;\n};\n\nexport const renderFairPlayCopy = (isFair: null | boolean | undefined): JSX.Element => {\n return (\n

    \n {PRIZE_ENABLEMENT_STEPS_COPY.FAIR_PLAY}\n

    \n );\n};\n\nexport const renderPrizeEnablementAttributeCopy = (\n gamePerformanceStatus: IGamePerformanceStatus | null,\n attribute: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE,\n game: IGameInfo,\n openFairnessModal?: () => IActionNoData\n): JSX.Element => {\n switch (attribute) {\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.SKILLZ_DAU_7_DAY_AVERAGE:\n return renderSkillzDauCopy(gamePerformanceStatus?.skillzDau7DayAverage, game);\n\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.GAMES_PER_DAU_7_DAY_AVERAGE:\n return renderGamesPerDauCopy(gamePerformanceStatus?.gamesPerDau7DayAverage);\n\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.DAY_7_RETENTION_7_DAY_AVERAGE:\n return renderDay7RetentionCopy(gamePerformanceStatus?.day7Retention7DayAverage);\n\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.INSTALLS_TO_1Z_7_DAY_AVERAGE:\n return renderInstallsTo1ZCopy(gamePerformanceStatus?.installsTo1z7DayAverage);\n\n default:\n // styled in `desktopViewStyles` && `mobileViewStyles` .step-copy > div\n return (\n
    \n {renderFairPlayCopy(gamePerformanceStatus?.isFair)}\n \n
    \n );\n }\n};\n\nexport const renderPrizeEnablementAttributeIcon = (\n gamePerformanceStatus: IGamePerformanceStatus | null,\n attribute: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE\n): JSX.Element => {\n switch (attribute) {\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.SKILLZ_DAU_7_DAY_AVERAGE:\n return renderSkillzDauPathIcon(gamePerformanceStatus?.skillzDau7DayAverage);\n\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.GAMES_PER_DAU_7_DAY_AVERAGE:\n return renderGamesPerDauPathIcon(gamePerformanceStatus?.gamesPerDau7DayAverage);\n\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.DAY_7_RETENTION_7_DAY_AVERAGE:\n return renderDay7RetentionPathIcon(gamePerformanceStatus?.day7Retention7DayAverage);\n\n case SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE.INSTALLS_TO_1Z_7_DAY_AVERAGE:\n return renderInstallsTo1ZPathIcon(gamePerformanceStatus?.installsTo1z7DayAverage);\n\n default:\n return renderFairPlayPathIcon(gamePerformanceStatus?.isFair);\n }\n};\n\nexport function isPrizeEnablementRevamp(): boolean {\n return window.appConfig.featureFlags.prizeEnablementRevamp;\n}\n","import * as React from 'react';\n\nimport PhotoSizeSelectActual from '@mui/icons-material/PhotoSizeSelectActual';\n\nimport grayCheckMark from '@app/imageAssets/checkGrayIconWhiteFill.svg';\nimport greenCheckMark from '@app/imageAssets/checkGreenIconWhiteFill.svg';\nimport giftIcon from '@app/imageAssets/Overview/giftColorIcon.svg';\nimport giftShadedIcon from '@app/imageAssets/Overview/giftShadedIcon.svg';\nimport errorIcon from '@app/imageAssets/Overview/PrizeEnablementProgram/error.svg';\n\nimport { PRIZE_ENABLEMENT_STEPS_STATE } from '../constants';\nimport { IPathIconProps } from '../interfaces';\nimport './styles/pathIconStyles.scss';\n\nclass PathIcon extends React.PureComponent {\n public renderIcon = (): JSX.Element => {\n const { state, icon } = this.props;\n\n switch (state) {\n case PRIZE_ENABLEMENT_STEPS_STATE.PENDING:\n return ;\n case PRIZE_ENABLEMENT_STEPS_STATE.PASSED:\n return ;\n case PRIZE_ENABLEMENT_STEPS_STATE.ACTION_REQUIRED:\n return ;\n case PRIZE_ENABLEMENT_STEPS_STATE.ICON_GIFT_COLOR:\n return ;\n case PRIZE_ENABLEMENT_STEPS_STATE.ICON_GIFT_SHADE:\n return ;\n default:\n if (icon) {\n return ;\n }\n\n return ;\n }\n };\n\n public render = (): JSX.Element => {\n return (\n
    {this.renderIcon()}
    \n );\n };\n}\n\nexport { PathIcon };\n","import * as React from 'react';\n\nimport Grid from '@mui/material/Grid';\n\nimport { ArcherContainer, ArcherElement, LineStyle, Relation } from 'react-archer';\n\nimport { IActionNoData, IGameInfo } from '@app/common/interfaces';\nimport variables from '@app/core/variables.scss';\nimport { IGamePerformanceStatus } from '@app/modules/GameManagement/common/interfaces';\n\nimport { PRIZE_ENABLEMENT_LABEL_POSITION, PRIZE_ENABLEMENT_STEPS_STATE } from '../constants';\nimport { renderPrizeEnablementAttributeCopy, renderPrizeEnablementAttributeIcon } from '../helpers';\nimport { IViewProps, TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE } from '../interfaces';\nimport { PathIcon } from './PathIcon';\nimport './styles/desktopViewStyles.scss';\n\nconst completeStepLineStyle: LineStyle = {\n strokeWidth: 4,\n strokeColor: variables.colorBrandBlue,\n};\n\nconst inProgressStepLineStyle: LineStyle = {\n strokeWidth: 2,\n strokeColor: variables.colorGray100Borders,\n strokeDasharray: '10, 10',\n};\n\nclass DesktopView extends React.PureComponent {\n public positionHelper = (\n index: number\n ): { style: React.CSSProperties; position: PRIZE_ENABLEMENT_LABEL_POSITION } => {\n switch (index) {\n case 1:\n return {\n style: { paddingBottom: '22px' },\n position: PRIZE_ENABLEMENT_LABEL_POSITION.BOTTOM,\n };\n\n case 2:\n return {\n style: { paddingBottom: '15px' },\n position: PRIZE_ENABLEMENT_LABEL_POSITION.TOP,\n };\n\n case 3:\n return {\n style: { paddingBottom: '10px' },\n position: PRIZE_ENABLEMENT_LABEL_POSITION.BOTTOM,\n };\n\n case 4:\n return { style: { paddingBottom: '25px' }, position: PRIZE_ENABLEMENT_LABEL_POSITION.TOP };\n\n default:\n return { style: { paddingBottom: '32px' }, position: PRIZE_ENABLEMENT_LABEL_POSITION.TOP };\n }\n };\n\n public renderStep = (\n gamePerformanceStatus: IGamePerformanceStatus | null,\n attribute: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE,\n openFairnessModal: () => IActionNoData,\n archerElementSteps: string[],\n isComplete: boolean,\n isNextComplete: boolean,\n idx: number,\n gameInfo: IGameInfo\n ): JSX.Element => {\n // adding a `relation` which tells the `ArcherElement` how to connect this element to the next\n let relations: Relation[] = [\n {\n targetId: '',\n targetAnchor: 'middle',\n sourceAnchor: 'middle',\n style: isNextComplete ? completeStepLineStyle : inProgressStepLineStyle,\n },\n ];\n\n if (idx === 2) {\n relations[0].targetAnchor = 'left';\n }\n\n if (idx === 3) {\n relations[0].sourceAnchor = 'right';\n }\n\n // if this is the last step then we connect this element with this gift-icon element\n // if not, then we just connect it with the next element\n if (idx === archerElementSteps.length - 1) {\n relations[0].targetId = 'gift-icon';\n } else {\n relations[0].targetId = archerElementSteps[idx + 1];\n }\n\n return (\n \n \n {renderPrizeEnablementAttributeCopy(\n gamePerformanceStatus,\n attribute,\n gameInfo,\n openFairnessModal\n )}\n \n \n
    {renderPrizeEnablementAttributeIcon(gamePerformanceStatus, attribute)}
    \n
    \n \n );\n };\n\n public render = (): JSX.Element => {\n const { gameInfo, openFairnessModal, sortedGamePerformanceStatus, gamePerformanceStatus } =\n this.props;\n\n const sortedAttributes: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE[] | undefined =\n sortedGamePerformanceStatus?.complete.concat(sortedGamePerformanceStatus.incomplete);\n\n const archerElementSteps: string[] = ['step-1', 'step-2', 'step-3', 'step-4', 'step-5'];\n let numberOfCompleteSteps: number | undefined = sortedGamePerformanceStatus?.complete.length;\n\n return (\n \n \n \n 0\n ? completeStepLineStyle\n : inProgressStepLineStyle,\n },\n ]}\n >\n
    \n \n
    \n \n
    \n\n {sortedAttributes?.map(\n (\n attribute: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE,\n index: number\n ): JSX.Element | null => {\n if (numberOfCompleteSteps === undefined) {\n return null;\n }\n\n numberOfCompleteSteps = numberOfCompleteSteps - 1;\n\n let isNextComplete: boolean =\n sortedGamePerformanceStatus?.incomplete.length === 0\n ? true\n : numberOfCompleteSteps > 0;\n\n return (\n \n {this.renderStep(\n gamePerformanceStatus,\n attribute,\n openFairnessModal,\n archerElementSteps,\n numberOfCompleteSteps > 0,\n isNextComplete,\n index,\n gameInfo\n )}\n \n );\n }\n )}\n\n \n \n
    \n \n
    \n
    \n
    \n \n \n );\n };\n}\n\nexport { DesktopView };\n","import * as React from 'react';\n\nimport Grid from '@mui/material/Grid';\n\nimport kebabCase from 'lodash/kebabCase';\nimport { ArcherContainer, ArcherElement, LineStyle, Relation } from 'react-archer';\n\nimport { IGameInfo } from '@app/common/interfaces';\nimport variables from '@app/core/variables.scss';\n\nimport { PRIZE_ENABLEMENT_STEPS_STATE } from '../constants';\nimport { renderPrizeEnablementAttributeCopy, renderPrizeEnablementAttributeIcon } from '../helpers';\nimport {\n ISortedGamePerformanceStatus,\n IViewProps,\n TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE,\n} from '../interfaces';\nimport { PathIcon } from './PathIcon';\nimport './styles/mobileViewStyles.scss';\n\nconst completeStepLineStyle: LineStyle = {\n strokeWidth: 4,\n strokeColor: variables.colorGreen,\n};\n\nconst inProgressStepLineStyle: LineStyle = {\n strokeWidth: 4,\n strokeColor: variables.colorGray100Borders,\n};\n\nclass MobileView extends React.PureComponent {\n public renderStep = (\n archerElementSteps: string[],\n isComplete: boolean,\n isNextComplete: boolean,\n step: string,\n idx: number\n ): JSX.Element => {\n // adding a `relation` which tells the `ArcherElement` how to connect this element to the next\n let relations: Relation[] = [\n {\n targetId: '',\n targetAnchor: 'left',\n sourceAnchor: 'right',\n style: isNextComplete ? completeStepLineStyle : inProgressStepLineStyle,\n },\n ];\n\n // if this is the last step then we connect this element with this gift-icon element\n // if not, then we just connect it with the next element\n if (idx === archerElementSteps.length - 1) {\n relations[0].targetId = 'gift-icon';\n } else {\n relations[0].targetId = archerElementSteps[idx + 1];\n }\n\n // given how the `ArcherElement` works - I have to wrap the component with a
    \n // but the div I am using is actually creating the CSS objet I need - so I have the <>\n // that renders nothing inside the
    to conform to the `ArcherElement`'s requirements\n return (\n \n
    \n <>\n
    \n
    \n );\n };\n\n public renderGameStep = (\n sortedGamePerformanceStatus: ISortedGamePerformanceStatus | null,\n gameInfo: IGameInfo\n ): JSX.Element => {\n return (\n 0\n ? completeStepLineStyle\n : inProgressStepLineStyle,\n },\n ]}\n >\n
    \n \n
    \n \n );\n };\n\n public renderGiftStep = (\n sortedGamePerformanceStatus: ISortedGamePerformanceStatus | null\n ): JSX.Element => {\n return (\n \n
    \n \n
    \n
    \n );\n };\n\n public render = (): JSX.Element => {\n const { gameInfo, openFairnessModal, sortedGamePerformanceStatus, gamePerformanceStatus } =\n this.props;\n\n let sortedAttributes: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE[] | undefined =\n sortedGamePerformanceStatus?.complete.concat(sortedGamePerformanceStatus.incomplete);\n\n let archerElementSteps: string[] = ['step-1', 'step-2', 'step-3', 'step-4', 'step-5'];\n\n let numberOfCompleteSteps: number | undefined = sortedGamePerformanceStatus?.complete.length;\n\n return (\n \n \n \n
    \n {this.renderGameStep(sortedGamePerformanceStatus, gameInfo)}\n\n {archerElementSteps.map((step: string, idx: number): JSX.Element | null => {\n if (numberOfCompleteSteps === undefined) {\n return null;\n }\n\n numberOfCompleteSteps = numberOfCompleteSteps - 1;\n\n let isNextComplete: boolean =\n sortedGamePerformanceStatus?.incomplete.length === 0\n ? true\n : numberOfCompleteSteps > 0;\n\n return (\n
    \n {this.renderStep(\n archerElementSteps,\n numberOfCompleteSteps >= 0,\n isNextComplete,\n step,\n idx\n )}\n
    \n );\n })}\n\n {this.renderGiftStep(sortedGamePerformanceStatus)}\n
    \n \n
    \n \n \n {sortedAttributes?.map((attribute: TSORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE) => {\n return (\n \n
    \n {renderPrizeEnablementAttributeIcon(gamePerformanceStatus, attribute)}\n
    \n
    \n {renderPrizeEnablementAttributeCopy(\n gamePerformanceStatus,\n attribute,\n gameInfo,\n openFairnessModal\n )}\n
    \n
    \n );\n })}\n
    \n
    \n \n );\n };\n}\n\nexport { MobileView };\n","import axios, { AxiosResponse } from '@app/common/setup/axiosWithHeader';\nimport { Dispatch } from 'redux';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { TThunkAction, TDispatch, IAction } from '@app/common/interfaces';\nimport { ISdkDownloadInfo, ISdkDownloadBody } from '@app/modules/GameManagement/common/interfaces';\n\nexport enum SDK_DOWNLOAD_INFO {\n RECEIVE = 'sdkDownloadInfo/RECEIVE'\n}\n\ntype TReceiveSdkDownloadInfo = (data: ISdkDownloadInfo) => IAction;\n\nexport const receiveSdkDownloadInfo: TReceiveSdkDownloadInfo = (\n data: ISdkDownloadInfo\n): IAction => {\n return {\n type: SDK_DOWNLOAD_INFO.RECEIVE,\n data\n };\n};\n\nexport const createSdkDownload: TThunkAction = (data: ISdkDownloadBody): TDispatch => {\n // TODO REPLACE [WS-10403] remove the below disable and fix error\n /* eslint-disable @typescript-eslint/no-explicit-any */\n return (dispatch: Dispatch): any => {\n return axios({\n url: `/api/v1/sdk_downloads`,\n method: 'post',\n data: snakeCaseConverter(data)\n }).then((response: AxiosResponse) => {\n return dispatch(receiveSdkDownloadInfo(camelize(response.data)));\n });\n };\n};\n\nexport const fetchGameLatestSdkDownload: TThunkAction = (gameId: number): TDispatch => (\n dispatch: Dispatch\n): any => {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n return axios({\n url: `/api/v1/games/${gameId}/sdk_downloads`,\n method: 'get'\n }).then((response: AxiosResponse) => {\n return dispatch(receiveSdkDownloadInfo(camelize(response.data)));\n });\n};\n","/* global FormData */\n\nexport const sendPush = (platform, name, gameInfo) => {\n let form = new FormData();\n\n form.append('notification_test[production]', true);\n form.append('notification_test[game_id]', gameInfo.productionId);\n form.append('notification_test[enabled]', true);\n form.append('notification_test[platform]', platform);\n form.append('notification_test[display_name]', name);\n\n form.append('commit', 'Send Test');\n form.append('id', gameInfo.id);\n\n return $.ajax({\n url: `/games/${gameInfo.id}/test_apns.json`,\n method: 'POST',\n data: form,\n processData: false,\n contentType: false\n });\n};\n\nexport const verifyPush = (platform, productionId, pushCode, verifyId) => {\n let form = new FormData();\n\n form.append('verification[production]', true);\n form.append('verification[game_id]', productionId);\n form.append('verification[enabled]', true);\n form.append(`verification[${platform}_push_code]`, pushCode);\n\n form.append('id', verifyId);\n form.append('commit', 'Verify');\n\n return $.ajax({\n url: `/verifications/${verifyId}/${platform}_push_test.json`,\n method: 'POST',\n data: form,\n processData: false,\n contentType: false\n });\n};\n","import { PAGE_NAMES, STATUS } from '@app/common/constants';\nimport * as ApiUtils from './utils';\n\nexport const VERIFY_CONFIG = {\n PUSH: 'verifyConfig/PUSH'\n};\n\nexport const storePushVerification = (data) => {\n return {\n type: VERIFY_CONFIG.PUSH,\n data\n };\n};\n\nexport const sendPush = (platform, name, gameInfo) => (dispatch) => {\n return ApiUtils.sendPush(platform, name, gameInfo).then((response) => {\n dispatch(storePushVerification(response));\n return response;\n });\n};\n\nexport const verifyPush = (platform, productionId, pushCode, verifyId) => (dispatch) => {\n return ApiUtils.verifyPush(platform, productionId, pushCode, verifyId).then((response) => {\n if (response.status !== 'unprocessable_entity') {\n dispatch(storePushVerification(response));\n }\n return response;\n });\n};\n","import axios from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { GAMES_PAGE_PAGE } from '@app/common/constants';\nimport { handleError } from '@app/common/helpers';\nimport { IDashboardGame, IIndexResponse } from '@app/common/interfaces';\n\n// a separate instance of `axios` which removes the `x-csrf-token` that keeps\n// getting injected on each request to prevent CORS errors\nexport const contentManagementSystemInstance = axios.create();\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\ndelete contentManagementSystemInstance.defaults.headers.common['X-CSRF-TOKEN'];\n\nexport const getLearningCenterCategories = () =>\n contentManagementSystemInstance\n .get(`${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/learning-center-categories`)\n .then(camelize)\n .catch(handleError);\n\nexport const getLearningCenterCards = () =>\n contentManagementSystemInstance\n .get(`${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/learning-center-cards`)\n .then(camelize)\n .catch(handleError);\n\n// used for determining whether user is ftue or not\nexport const getGames = (limit = GAMES_PAGE_PAGE, offset = 0) =>\n // use regular axios, need x-csrf-token\n axios\n .get>('/api_internal/v1/games', {\n params: { limit, offset },\n })\n .then((response) => {\n return response.data;\n })\n .catch(handleError);\n","export const learningCenterCardStyles = {\n borderRadius: '5px',\n padding: '10px',\n margin: 0,\n height: '100%',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n display: 'flex',\n alignItems: 'flex-end',\n color: 'white',\n boxShadow: 0,\n '&:hover': {\n cursor: 'pointer',\n boxShadow: 3,\n },\n};\n\nexport const learningCenterCardAspectRatio = '176 / 100';\n\nexport const LINEAR_BACKGROUND =\n 'linear-gradient(to top, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0), rgba(0, 0, 0, 0))';\n\nexport const WHATS_NEW_TITLE_COPY = \"What's new\";\n","import * as React from 'react';\n\nimport defaultProfile from '@app/imageAssets/Dashboard/defaultProfileIcon.svg';\n\nexport const profileIconWithInitials = (\n userFirstName: string,\n userLastName: string\n): JSX.Element => {\n let renderFirstInitialOrLast: string = userFirstName.slice(0, 1)\n ? userFirstName.slice(0, 1).toUpperCase()\n : userLastName.slice(0, 1).toUpperCase();\n\n return (\n
    \n

    {renderFirstInitialOrLast}

    \n
    \n );\n};\n\nexport const defaultProfileIcon: JSX.Element = (\n \n);\n","import * as React from 'react';\n\nimport capitalize from 'lodash/capitalize';\n\nimport { AtomLinkButton, AtomProgressBar } from '@app/common/atoms';\nimport { isDefaultCompany, isDefaultUserName } from '@app/common/helpers';\n\nimport { defaultProfileIcon, profileIconWithInitials } from '.';\nimport { IProfileWidgetProps } from '../interfaces';\nimport './styles/profileWidgetStyles.scss';\n\nclass ProfileWidget extends React.PureComponent {\n public renderProgressComplete = (): JSX.Element => {\n let {\n segments: { current: currentSegment },\n } = this.props;\n\n return (\n {`${currentSegment}% complete`}
    \n );\n };\n\n public renderProfileIcon = (hasDefaultUserName: boolean): JSX.Element => {\n let { user } = this.props;\n\n return hasDefaultUserName\n ? defaultProfileIcon\n : profileIconWithInitials(user.firstName ?? '', user.lastName ?? '');\n };\n\n public renderUserName = (hasDefaultUserName: boolean): string => {\n let { user } = this.props;\n\n return hasDefaultUserName\n ? 'Your name'\n : `${capitalize(user.firstName ?? '')} ${capitalize(user.lastName ?? '')}`;\n };\n\n public renderStudioName = (): string => {\n let { publisher } = this.props;\n\n return isDefaultCompany(publisher.name, publisher.id)\n ? 'Your studio profile'\n : capitalize(publisher.name ?? '');\n };\n\n public render = (): JSX.Element => {\n let { user, segments } = this.props;\n\n let hasDefaultUserName: boolean = isDefaultUserName(user.firstName, user.lastName);\n let userNameItalics: string = isDefaultUserName(user.firstName, user.lastName)\n ? 'user-name-italics'\n : '';\n\n return (\n \n

    \n {this.renderStudioName()}\n

    \n
    \n {this.renderProfileIcon(hasDefaultUserName)}\n \n {this.renderUserName(hasDefaultUserName)}\n \n
    \n \n \n \n \n {this.renderProgressComplete()}\n
    \n );\n };\n}\n\nexport { ProfileWidget };\n","import React from 'react';\n\nconst HexagonSvg = ({ color = 'D4D7DD' }: { color: string }): JSX.Element => (\n \n \n \n);\n\nexport default HexagonSvg;\n","import * as React from 'react';\n\nimport Tooltip from '@mui/material/Tooltip';\nimport withStyles from '@mui/styles/withStyles';\n\nimport variables from '@app/core/variables.scss';\n\nconst SidebarTooltipWithStyles = withStyles({\n tooltip: {\n padding: '12px 16px',\n minWidth: '140px',\n backgroundColor: 'black',\n color: variables.colorGrayArrowDisabledState,\n },\n arrow: {\n color: 'black',\n },\n popper: {\n zIndex: 1500, // z-index for tooltips according to mui\n },\n})(Tooltip);\n\nconst SidebarTooltip = ({\n id,\n title,\n children,\n shouldShowTooltip,\n}: {\n id: number;\n title: string;\n children: JSX.Element;\n shouldShowTooltip: boolean;\n}) => {\n const tooltipContent = (\n
    \n
    {title}
    \n
    \n );\n\n if (!shouldShowTooltip) {\n return children;\n }\n\n return (\n \n
    {children}
    \n \n );\n};\n\nexport default SidebarTooltip;\n","import React, { useState, useEffect } from 'react';\n\nimport variables from '@app/core/variables.scss';\n\nimport { componentClassName } from '../WizardView';\nimport HexagonSvg from './HexagonSvg';\nimport SidebarTooltip from './SidebarTooltip';\n\nconst getIconColor = (isVisited: boolean, isActive: boolean) => {\n if (isActive) return variables.colorBrandBlue;\n if (isVisited) return variables.colorWhite;\n\n return variables.colorGray100Borders;\n};\n\nconst SidebarLink = ({\n id,\n linkTitle,\n currentHelpBitId,\n handleChangeHelpBit,\n shouldShowTooltip,\n}: {\n id: number;\n linkTitle: string;\n currentHelpBitId: number;\n handleChangeHelpBit: (helpBitId: number) => () => void;\n shouldShowTooltip: boolean;\n}): JSX.Element => {\n const [isVisited, setIsVisited] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n useEffect(() => {\n if (id === currentHelpBitId) {\n setIsActive(true);\n setIsVisited(true);\n } else {\n setIsActive(false);\n }\n }, [currentHelpBitId]);\n\n const className =\n `${componentClassName}__sidebar-link` +\n (isVisited ? ' visited' : '') +\n (isActive ? ' active' : '');\n\n return (\n
    \n \n \n \n \n
    \n
    {linkTitle}
    \n \n );\n};\n\nexport default SidebarLink;\n","import React from 'react';\n\nimport useWindowDimensions from '@app/common/hooks/useWindowDimensions';\nimport { IHelpBitResponse } from '@app/modules/ContentManagementSystem/interfaces';\n\nimport { componentClassName } from '../WizardView';\nimport SidebarLink from './SidebarLink';\nimport './wizardSidebar.scss';\n\nexport const WIZARD_SIDEBAR_TITLE_CUTOFF = 960;\n\nconst renderSidebarLinks = (\n helpBits: IHelpBitResponse[],\n currentHelpBitId: number,\n handleChangeHelpBit: (helpBitId: number) => () => void,\n shouldShowTooltips: boolean\n) => {\n return helpBits.map((helpBit) => (\n \n ));\n};\n\ninterface IWizardSidebarProps {\n helpBits: IHelpBitResponse[];\n currentHelpBit: IHelpBitResponse;\n handleChangeHelpBit: (helpBitId: number) => () => void;\n}\n\nconst WizardSidebar = ({\n helpBits,\n currentHelpBit,\n handleChangeHelpBit,\n}: IWizardSidebarProps): JSX.Element => {\n const { width } = useWindowDimensions();\n let shouldShowTooltips = false;\n if (width <= WIZARD_SIDEBAR_TITLE_CUTOFF) {\n shouldShowTooltips = true;\n }\n\n return (\n \n {renderSidebarLinks(helpBits, currentHelpBit.id, handleChangeHelpBit, shouldShowTooltips)}\n \n );\n};\n\nexport default WizardSidebar;\n","import React, { useEffect, useState } from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport Backdrop from '@mui/material/Backdrop';\nimport Fade from '@mui/material/Fade';\nimport { useSnackbarContext } from '@skillzet/components';\n\nimport { renderFooterComponents } from '@app/modules/ContentManagementSystem/helpers/renderFooterComponents';\nimport { IHelpBitResponse } from '@app/modules/ContentManagementSystem/interfaces';\n\nimport { fetchHelpBit } from '../../utils';\nimport Content from '../Content/modules/Content';\nimport Footer from '../Content/modules/Footer';\nimport Header from '../Content/modules/Header';\nimport LoadingIndicator from '../LoadingIndicator';\nimport WizardSidebar from './subcomponents/WizardSidebar';\nimport './wizardView.scss';\n\nexport interface IWizardView {\n helpBitId: number;\n closeModal: () => void;\n}\n\nconst iconStyle = {\n width: '14px',\n height: '14px',\n};\n\nconst MODAL_ANIMATION_TIMEOUT = 100;\n\nexport const componentClassName = 'wizard-view-container';\n\nconst WizardView = ({ helpBitId, closeModal }: IWizardView): JSX.Element => {\n const [isLoading, setIsLoading] = useState(true);\n const [isInView, setIsInView] = useState(true);\n const [helpBitsList, setHelpBitsList] = useState([] as IHelpBitResponse[]);\n const { show: showSnackbar } = useSnackbarContext();\n const [currentHelpBit, setCurrentHelpBit] = useState({} as IHelpBitResponse);\n\n const handleToggleClose = () => {\n setIsInView((prev) => !prev);\n\n // give some time for animation to complete\n setTimeout(() => {\n closeModal();\n }, MODAL_ANIMATION_TIMEOUT);\n };\n\n const fetchHelpBitsChainRecursively = (\n id: number = helpBitId,\n fetchedHelpBits: IHelpBitResponse[] = []\n ): void => {\n void fetchHelpBit({ id }).then((response: { data: IHelpBitResponse } | void) => {\n if (!response) {\n setIsLoading(false);\n\n return;\n }\n\n const data = response.data;\n\n fetchedHelpBits.push(data);\n if (data.next) {\n fetchHelpBitsChainRecursively(data.next.id, fetchedHelpBits);\n } else {\n setHelpBitsList(fetchedHelpBits);\n setIsLoading(false);\n }\n });\n };\n\n useEffect(() => {\n try {\n fetchHelpBitsChainRecursively();\n } catch {\n showSnackbar('Could not fetch help bits');\n }\n }, []);\n\n useEffect(() => {\n if (helpBitsList.length) {\n setCurrentHelpBit(helpBitsList[0]);\n }\n }, [isLoading]);\n\n const handleChangeHelpBit = (targetHelpBitId: number) => {\n return (): void => {\n if (helpBitsList.length) {\n const targetHelpBit = helpBitsList.find(\n (helpBit: IHelpBitResponse) => helpBit.id === targetHelpBitId\n );\n if (targetHelpBit) {\n setCurrentHelpBit(targetHelpBit);\n }\n }\n };\n };\n\n return (\n \n \n {/* wizard modal's zIndex is 1000001 */}\n
    \n {isLoading ? (\n \n ) : (\n <>\n \n
    \n ,\n ]}\n />\n
    \n \n \n
    \n
    \n \n )}\n
    \n
    \n
    \n );\n};\n\nexport default WizardView;\n","import React, { useState } from 'react';\n\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { default as ReactGA4 } from 'react-ga4';\n\nimport { GOOGLE_ANALYTICS_4 } from '@app/common/constants/googleAnalytics4';\nimport WizardView from '@app/modules/ContentManagementSystem/modules/WizardView/WizardView';\nimport { renderVideoModal } from '@appGameProgression/modules/SeasonsTab/subcomponents/VideoModal';\n\nimport {\n learningCenterCardStyles,\n LINEAR_BACKGROUND,\n learningCenterCardAspectRatio,\n} from './constants';\nimport { ILearningCenterCardProps } from './interfaces';\n\ninterface IWizardProps extends ILearningCenterCardProps {\n helpBitId: number;\n}\n\ninterface IVideoProps extends ILearningCenterCardProps {\n videoUrl: string;\n}\n\ntype TInteractiveCardProps = IWizardProps | IVideoProps;\n\nexport default function InteractiveCard(props: TInteractiveCardProps) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const muiTheme = useTheme();\n\n const handleClick = () => {\n ReactGA4.event({\n category: GOOGLE_ANALYTICS_4.USER.CATEGORY,\n action: GOOGLE_ANALYTICS_4.USER.ACTIONS.LEARNING_CENTER_CARD_CLICK(\n props.category,\n props.children\n ),\n });\n\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n };\n\n const cardStyle = {\n ...learningCenterCardStyles,\n backgroundImage: `${LINEAR_BACKGROUND}, url(${props.backgroundImage})`,\n };\n\n const isLessThanMd = useMediaQuery(muiTheme.breakpoints.down('md'));\n\n // maintain aspect ratio in learning center, when there's no profile widget, or when less than md width\n if (props.shouldMaintainAspectRatio || isLessThanMd) {\n Object.assign(cardStyle, { aspectRatio: learningCenterCardAspectRatio });\n }\n\n const renderCard = () => (\n \n \n \n {props.icon}\n \n {props.children}\n \n \n );\n\n if ('helpBitId' in props && !!props.helpBitId) {\n return (\n <>\n {renderCard()}\n {isModalOpen && }\n \n );\n }\n\n if ('videoUrl' in props && !!props.videoUrl) {\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n return (\n <>\n {renderCard()}\n {renderVideoModal(isModalOpen, props.children, handleToggle, props.videoUrl)}\n \n );\n }\n\n return <>;\n}\n","import React from 'react';\n\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { default as ReactGA4 } from 'react-ga4';\nimport { useHistory } from 'react-router-dom';\n\nimport { GOOGLE_ANALYTICS_4 } from '@app/common/constants';\n\nimport {\n learningCenterCardStyles,\n LINEAR_BACKGROUND,\n learningCenterCardAspectRatio,\n} from './constants';\nimport { ILearningCenterCardProps, TCardBehavior } from './interfaces';\n\ninterface ILinkCardProps extends ILearningCenterCardProps {\n targetLink: string;\n behavior: TCardBehavior;\n}\n\nexport default function LinkCard({\n children,\n icon,\n backgroundImage,\n behavior,\n targetLink,\n shouldMaintainAspectRatio,\n category,\n}: ILinkCardProps) {\n const history = useHistory();\n const muiTheme = useTheme();\n\n const cardStyle = {\n ...learningCenterCardStyles,\n backgroundImage: `${LINEAR_BACKGROUND}, url(${backgroundImage})`,\n };\n\n const handleClick = () => {\n ReactGA4.event({\n category: GOOGLE_ANALYTICS_4.USER.CATEGORY,\n action: GOOGLE_ANALYTICS_4.USER.ACTIONS.LEARNING_CENTER_CARD_CLICK(category, children),\n });\n\n if (behavior === 'link') {\n if (targetLink.startsWith('http')) {\n window.location.href = targetLink;\n\n return;\n }\n\n return history.push(targetLink);\n }\n\n if (behavior === 'download') {\n return (window.location.href = targetLink);\n }\n\n return window.open(targetLink, '_blank');\n };\n\n // maintain aspect ratio in learning center, when there's no profile widget, or when less than md width\n if (shouldMaintainAspectRatio || useMediaQuery(muiTheme.breakpoints.down('md'))) {\n Object.assign(cardStyle, { aspectRatio: learningCenterCardAspectRatio });\n }\n\n return (\n \n \n \n {icon}\n \n {children}\n \n \n );\n}\n","import React from 'react';\n\nimport PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline';\nimport Grid from '@mui/material/Grid';\n\nimport { IActionNoData } from '@app/common/interfaces';\nimport document from '@app/imageAssets/Dashboard/document.svg';\nimport downloadFile from '@app/imageAssets/Dashboard/downloadFile.svg';\nimport { TOrder } from '@app/modules/GameManagement/modules/GameHome/modules/GameProgression/modules/SeasonsTab/subcomponents/SeasonDetails/interfaces';\n\nimport { ProfileWidget } from '../WhatsNew/subcomponents';\nimport InteractiveCard from './InteractiveCard';\nimport LinkCard from './LinkCard';\nimport { ILearningCenterCard, IProfileWidgetData, TSortItem, TSortKey } from './interfaces';\nimport { TCardBehavior, TLearningCenterIcon } from './interfaces';\n\nconst descendingComparator = (a: TSortItem, b: TSortItem, orderBy: TSortKey) => {\n const highestUtfCode = String.fromCodePoint(0x10ffff);\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n const A = a[orderBy] ?? highestUtfCode;\n const B = b[orderBy] ?? highestUtfCode;\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n\n if (B < A) {\n return -1;\n }\n if (B > A) {\n return 1;\n }\n\n return 0;\n};\n\nexport const learningCenterSortComparator = (\n order: TOrder,\n orderBy: TSortKey\n): ((a: TSortItem, b: TSortItem) => number) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n};\n\nconst renderCardIcon = (iconType: TLearningCenterIcon) => {\n if (iconType === 'play') {\n return ;\n }\n\n if (iconType === 'download') {\n return ;\n }\n\n return ;\n};\n\nexport const renderCardWithComponent = (\n card: ILearningCenterCard,\n shouldMaintainAspectRatio?: boolean\n) => {\n const typesThatUseInteractiveCard = ['video', 'wizard'];\n\n return (\n \n {typesThatUseInteractiveCard.includes(card.target) ? (\n 0 ? card.helpBits[0].id : undefined}\n shouldMaintainAspectRatio={shouldMaintainAspectRatio}\n category={card.learningCenterCategory.CategoryName}\n >\n {card.Title}\n \n ) : (\n \n {card.Title}\n \n )}\n \n );\n};\n\nexport const sortAndRenderLearningCenterCards = (\n categoryId: number,\n cards: ILearningCenterCard[],\n sortBy: keyof ILearningCenterCard,\n shouldCardsRetainAspectRatio?: boolean\n) =>\n cards\n .filter((card) => !!card[sortBy] && card.learningCenterCategory?.id === categoryId)\n // hard coded for now, possible to sort by other ways in the future\n .sort(learningCenterSortComparator('asc', sortBy as TSortKey))\n .map((card) => renderCardWithComponent(card, shouldCardsRetainAspectRatio));\n\nexport const sortAndRenderWhatsNewCards = (\n cards: ILearningCenterCard[],\n sortBy: keyof ILearningCenterCard,\n openProfileModal: () => IActionNoData,\n shouldShowProfileWidget: boolean,\n profileWidgetData?: IProfileWidgetData\n): JSX.Element[] => {\n const renderedCards = cards\n .filter((card) => !!card[sortBy])\n // hard coded for now, possible to sort by other ways in the future\n .sort(learningCenterSortComparator('asc', sortBy as TSortKey))\n .slice(0, 3)\n .map((card) => renderCardWithComponent(card, !shouldShowProfileWidget));\n\n if (shouldShowProfileWidget && !!profileWidgetData) {\n const { user, publisher, segments } = profileWidgetData;\n const testId = 'dashboard-profile-widget';\n\n renderedCards.pop();\n renderedCards.push(\n \n \n \n );\n }\n\n return renderedCards;\n};\n","import { useQuery } from 'react-query';\n\nimport { getLearningCenterCategories, getLearningCenterCards, getGames } from './actions';\n\nexport const useLearningCenterCategories = () =>\n useQuery(['learningCenterCategories'], () => getLearningCenterCategories());\n\nexport const useLearningCenterCards = () =>\n useQuery(['learningCenterCards'], () => getLearningCenterCards());\n\nexport const useGames = () => useQuery(['games'], () => getGames());\n","export const IS_PROFILE_MODAL_OPEN = 'isProfileModalOpen';\nexport const IS_GAME_INFO_MODAL_OPEN = 'isGameInfoModalOpen';\nexport const IS_PROGRESSION_ROOM_EDIT_MODAL_OPEN = 'isProgressionRoomEditModalOpen';\nexport const IS_AUDIT_NOTE_MODAL_OPEN = 'isAuditNoteModalOpen';\nexport const IS_ENTRY_POINT_CONFIRM_MODAL_OPEN = 'isEntryPointConfirmModalOpen';\nexport const IS_ENTRY_POINT_SYNC_MODAL_OPEN = 'isEntryPointSyncModalOpen';\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\n\nimport { IRootState } from '@app/core/rootReducer';\n\nconst NoAccessPage = loadable(\n () => import(/* webpackChunkName: \"no-access-page\" */ './NoAccessPage')\n);\n\nconst mapStateToProps = (state: IRootState) => ({\n publisherId: state.publisher.publisherInfo.id.toString(),\n});\n\nconst connector = connect(mapStateToProps, {});\n\nexport type TNoAccessPageConnectedProps = ConnectedProps;\n\nexport default connector(NoAccessPage);\n","import loadable from '@loadable/component';\n\nimport { withRouter } from 'react-router-dom';\n\nconst NotFoundPage = loadable(\n () => import(/* webpackChunkName: \"not-found-page\" */ './NotFoundPage')\n);\n\nexport default withRouter(NotFoundPage);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize is by definition an un-typeable Any => Any\nimport camelize from 'camelize';\nimport mapKeys from 'lodash/mapKeys';\nimport omit from 'lodash/omit';\nimport snakeCase from 'lodash/snakeCase';\nimport { IIndexResponse } from 'portal-common-library/interfaces/redux';\nimport qs from 'qs';\n\nimport { handleError, snakeCaseConverter } from '@app/common/helpers';\n\nimport { NOTIFICATION_ACTIONS } from './constants';\nimport {\n ICmsNotification,\n ICmsNotificationsParams,\n INotification,\n INotificationIndexParams,\n} from './interfaces';\n\nconst CMS_NOTIFICATIONS_ACTIONS: Record = {\n dismissed: 'dismiss',\n viewed: 'snooze',\n interacted: 'acknowledge',\n};\n\nexport const fetchNotificationItems = createAsyncThunk(\n 'notificationItem/fetch',\n async (params: INotificationIndexParams) => {\n // params.offset = params.page + 1;\n let urlParams = mapKeys(omit(params, ['page']), (_, k) => snakeCase(k));\n const response: AxiosResponse> = await axios\n .get(`/api_internal/v1/notifications`, {\n params: urlParams,\n })\n .then(camelize);\n\n return response.data;\n }\n);\n\n/* eslint-disable camelcase */\nexport const logNotificationUserAction = (\n notificationId: number,\n action: NOTIFICATION_ACTIONS,\n userId: number\n): Promise => {\n return window.appConfig.featureFlags.cmsNotification\n ? axios.post('/publisher/v1/notification_responses/cms', {\n notification: notificationId,\n response_type: CMS_NOTIFICATIONS_ACTIONS[action],\n user_id: userId,\n })\n : axios.post(`/api_internal/v1/notifications/${notificationId}/logs`, {\n log: { action },\n });\n};\n/* eslint-enable camelcase */\n\nexport const contentManagementSystemInstance = axios.create();\ndelete contentManagementSystemInstance.defaults.headers.common['X-CSRF-TOKEN'];\n\nexport async function fetchCmsNotifications(\n params: ICmsNotificationsParams = {},\n isFtue: boolean,\n userRole: string\n): Promise {\n const today = new Date().toISOString().split('T')[0];\n /* eslint-disable camelcase */\n const filters = qs.stringify({\n _where: [\n { _or: [{ end_date_gte: today }, { end_date_null: true }] },\n { _or: [{ is_ftue: isFtue }, { is_ftue_null: true }] },\n { _or: [{ user_role: 'everyone' }, { user_role: userRole }] },\n { start_date_lte: today },\n ],\n _sort: 'id:ASC',\n ...snakeCaseConverter(params),\n });\n /* eslint-enable camelcase */\n\n return contentManagementSystemInstance\n .get(`${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/notifications?${filters}`)\n .then(camelize)\n .then(({ data }: AxiosResponse) => data)\n .catch(handleError);\n}\n\nexport async function fetchNotifications(): Promise {\n const response: IIndexResponse = await axios\n .get(`/api_internal/v1/notifications`)\n .then(camelize)\n .then(({ data }: AxiosResponse>) => data)\n .catch(handleError);\n\n return response?.items;\n}\n","import loadable from '@loadable/component';\n\nimport { connect, ConnectedProps } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\n\nimport { IRootState } from '@app/core/rootReducer';\n\nconst SignUpComponent = loadable(() => import(/* webpackChunkName: \"sign-up\" */ './SignUp'));\n\nconst mapStateToProps = (state: IRootState) => {\n let { feature } = state;\n\n return {\n feature,\n };\n};\n\nconst connector = connect(mapStateToProps, {});\n\nexport type TSignUpConnectedProps = ConnectedProps & RouteComponentProps;\n\nexport const SignUp = connector(withRouter(SignUpComponent));\n","export enum UserFlowErrors {\n Blank = 'Please fill out this field.',\n InvalidEmail = 'Please enter a valid email address',\n PasswordMinimum = 'Password must be minimum of 8 characters.',\n PasswordMaximum = 'Password is too long (maximum is 128 characters)'\n}\n\nexport enum EMAIL_PASSWORD_ERROR {\n PASSWORD = 'passwordError',\n EMAIL = 'emailError'\n}\n","import * as React from 'react';\n\nimport Card from '@mui/material/Card';\n\nimport androidLogo from '@app/imageAssets/androidLogo.png';\nimport iosLogo from '@app/imageAssets/iosLogo.png';\nimport unityLogo from '@app/imageAssets/unityLogo.png';\n\ninterface IProps {\n className: string;\n}\n\nclass CardContainer extends React.PureComponent {\n public render(): JSX.Element {\n let { className, children } = this.props;\n let isHomePage: boolean = window.location.pathname === '/';\n const isDeveloperLandingPageOverhaulEnabled =\n window.appConfig.featureFlags.developerLandingPageOverhaul;\n\n return (\n <>\n {(!isHomePage || !isDeveloperLandingPageOverhaulEnabled) && (\n \n {children}\n \n )}\n\n {isHomePage &&\n (isDeveloperLandingPageOverhaulEnabled ? (\n \n

    Sign up

    \n {children}\n
    \n \"ios\n \"android\n \"unity\n
    \n \n ) : (\n
    \n \"ios\n \"android\n \"unity\n
    \n ))}\n \n );\n }\n}\nexport { CardContainer };\n","import * as React from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport Snackbar from '@mui/material/Snackbar';\n\nimport AtomButton from 'portal-common-library/atoms/AtomButton';\nimport AtomTextField from 'portal-common-library/atoms/AtomTextField';\nimport { Link } from 'react-router-dom';\n\nimport { MATERIAL_UI_VARIANTS } from '@app/common/constants';\nimport { TInputChangeEvent } from '@app/common/interfaces';\n\nimport { IEmail, IRailsUserData, UserFlowErrors } from './';\n\nexport interface IForgotPassState extends IEmail {\n error: string;\n isToastOpen: boolean;\n}\n\nclass ForgotPassword extends React.Component {\n constructor(props: unknown) {\n super(props);\n this.state = {\n email: '',\n error: '',\n isToastOpen: false,\n };\n }\n\n public handleInputChange = (event: TInputChangeEvent): void => {\n // handles setting email state and error state if needed\n let { error } = this.state;\n let { value } = event.currentTarget;\n if (error) {\n this.setState({\n email: value,\n error: '',\n });\n } else {\n this.setState({ email: value });\n }\n };\n\n public validateEmail(): boolean {\n let { email } = this.state;\n if (!email) {\n // email should not be blank\n this.setState({ error: UserFlowErrors.Blank });\n\n return false;\n }\n // email should have an @\n if (!email.includes('@')) {\n this.setState({ error: UserFlowErrors.InvalidEmail });\n\n return false;\n }\n\n return true;\n }\n\n public handleSubmit = (): void => {\n let { email } = this.state;\n\n if (!this.validateEmail()) {\n return;\n }\n\n let data: IRailsUserData = { user: { email } };\n void $.ajax({\n url: `/users/password`,\n method: 'POST',\n data,\n }).then(() => {\n this.setState({ isToastOpen: true });\n });\n };\n\n public handleToastClose = (): void => {\n this.setState({ isToastOpen: false });\n };\n\n public renderToast(): JSX.Element {\n return (\n A link to reset your password has been sent to your email\n }\n action={[\n \n \n ,\n ]}\n />\n );\n }\n\n public render(): JSX.Element {\n let { email, error, isToastOpen } = this.state;\n\n return (\n
    \n
    \n

    Forgot Password?

    \n
    \n
    \n

    \n Enter the email address associated with your account. We will email you a link to\n reset your password.\n

    \n
    \n
    \n\n
    \n \n
    \n
    \n \n
    \n
    \n Remembered your password? \n \n Login here\n \n
    \n {isToastOpen && this.renderToast()}\n
    \n Don't have an account?\n
    \n \n Sign up here\n \n
    \n
    \n
    \n );\n }\n}\n\nexport { ForgotPassword };\n","import React, { useContext, useState, createContext } from 'react';\n\nimport { ISurveyState } from './interfaces';\n\ninterface ISurveyContext extends ISurveyState {\n openSurvey: (surveyTrigger: string) => void;\n closeSurvey: () => void;\n}\n\nconst SurveyContext = createContext({\n openSurvey: () => undefined,\n closeSurvey: () => undefined,\n});\n\nexport function useSurveyContext() {\n return useContext(SurveyContext);\n}\n\nexport function SurveyContextProvider(props: { children: JSX.Element[] | JSX.Element }) {\n const [surveyState, setSurveyState] = useState({});\n\n const openSurvey = (surveyTrigger: string) => {\n setSurveyState({\n surveyTrigger,\n });\n };\n\n const closeSurvey = () => {\n setSurveyState({\n surveyTrigger: undefined,\n });\n };\n\n return (\n \n {props.children}\n \n );\n}\n","import axios, { AxiosResponse } from 'axios';\n// @ts-ignore: camelize package is not typed\nimport camelize from 'camelize';\n\nimport { snakeCaseConverter } from '@app/common/helpers';\nimport { handleError } from '@app/common/helpers';\n\nimport { ISurvey, ISurveyResponse, ISurveyAnswer, TSurveyTarget } from './interfaces';\n\n// a separate instance of `axios` which removes the `x-csrf-token` that keeps\n// getting injected on each request to prevent CORS errors\nexport const contentManagementSystemInstance = axios.create();\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\ndelete contentManagementSystemInstance.defaults.headers.common['X-CSRF-TOKEN'];\n\ninterface IPostSurveyResponseParams {\n userId: number;\n userType: string;\n isDismissal: boolean;\n pageLocation: string;\n surveyId: number;\n answers: ISurveyAnswer[];\n}\n\nexport const getSurvey = (surveyTrigger: string, targetType: TSurveyTarget) =>\n contentManagementSystemInstance\n .get(\n `${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/surveys?trigger=${surveyTrigger}&target_in=all&target_in=${targetType}`\n )\n .then(camelize)\n .then(({ data }: AxiosResponse) => data[0])\n .catch(handleError);\n\nexport const getLatestSurveyResponse = (userId: number, surveyId: number) =>\n contentManagementSystemInstance\n .get(\n `${window.appConfig.environment.cmsBaseUrl}/publisher/v1/cms/survey-responses?user_id=${userId}&survey_id=${surveyId}&_sort=created_at:DESC&_limit=1`\n )\n .then(camelize)\n .then(({ data }: AxiosResponse) => data[0])\n .catch(handleError);\n\nexport const postSurveyResponse = (params: IPostSurveyResponseParams) => {\n // TODO change this back to contentManagementSystemInstance when we call CMS directly\n return axios\n .post(`/publisher/v1/survey_responses/cms`, snakeCaseConverter(params))\n .then(camelize)\n .catch(handleError);\n};\n","export const DEFAULT_SURVEY_TITLE = 'How was your overall experience?';\n\nexport const DEFAULT_FREEFORM_TEXT_QUESTION = 'Comments';\n\nexport const FREEFORM_TEXT_PLACEHOLDER = 'Your feedback (optional)';\n\n/**\n * player - user who has no games at all, might have mistakenly signed up as developer\n * developer - user who has games in progress but no launched games\n * activeDeveloper - user who has launched games\n */\n\nexport const USER_TYPES = ['player', 'developer', 'activeDeveloper'] as const;\n\nexport const SURVEY_TARGETS = ['players', 'developers', 'activeDevelopers'] as const;\n\nexport const SURVEY_TYPES = ['CSAT', 'NPS', 'SUS'] as const;\n\n// use the PopupSurvey component\nexport const TOAST_SURVEYS = ['CSAT', 'NPS'];\n\n// use the DialogSurvey compoent\nexport const DIALOG_SURVEYS = ['SUS'];\n\nexport const SURVEY_24H_COOKIE = 'last_survey_completed_at';\n\nexport const SUCCESS_SUBMISSION_SNACKBAR_MESSAGE = 'Response submitted, thank you.';\n","import React, { useState } from 'react';\n\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport useTheme from '@mui/styles/useTheme';\n\nimport times from 'lodash/times';\n\nimport { ISurveyAnswer, TSurveyQuestion } from './interfaces';\n\nexport const testIdPrefix = 'survey-numeric-selector-option-';\n\nexport interface INumericSelectorProps {\n question: TSurveyQuestion;\n startLabel?: string;\n endLabel?: string;\n onChange: (newAnswer: ISurveyAnswer) => void;\n}\n\nconst labelStyle = { fontStyle: 'italic' };\n\nexport default function NumericSelector({\n question,\n startLabel,\n endLabel,\n onChange,\n}: INumericSelectorProps) {\n const [selectedOption, setSelectedOption] = useState();\n const muiTheme = useTheme();\n\n // tells typescript this is a numeric question for sure\n if (question.questionType !== 'numeric') return <>;\n\n return (\n <>\n \n {times(question.numberOfOptions, (index) => {\n const optionValue = index + Number(!question.optionsStartFromZero);\n const selectOption = () => {\n setSelectedOption(optionValue);\n onChange({ surveyQuestionId: question.id, body: `${optionValue}` });\n };\n\n return (\n \n \n {optionValue}\n \n \n );\n })}\n \n {startLabel && endLabel && (\n \n {startLabel}\n {endLabel}\n \n )}\n \n );\n}\n","import React, { useState, ChangeEvent } from 'react';\n\nimport TextField from '@mui/material/TextField';\n\nimport { FREEFORM_TEXT_PLACEHOLDER } from './constants';\nimport { ISurveyAnswer } from './interfaces';\nimport './surveyTextInputMuiCssFix.scss';\n\ninterface ISurveyTextInputProps {\n surveyQuestionId: number;\n onChange: (newAnswer: ISurveyAnswer) => void;\n}\n\nexport default function SurveyTextInput({ onChange, surveyQuestionId }: ISurveyTextInputProps) {\n const [inputValue, setInputValue] = useState('');\n\n const handleChange = (e: ChangeEvent) => {\n setInputValue(e.target.value);\n onChange({ surveyQuestionId, body: e.target.value });\n };\n\n return (\n \n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\n\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { TIME_IN_MILLISECONDS } from '@app/common/constants';\nimport { IDashboardGame } from '@app/common/interfaces';\nimport { hasLaunchedToStore, hasFirstGame } from '@app/modules/Dashboard/helpers';\n\nimport NumericSelector from './NumericSelector';\nimport SurveyTextInput from './SurveyTextInput';\nimport { SURVEY_24H_COOKIE } from './constants';\nimport { TSurveyQuestion, ISurveyAnswer, TUserType, TSurveyTarget } from './interfaces';\n\nexport const renderQuestionWithAppropriateComponent = (\n question: TSurveyQuestion,\n onChangeFunc: (newAnswer: ISurveyAnswer) => void\n): JSX.Element => {\n if (question.questionType === 'numeric') {\n return (\n \n {question.body}\n \n \n \n \n );\n }\n\n return (\n \n {question.body}\n \n \n );\n};\n\nexport const addAnswer =\n (answers: ISurveyAnswer[], setStateFunction: Dispatch>) =>\n (newAnswer: ISurveyAnswer) => {\n const existingAnswerIndex = answers.findIndex(\n (recordedAnswer) => recordedAnswer.surveyQuestionId === newAnswer.surveyQuestionId\n );\n\n if (existingAnswerIndex < 0) {\n setStateFunction((prev) => {\n return [...prev, newAnswer];\n });\n\n return;\n }\n\n setStateFunction((prev) => {\n const existingAnswers = [...prev];\n existingAnswers[existingAnswerIndex] = newAnswer;\n\n return existingAnswers;\n });\n };\n\nexport const validateAnswers = (\n allQuestions: TSurveyQuestion[],\n answers: ISurveyAnswer[]\n): { errors?: string[] } => {\n const errorMessages: string[] = [];\n\n allQuestions.forEach((question) => {\n if (!question.isRequired) return;\n\n if (!answers.find((answer) => answer.surveyQuestionId === question.id)) {\n errorMessages.push(`Question \"${question.body}\" is required`);\n }\n });\n\n if (errorMessages.length === 0) {\n return { errors: undefined };\n }\n\n return { errors: errorMessages };\n};\n\nexport const determineUserType = (games: IDashboardGame[]): TUserType => {\n if (hasLaunchedToStore(games)) {\n return 'activeDeveloper';\n }\n\n if (hasFirstGame(games)) {\n return 'developer';\n }\n\n return 'player';\n};\n\nexport const mapUserTypeToSurveyTarget = (userType: TUserType): TSurveyTarget => {\n return `${userType}s` as unknown as TSurveyTarget;\n};\n\nexport const checkHasUserRespondedInLast24Hours = (): boolean => {\n const lastResponse = localStorage.getItem(SURVEY_24H_COOKIE);\n if (!lastResponse) {\n return false;\n }\n\n const lastResponseDate = new Date(Number(lastResponse));\n const date24hAgo = new Date(new Date().getTime() - TIME_IN_MILLISECONDS.DAY);\n\n if (lastResponseDate > date24hAgo) {\n return true;\n }\n\n return false;\n};\n","import { useQuery } from 'react-query';\n\nimport { getSurvey, getLatestSurveyResponse } from './actions';\nimport { TSurveyTarget } from './interfaces';\n\nexport const useSurvey = (surveyTrigger?: string, targetType?: TSurveyTarget) =>\n useQuery(\n ['survey', surveyTrigger],\n () => getSurvey(surveyTrigger as string, targetType as TSurveyTarget),\n {\n // another query for userType happens before this, which gets the userType needed for this query\n enabled: !!targetType && !!surveyTrigger,\n }\n );\n\nexport const useLatestSurveyResponse = (userId: number, surveyId?: number) =>\n useQuery(\n ['surveyResponses', userId, surveyId],\n () => getLatestSurveyResponse(userId, surveyId as number),\n {\n // useSurvey happens before this, which gets the surveyId needed for this query\n enabled: !!surveyId,\n }\n );\n","import { Dispatch } from 'redux';\n\nimport { IAction } from '@app/common/interfaces';\nimport { IQuestionSet } from '@app/common/interfaces';\n\nimport * as ApiUtils from './utils';\n\nexport enum SURVEY_TOOL {\n SHOW_SURVEY = 'survey/SHOW_SURVEY',\n HIDE_SURVEY = 'survey/HIDE_SURVEY',\n RECEIVE_QUESTIONS = 'survey/RECEIVE_QUESTIONS',\n}\n\nexport const showSurvey = (data: string): IAction => {\n return {\n type: SURVEY_TOOL.SHOW_SURVEY,\n data,\n };\n};\n\nexport const hideSurvey = (fromLocation: string): IAction => {\n return {\n type: SURVEY_TOOL.HIDE_SURVEY,\n data: fromLocation,\n };\n};\n\nexport const receiveQuestions = (data: IQuestionSet): IAction => {\n return {\n type: SURVEY_TOOL.RECEIVE_QUESTIONS,\n data,\n };\n};\n\nexport const fetchAllQuestions = (userId: number) => {\n return (dispatch: Dispatch>): void => {\n void ApiUtils.fetchValidQuestions(userId).then((response: IQuestionSet) => {\n dispatch(receiveQuestions(response));\n });\n };\n};\n","import { snakeCaseConverter } from '@app/common/helpers';\nimport { IQuestionSet } from '@app/common/interfaces';\nimport { ICreateResponseData, IPatchResponseData } from './interfaces';\n\ntype TSurveyFetch = (userId: number) => JQuery.jqXHR;\ntype TSurveyCreate = (surveyResponse: ICreateResponseData) => JQuery.jqXHR;\ntype TSurveyUpdate = (surveyResponse: IPatchResponseData) => JQuery.jqXHR;\n\n// calls server to fetch the valid questions\nexport const fetchValidQuestions: TSurveyFetch = (userId: number): JQuery.jqXHR => {\n return $.ajax({\n url: `/survey_questions/show_valid_questions.json`,\n method: 'GET',\n data: snakeCaseConverter({\n surveyQuestions: {\n userId\n }\n })\n });\n};\n\nexport const createResponse: TSurveyCreate = (\n surveyResponse: ICreateResponseData\n): JQuery.jqXHR => {\n return $.ajax({\n url: `/survey_responses`,\n method: 'POST',\n data: snakeCaseConverter({ surveyResponse })\n });\n};\n\nexport const updateResponse: TSurveyUpdate = (\n surveyResponse: IPatchResponseData\n): JQuery.jqXHR => {\n return $.ajax({\n url: `/survey_responses/${surveyResponse.responseId}`,\n method: 'PATCH',\n data: snakeCaseConverter({ surveyResponse })\n });\n};\n","import * as React from 'react';\n\nimport Button from '@mui/material/Button';\nimport { Theme } from '@mui/material/styles';\nimport { Styles } from '@mui/styles';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { IBaseProps } from '../../interfaces/componentBase';\nimport variables from '../../styles/core/variables.scss';\nimport './styles.scss';\n\nexport interface IAtomButtonProps extends IBaseProps {\n buttonContent: string | JSX.Element;\n // matches our design guide for button\n buttonType: TButtonType;\n isErrorMode: boolean;\n onClick: () => void;\n isDisabled: boolean;\n size: TButtonSize;\n // this is needed for the Mui withStyle classes to be added\n classes?: {\n [className: string]: string;\n };\n // className prop will not be wired-up for atomButton, add constructor to class if this prop needs to be added\n // className?: string\n}\n\nexport type TAtomButtonOptionalProps = 'isDisabled' | 'size' | 'isErrorMode';\n\ntype TDefaultProps = Required>;\n\n// buttonType props matches our design guide\nexport type TButtonType = 'primary' | 'secondary' | 'tertiary';\ntype TButtonSize = 'small' | 'medium' | 'large';\n\n// mocks buttonColor and buttonVariant props for Material UI Button Props\ninterface IColorVariantProps {\n buttonColor: 'inherit' | 'primary' | 'secondary';\n buttonVariant: 'text' | 'outlined' | 'contained';\n}\n\n// simplify logic for out dev to TButtonType\n// this is match of our buttonType to material UI button's prop of color and variant\n// primary => containedPrimary\n// in MaterialUIButton definition: buttonType='primary' && buttonVariant='contained'\n// secondary => outlinedPrimary\n// in MaterialUIButton definition: buttonType='primary' && buttonVariant='outlined'\n// tertiary => textPrimary\n// in MaterialUIButton definition: buttonType='primary' && buttonVariant='text'\n// if button is error mode, then buttonType='secondary' variant remains the same\nfunction determineColorVariantProps(buttonType: string, isErrorMode?: boolean): IColorVariantProps {\n let exportProps: IColorVariantProps = {\n buttonColor: isErrorMode ? 'secondary' : 'primary',\n buttonVariant: 'contained',\n };\n\n switch (buttonType) {\n case 'primary':\n break;\n case 'secondary':\n exportProps.buttonVariant = 'outlined';\n break;\n case 'tertiary':\n exportProps.buttonVariant = 'text';\n break;\n default:\n break;\n }\n\n return exportProps;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst styles: Styles, string> = () => ({\n // basic style that is applied to all buttons\n root: {\n fontSize: '16px',\n lineHeight: '21px',\n fontFamily: 'Roboto',\n borderRadius: '4px',\n textTransform: 'none',\n flexShrink: 0,\n },\n sizeLarge: {\n fontWeight: 500,\n padding: '8px 24px',\n height: '40px',\n },\n // primary\n contained: {\n color: 'white',\n '&:disabled': {\n color: `${variables.colorGray200DisabledState}`,\n backgroundColor: `${variables.colorGray25ContentBackground}`,\n borderColor: `${variables.colorGray25ContentBackground}`,\n },\n },\n containedPrimary: {\n backgroundColor: `${variables.colorBrandBlue}`,\n '&:hover': {\n backgroundColor: `${variables.colorBlueHoverDark}`,\n },\n },\n containedSecondary: {\n backgroundColor: `${variables.colorRed}`,\n '&:hover': {\n backgroundColor: `${variables.colorRedHover}`,\n },\n },\n // secondary\n outlined: {\n backgroundColor: `${variables.colorWhite}`,\n '&:disabled': {\n color: `${variables.colorGray200DisabledState}`,\n borderColor: `${variables.colorGray100Borders}`,\n },\n },\n outlinedPrimary: {\n color: `${variables.colorBrandBlue}`,\n borderColor: `${variables.colorBrandBlue}`,\n '&:hover': {\n color: `${variables.colorBlueHoverDark}`,\n backgroundColor: `${variables.colorBlueHoverLight}`,\n borderColor: `${variables.colorBlueHoverDark}`,\n },\n },\n outlinedSecondary: {\n color: `${variables.colorRed}`,\n borderColor: `${variables.colorRed}`,\n '&:hover': {\n color: `${variables.colorRedHover}`,\n backgroundColor: `${variables.colorRedBackground}`,\n borderColor: `${variables.colorRedHover}`,\n },\n },\n // tertiary\n text: {\n border: `1px solid transparent`,\n '&:disabled': {\n color: `${variables.colorGray200DisabledState}`,\n },\n },\n textPrimary: {\n color: `${variables.colorBrandBlue}`,\n '&:hover': {\n color: `${variables.colorBlueHoverDark}`,\n backgroundColor: `${variables.colorBlueHoverLight}`,\n },\n },\n textSecondary: {\n color: `${variables.colorRed}`,\n '&:hover': {\n color: `${variables.colorRedHover}`,\n backgroundColor: `${variables.colorRedBackground}`,\n },\n },\n});\n\nclass AtomButton extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n isDisabled: false,\n size: 'large',\n isErrorMode: false,\n };\n\n public render(): JSX.Element {\n let {\n onClick,\n buttonType,\n classes,\n id,\n isDisabled,\n size,\n buttonContent,\n isErrorMode,\n dataAttributes,\n } = this.props;\n let colorVariantProps: IColorVariantProps = determineColorVariantProps(buttonType, isErrorMode);\n\n return (\n \n {buttonContent}\n \n );\n }\n}\n\nexport default withStyles(styles)(AtomButton);\n","import * as React from 'react';\n\nimport LaunchIcon from '@mui/icons-material/Launch';\n\nimport { IBaseProps } from '../../interfaces/componentBase';\nimport './styles.scss';\n\nexport interface IAtomLinkProps extends IBaseProps {\n title: string;\n url: string;\n icon?: boolean;\n newTab?: boolean;\n download?: string;\n onClick?: () => void;\n}\n\n/**\n * @param {string} id - html id value\n * @param {Object} dataAttributes - Object with data-qa attribute used for automation.\n * @param {string} title - the text used for the link\n * @param {string} url\n * @param {boolean} [icon=true] - (optional) if launch icon is visible. Default true\n * @param {boolean} [newTab=true] - (optional) if the link opens in a new tab. Default true\n * @param {function} onClick - (option) On click listener\n * @returns A link component\n * @example\n * \n */\nfunction AtomLink({\n title,\n url,\n id,\n dataAttributes,\n icon = true,\n newTab = true,\n download = undefined,\n onClick = undefined,\n}: IAtomLinkProps): JSX.Element {\n return (\n // eslint-disable-next-line react/jsx-no-target-blank\n {\n return;\n })\n }\n href={url}\n target={newTab ? '_blank' : ''}\n rel={newTab ? 'noopener' : ''}\n download={download}\n >\n {title}\n {icon && (\n \n \n \n )}\n \n );\n}\n\nexport default AtomLink;\n","import * as React from 'react';\n\nimport { InputProps as StandardInputProps } from '@mui/material/Input';\nimport TextField from '@mui/material/TextField';\nimport { createTheme, Theme, ThemeProvider } from '@mui/material/styles';\n\nimport { IBaseProps } from '../../interfaces/componentBase';\nimport variables from '../../styles/core/variables.scss';\nimport './styles.scss';\n\nexport interface IAtomTextFieldProps extends IBaseProps {\n attributeName: string;\n autoComplete: string;\n isAutoFocused: boolean;\n isDisabled: boolean;\n errorText: string;\n isFullWidth: boolean;\n isMultiline: boolean;\n hasAnimation: boolean;\n hasError: boolean;\n inputProps?: StandardInputProps['inputProps'];\n InputProps?: Partial;\n label: string;\n onBlur?: (event: React.FocusEvent) => void;\n onChange: (event: React.ChangeEvent) => void;\n onKeyPress: (event: React.KeyboardEvent) => void;\n placeholder: string;\n required: boolean;\n // we need to use `minRows` & `maxRows` moving forward to align with Material UI interfaces\n rows: number;\n rowsMax?: number;\n minRows?: number;\n maxRows?: number;\n type: string;\n value: unknown;\n variant: 'outlined' | 'standard' | 'filled';\n}\n\ntype TDefaultPropKeys =\n | 'autoComplete'\n | 'isAutoFocused'\n | 'errorText'\n | 'hasAnimation'\n | 'hasError'\n | 'isDisabled'\n | 'isFullWidth'\n | 'isMultiline'\n | 'onKeyPress'\n | 'required'\n | 'rows'\n | 'type'\n | 'variant';\n\ntype TDefaultProps = Required>;\n\nconst theme: Theme = createTheme({\n palette: {\n primary: {\n main: `${variables.colorBrandBlue}`,\n dark: `${variables.colorBrandBlue}`,\n },\n },\n});\n\nclass AtomTextField extends React.PureComponent {\n public static defaultProps: TDefaultProps = {\n autoComplete: 'on',\n isAutoFocused: false,\n errorText: '',\n hasAnimation: false,\n hasError: false,\n isDisabled: false,\n isFullWidth: true,\n isMultiline: false,\n onKeyPress: (): void => undefined,\n required: true,\n rows: 1,\n type: 'text',\n variant: 'outlined',\n };\n\n public render(): JSX.Element {\n let {\n id,\n autoComplete,\n isAutoFocused,\n hasAnimation,\n isDisabled,\n hasError,\n isFullWidth,\n errorText,\n inputProps,\n InputProps,\n label,\n isMultiline,\n attributeName,\n onBlur,\n onChange,\n onKeyPress,\n placeholder,\n rows,\n rowsMax,\n type,\n value,\n variant,\n dataAttributes,\n minRows,\n maxRows,\n } = this.props;\n\n const hasNoLabel = label === '' || label === undefined;\n\n const classNames = `${!hasAnimation ? '' : value ? 'expand' : 'animated'} ${\n hasNoLabel ? 'no-label' : ''\n }`;\n\n return (\n \n \n \n );\n }\n}\n\nexport default AtomTextField;\n","export enum SORT_DIRECTION {\n ASC = 'asc',\n DESC = 'desc',\n}\n","module.exports = __webpack_public_path__ + \"images/defaultProfileIcon-37496d07ae91ed5a5d556950c6cc664e.svg\";","module.exports = __webpack_public_path__ + \"images/document-323305e4ea1244392ab7defae4711a58.svg\";","module.exports = __webpack_public_path__ + \"images/downloadFile-90e17e7263513e72a3345796f42cb462.svg\";","module.exports = __webpack_public_path__ + \"images/error-5c5a0f295e6e5754aa7ba5227652b494.svg\";","module.exports = __webpack_public_path__ + \"images/appStoresIcon-f82379bf69d94681e58bd32dfdd350ae.svg\";","module.exports = __webpack_public_path__ + \"images/applePayIcon-291abe8a8a56664f061ec59d05a83f14.svg\";","module.exports = __webpack_public_path__ + \"images/deepLinkingIcon-09572ea11b00c77a1c0dffdac1b00f7a.svg\";","module.exports = __webpack_public_path__ + \"images/error-62a93f96b0a55bc025a5f6442391cba2.svg\";","module.exports = __webpack_public_path__ + \"images/expertMoneyGradient-3599291d9df1741690059d87f8200dcc.svg\";","module.exports = __webpack_public_path__ + \"images/fairPlayIcon-be6f3a87f93cd62a6276267adf79f43f.svg\";","module.exports = __webpack_public_path__ + \"images/fixItIcon-366b0890695bf205f24e4bd6cee9c62e.svg\";","module.exports = __webpack_public_path__ + \"images/gameBuildIcon-d20f165b3edbe47ae6351c56b7f9b1d3.svg\";","module.exports = __webpack_public_path__ + \"images/giftColorIcon-82d8174b0b4efd08904874df440a2e14.svg\";","module.exports = __webpack_public_path__ + \"images/giftShadedIcon-07a502e4c07d885f7dc5b9c300ae8e34.svg\";","module.exports = __webpack_public_path__ + \"images/hundredDAU-f0a4ed213378aa229c2964b9cad60530.svg\";","module.exports = __webpack_public_path__ + \"images/inAppPurchaseIcon-04d4b3a62205d68dc4fedbeda99cb051.svg\";","module.exports = __webpack_public_path__ + \"images/inGameItems-7596277eeadd30d3f1fe250aeb059454.svg\";","module.exports = __webpack_public_path__ + \"images/playerData-c4f70c86baeaab1d159a1d30f9f7c91b.svg\";","module.exports = __webpack_public_path__ + \"images/prizeEnablementIcon-470bfa3286658f7e3dfc6cbebae6076b.svg\";","module.exports = __webpack_public_path__ + \"images/pushNotificationIcon-167e3b5c4e03ae9851471ede86b3bcdb.svg\";","module.exports = __webpack_public_path__ + \"images/ssoIcon-bb253be32a967bd0fbe7a8bb8e30bc95.svg\";","module.exports = __webpack_public_path__ + \"images/themeIcon-ac46caa217df332524a8be41edf01e9e.svg\";","module.exports = __webpack_public_path__ + \"images/tournamentIcon-b68efc980b7c2aa835ff4eee150978f7.svg\";","module.exports = __webpack_public_path__ + \"images/uploadSdkIcon-36b0270df0d2d538d60e74f784b02ff0.svg\";","module.exports = __webpack_public_path__ + \"images/androidLogo-d20768f8fddea9324ed0a24d5f041a28.png\";","module.exports = __webpack_public_path__ + \"images/checkGrayIconWhiteFill-026212bdfc5d8ca1011334867d222e33.svg\";","module.exports = __webpack_public_path__ + \"images/checkGreenIcon-2f8770c908648e319eb136fad2626eab.svg\";","module.exports = __webpack_public_path__ + \"images/checkGreenIconWhiteFill-064aabb0a32f2b7b13279141e99bf7bc.svg\";","module.exports = __webpack_public_path__ + \"images/eyeClosed-b3679686dae41e2f3b6d1ab96d170c34.svg\";","module.exports = __webpack_public_path__ + \"images/eyeOpened-151a904ed189d8b9437819ed94395408.svg\";","module.exports = __webpack_public_path__ + \"images/greenCheckMark-7374cfa8a0003b7152a9ad2874cbea99.svg\";","module.exports = __webpack_public_path__ + \"images/info-3302d20005d045934d1fd2694e8765b9.svg\";","module.exports = __webpack_public_path__ + \"images/iosLogo-a9e75fb47da686daa0db144d2103af3b.png\";","module.exports = __webpack_public_path__ + \"images/kabobMenu-4fbe0792ef398c02be5705f07b5f87cb.svg\";","module.exports = __webpack_public_path__ + \"images/leftArrow-b083ae23ebcf892c44e56d4d42a1cca0.svg\";","module.exports = __webpack_public_path__ + \"images/NFL_DC_Logo-4bd5ca4643651191c003d225b1501c2c.svg\";","module.exports = __webpack_public_path__ + \"images/redXCircle-3bb91f72c13e06b3193a97e1dfe6942f.svg\";","module.exports = __webpack_public_path__ + \"images/UFC_logo_white-382d6a960f22e52f6dc53c2fcd1f8adf.svg\";","module.exports = __webpack_public_path__ + \"images/UFC_red_circle_logo-de8fa8744babf61540f74020b182cd5f.png\";","module.exports = __webpack_public_path__ + \"images/unityLogo-35301897cadfe479a17e7b4059621df3.png\";","module.exports = __webpack_public_path__ + \"images/warningIcon-18c0bfbc51119d253f92de954fd3e00c.svg\";","// extracted by mini-css-extract-plugin\nexport default {\"colorBrandBlue\":\"#4890e8\",\"colorPurple\":\"#6e7be8\",\"colorPink\":\"#cc48e8\",\"colorWhite\":\"#fff\",\"colorGray900PrimaryText\":\"#2e323a\",\"colorGray700Highlight\":\"#515967\",\"colorGray600SecondaryText\":\"#636d7e\",\"colorGray500SecondaryText\":\"#717b8f\",\"colorGray400Content\":\"#868fa0\",\"colorGray300Icons\":\"#9ca3b1\",\"colorGray200DisabledState\":\"#b8bdc7\",\"colorGray100Borders\":\"#d4d7dd\",\"colorGray50Background\":\"#eeeff0\",\"colorGray25ContentBackground\":\"#f7f7f8\",\"colorGrayTabDisabledState\":\"#dfe1e5\",\"colorGrayArrowDisabledState\":\"#d7d7d7\",\"colorBlueGray\":\"#c7ced4\",\"colorBlueGray500\":\"#a6b1bb\",\"colorBlueGray600\":\"#7b8b9a\",\"colorBlueGray700\":\"#66788a\",\"colorMdGray500\":\"#9e9e9e\",\"colorGrayRowHover\":\"#f6f6fb\",\"colorRed\":\"#dd6952\",\"colorRedBorder\":\"#f8d1d1\",\"colorRedBackground\":\"#fef6f6\",\"colorRedHover\":\"#d15839\",\"colorRedDark\":\"#a63a29\",\"colorGreen\":\"#7db534\",\"colorGreenDark\":\"#4c8500\",\"colorGreenLight\":\"#b0d779\",\"colorGreen25\":\"#f8fbf3\",\"colorGreen50\":\"#f2f8e8\",\"colorGreen100\":\"#ddeec5\",\"colorGreen600\":\"#43a047\",\"colorBlueHoverDark\":\"#3c6dc2\",\"colorBlueHoverLight\":\"#f5fbfe\",\"colorInfoIcon\":\"#77bcf9\",\"colorInfoBorder\":\"#c1e1fd\",\"colorInfoBackground\":\"#f1f8fe\",\"colorWarnIcon\":\"#f7a93d\",\"colorWarnBackground\":\"#fef9f1\",\"colorOrangeDarkBanner\":\"#fad59e\",\"colorOrange50\":\"#fdf3e2\",\"colorOrange100\":\"#fce0b7\",\"colorOrange500\":\"#ff9800\",\"colorFirst\":\"#7eb1ee\",\"colorSecond\":\"#eebc7e\",\"colorThird\":\"#bc7eee\",\"colorFourth\":\"#7ee9ee\",\"colorFifth\":\"#847eee\",\"colorSixth\":\"#ee7eb1\",\"colorFirstEstimated\":\"#c0dfff\",\"colorSecondEstimated\":\"#ffe8bb\",\"colorThirdEstimated\":\"#eabcff\",\"colorFourthEstimated\":\"#c2ffff\",\"colorFifthEstimated\":\"#c5baff\",\"colorSixthEstimated\":\"#ffbedf\",\"colorNflDark\":\"#039\",\"colorNflMed\":\"#06c\",\"colorNflLight\":\"#09c\",\"colorNflBlueText\":\"#9eccf6\",\"colorNflText\":\"#fff\",\"colorNflLightTest\":\"#f5f5f5\",\"colorNflBackground\":\"#161616\",\"navBarHeight\":\"64px\",\"colorGraySdkEntryPointTitle\":\"#535353\"};","// extracted by mini-css-extract-plugin\nexport default {\"colorBrandBlue\":\"#4890e8\",\"colorPurple\":\"#6e7be8\",\"colorPink\":\"#cc48e8\",\"colorWhite\":\"#fff\",\"colorGray900PrimaryText\":\"#2e323a\",\"colorGray700Highlight\":\"#515967\",\"colorGray500SecondaryText\":\"#717b8f\",\"colorGray400Content\":\"#868fa0\",\"colorGray300Icons\":\"#9ca3b1\",\"colorGray200DisabledState\":\"#b8bdc7\",\"colorGray100Borders\":\"#d4d7dd\",\"colorGray50Background\":\"#eeeff0\",\"colorGray25ContentBackground\":\"#f7f7f8\",\"colorRed\":\"#dd6952\",\"colorRedBorder\":\"#f8d1d1\",\"colorRedBackground\":\"#fef6f6\",\"colorRedHover\":\"#d15839\",\"colorRedDark\":\"#a63a29\",\"colorGreen\":\"#7db534\",\"colorGreenDark\":\"#4c8500\",\"colorGreenLight\":\"#b0d779\",\"colorBlueHoverDark\":\"#3c6dc2\",\"colorBlueHoverLight\":\"#f5fbfe\",\"colorInfoIcon\":\"#77bcf9\",\"colorInfoBorder\":\"#c1e1fd\",\"colorInfoBackground\":\"#f1f8fe\",\"colorWarnIcon\":\"#f7a93d\",\"colorWarnBorder\":\"#fce0b7\",\"colorWarnBackground\":\"#fef9f1\",\"colorFirst\":\"#7eb1ee\",\"colorSecond\":\"#eebc7e\",\"colorThird\":\"#bc7eee\",\"colorFourth\":\"#7ee9ee\",\"colorFifth\":\"#847eee\",\"colorSixth\":\"#ee7eb1\",\"colorFirstEstimated\":\"#c0dfff\",\"colorSecondEstimated\":\"#ffe8bb\",\"colorThirdEstimated\":\"#eabcff\",\"colorFourthEstimated\":\"#c2ffff\",\"colorFifthEstimated\":\"#c5baff\",\"colorSixthEstimated\":\"#ffbedf\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"143\":\"game-management-game-home-overview-accelerate-modal\",\"154\":\"entry-point-accordion\",\"304\":\"game-management-integration-game-footer\",\"376\":\"game-management-home-game-builds-table\",\"434\":\"survey-landing-page\",\"447\":\"seasons-tab\",\"477\":\"player-data-modal\",\"687\":\"content-management-system-content-footer\",\"772\":\"in-game-items-bulk-create\",\"782\":\"game-management-game-home-optimize-stepoverview\",\"1002\":\"integration-introduction\",\"1044\":\"playground-old\",\"1142\":\"analytics\",\"1346\":\"game-management-game-home\",\"1409\":\"mosaic-card\",\"1552\":\"nfl-landing-page\",\"1599\":\"notification\",\"1724\":\"case-study-benchmarks\",\"1809\":\"account\",\"1850\":\"game-home-optimize-deep-linking\",\"1865\":\"in-game-items\",\"1878\":\"npm-react-confetti\",\"1885\":\"npm-papaparse\",\"1956\":\"npm-react-color\",\"2018\":\"jobs\",\"2030\":\"account-studio-modal\",\"2081\":\"progression-delete-item-modal\",\"2141\":\"game-home-optimize-ftue-configuration\",\"2182\":\"account-user\",\"2190\":\"account-studio-header\",\"2397\":\"game-home-integration-game-info\",\"2462\":\"npm-nuka-carousel\",\"2576\":\"statements\",\"2579\":\"content-management-system-tooltip-publish-access\",\"2819\":\"common-component-archive-modal\",\"2830\":\"content-management-system-content-help-search\",\"2978\":\"game-management\",\"2979\":\"game-management-integration\",\"3122\":\"content-management-system-modal-view\",\"3494\":\"case-study-in-game-items\",\"3532\":\"sync-table\",\"3662\":\"game-home-optimize-push-notifications\",\"3819\":\"sign-in\",\"3890\":\"player-data-bulk-create\",\"3891\":\"assign-table\",\"3943\":\"entry-point-assign-and-sync-modal\",\"4091\":\"nfl-challenge\",\"4206\":\"game-management-game-home-overview-accelerate-entered-state\",\"4225\":\"mosaic-page\",\"4306\":\"npm-react-beautiful-dnd\",\"4404\":\"npm-kapellmeister\",\"4406\":\"game-management-game-info-modal\",\"4552\":\"progression-bulk-upload\",\"4628\":\"game-management-game-home-overview\",\"4635\":\"npm-tinycolor2\",\"4637\":\"game-management-game-home-overview-accelerate-reapply-state\",\"4717\":\"npm-wicg-inert\",\"4815\":\"entry-point\",\"4861\":\"game-management-game-home-overview-prize-enablement-next-step\",\"4921\":\"content-management-system-content-help-search-footer\",\"5063\":\"content-management-system-helpbit-from-tooltip\",\"5079\":\"npm-react-move\",\"5144\":\"game-management-game-header\",\"5189\":\"cookie-banner\",\"5193\":\"progression-tab\",\"5271\":\"playground\",\"5300\":\"content-management-system-content-help-search-search-result\",\"5394\":\"nav-bar\",\"5494\":\"no-access-page\",\"5499\":\"game-home-optimize-single-sign-on\",\"5595\":\"common-component-game-object-list\",\"5633\":\"npm-lodash-es\",\"5694\":\"npm-luxon\",\"5731\":\"in-game-items-modal\",\"5740\":\"progression-menu\",\"5816\":\"progression-modal-player-lookup\",\"6089\":\"content-management-system-content-help-search-empty-state\",\"6281\":\"game-management-game-home-overview-prize-enablement-widget\",\"6442\":\"game-management-integration-fairness\",\"6470\":\"your-games\",\"6609\":\"game-management-game-home-overview-accelerate-widget\",\"6707\":\"content-management-system-slider-view\",\"6763\":\"player-data\",\"6878\":\"account-teammates\",\"6907\":\"progression-room-save-modal\",\"6920\":\"game-management-integration-modules-game-config\",\"6956\":\"activity-log\",\"6974\":\"game-management-integration-modules-setup-sdk\",\"7190\":\"game-management-game-home-overview-next-step\",\"7263\":\"common-component-analytics-summary-card\",\"7294\":\"peek-page\",\"7321\":\"sign-up\",\"7463\":\"optimize-monetization-channels\",\"7473\":\"player-data-create-edit-modal\",\"7578\":\"peek-header\",\"7592\":\"progression-changelog-modal\",\"7662\":\"user-invite\",\"7683\":\"profile-modal\",\"7898\":\"in-game-items-create-edit-modal\",\"8006\":\"game-home-optimize-sdk-theme\",\"8021\":\"change-password\",\"8030\":\"game-management-home-new-game-builds\",\"8033\":\"sdk-downloads\",\"8160\":\"entry-points\",\"8249\":\"progression-publish-modal\",\"8299\":\"npm-reactcss\",\"8358\":\"game-home-optimize-tournament\",\"8364\":\"game-home-optimize-apple-pay\",\"8477\":\"contact-us\",\"8502\":\"npm-lottiefiles\",\"8822\":\"progression-header\",\"9006\":\"case-study-progression\",\"9015\":\"game-management-game-home-overview-prize-enablement-modal\",\"9068\":\"game-management-integration-completion-page\",\"9223\":\"home-page\",\"9324\":\"nfl-proposal-page\",\"9336\":\"case-study-chat\",\"9343\":\"game-management-integration-core-loop\",\"9358\":\"game-home-optimize-virtual-currency\",\"9400\":\"account-user-modal\",\"9463\":\"game-home-optimize-distribution\",\"9511\":\"common-component-game-snapshot\",\"9543\":\"npm-ts-enum-util\",\"9647\":\"content-management-system-content-header\",\"9662\":\"game-management-integration-initialize-skillz-ui\",\"9679\":\"game-management-game-home-optimize\",\"9733\":\"progression-room-sync-modal\",\"9748\":\"game-management-game-home-overview-accelerate-declined-state\",\"9796\":\"survey-tool\",\"9847\":\"content-management-system-help-button\",\"9903\":\"not-found-page\",\"9938\":\"content-management-system-content-content\",\"9949\":\"progression-home\",\"9966\":\"dashboard\"}[chunkId] || chunkId) + \"-\" + {\"143\":\"1ecf1c6a7a7300497c36\",\"154\":\"e9fffbab16eeb35889df\",\"304\":\"fc8aaf2ae48bcec08a3d\",\"376\":\"8a3396acba65dcc0dfe2\",\"393\":\"f9d38036a36b9b3e3ee7\",\"434\":\"1476e9ad4a1d3386b706\",\"447\":\"b70202a4544c89f553e8\",\"477\":\"e5a3f4366e4bde261ecc\",\"687\":\"f8876c4a5705cb1951d6\",\"724\":\"81aee90345e9798bf129\",\"772\":\"e1e0ad8052175af60614\",\"782\":\"bec0de3004cb22087f81\",\"1002\":\"8533264d84b9a3454c2f\",\"1044\":\"9301de56dac8e97e9997\",\"1142\":\"aeebd61448013500b5aa\",\"1346\":\"407fcf044ad1c91e6c4e\",\"1409\":\"d0fb43ed690595eb91c0\",\"1552\":\"1ada9f589a464af6b647\",\"1599\":\"b5e6bcb14ce09f76af86\",\"1648\":\"0307f77112708871a14a\",\"1724\":\"b422ede1e46094b3f162\",\"1809\":\"4231c75c5392cb56fe2a\",\"1850\":\"cf1d8172cbe18e36871d\",\"1865\":\"85cd3a4922ce848f4ddd\",\"1878\":\"4e18af1696f1e85cc97d\",\"1885\":\"b72b5218c41674b18723\",\"1956\":\"eeba0b2900de866dcfb0\",\"2018\":\"b64859aec87e3bbe0c5e\",\"2030\":\"e012ce90c488bce985f3\",\"2081\":\"44d56909b63a75325e3a\",\"2141\":\"5e82469a604701ac5a91\",\"2182\":\"80fc29373931532443cc\",\"2190\":\"df0e87d2b714c2df6b6f\",\"2397\":\"0e87f9ff3214bdf6d027\",\"2462\":\"422fe159a7f3abd5afb2\",\"2576\":\"085222e8f0cf049c7499\",\"2579\":\"dd2a9520d2fbc6673e07\",\"2819\":\"853bb843358dd6584bb1\",\"2830\":\"0ee6ae7d05203ceca529\",\"2978\":\"2350a0264f97d3e47903\",\"2979\":\"20d5bda70cc2269fd326\",\"3001\":\"9b81e31f36a929bb8c60\",\"3122\":\"38113e968806ea245866\",\"3494\":\"3a27776b97636fac08b1\",\"3532\":\"69b3295f2debf1e12943\",\"3662\":\"52fb364cb260e1cf1dd3\",\"3763\":\"939decab4f160cd48d49\",\"3819\":\"1191da63e7fc6e0c6adb\",\"3890\":\"ef0114ef3c5e562ebef3\",\"3891\":\"129896abd60c4ea3dac3\",\"3895\":\"e923f9fb6f3855535a22\",\"3943\":\"f5fa3454dd2830b224c5\",\"4091\":\"b580189362826bfe2c17\",\"4206\":\"2b9512a004eedff5897b\",\"4225\":\"9b3299188fb102e8ad23\",\"4306\":\"def712ea1f3e1375360e\",\"4404\":\"3f715fdebdf142213bdb\",\"4406\":\"445a5fbbbb4584dc9773\",\"4552\":\"baa1b748e3ef33d670c3\",\"4628\":\"2e320ffd38b761f8ee93\",\"4635\":\"658ccd4a6d0ba109bcaa\",\"4637\":\"fb90a1fbfe920314abaf\",\"4717\":\"f3b2fb4a98d7ddbf5aca\",\"4815\":\"dd1ea5158cbe38db7ce6\",\"4861\":\"0219c0981abe82ddaa93\",\"4921\":\"e03118a627c29e581699\",\"5063\":\"0d0bb41a7d4911a3fd94\",\"5079\":\"f9a7bd64e732aa76721b\",\"5144\":\"6dcde0788759160eeb3c\",\"5189\":\"3f714c589724b7b4e0a8\",\"5193\":\"a3432d53d3ee32627acb\",\"5271\":\"c80a8e815f26876ec480\",\"5300\":\"e55c45510c92ed2919cb\",\"5394\":\"297185d514939bec7b29\",\"5494\":\"33a638c4b0e92c4888c8\",\"5499\":\"1891a78fa8fcad887304\",\"5595\":\"af679bbac28a4621379e\",\"5633\":\"e615e25b5095a204a3af\",\"5694\":\"6a60ae177e56fc2113f7\",\"5731\":\"5437b9b41e43e32824cc\",\"5740\":\"171fb1f4c1ac7a9fd9e2\",\"5816\":\"236efdafb2c8b5e7aa38\",\"6079\":\"ee5710b889f1303b0b97\",\"6089\":\"90c01c8fe4cc243a18e4\",\"6281\":\"9f38806aaf7246db92a2\",\"6442\":\"65c7dbe9db3cd416a34b\",\"6470\":\"be6362bbf6a63c819308\",\"6595\":\"cae1ca5e1fdd96486089\",\"6609\":\"8b743e977e5561351c15\",\"6707\":\"8fa62a1f12b1c0089001\",\"6763\":\"f561669ab1c0f3353b32\",\"6878\":\"670c8d5009dfa79ff178\",\"6907\":\"db5887cf282c32f26a61\",\"6920\":\"42f2202bfcad4f90a13c\",\"6956\":\"f589d7dc410d38d32596\",\"6974\":\"af813e7aef32456a23b8\",\"7130\":\"cd154a164a8df958e4c1\",\"7190\":\"d95d601e791c544a79f8\",\"7263\":\"7dca715f3669b37af8f1\",\"7294\":\"9cdb556b78d1d24c1668\",\"7321\":\"459f8240f95b5f107683\",\"7366\":\"20590a3f40cd5630626a\",\"7463\":\"4663567821f666bec947\",\"7473\":\"f27769798534757135dd\",\"7578\":\"8989b0dc0845c7b0ea93\",\"7592\":\"0382f184034a57ecb217\",\"7662\":\"d3dc2519e0d7c2834fa1\",\"7683\":\"0d523e101825f7e4aec7\",\"7687\":\"c3964306397fe2cdb94f\",\"7898\":\"3dc0c2d77bf021c37383\",\"8006\":\"1468439142298e8f0d4c\",\"8021\":\"5fba4ca6ec5c82d33142\",\"8030\":\"c85f888e857dfdb7218e\",\"8033\":\"8701e31de7f5e3d8c12e\",\"8160\":\"8fbb9c9bcea3e33ac8b0\",\"8249\":\"93e8e556919da902198e\",\"8299\":\"58c60ea45546d5281d1b\",\"8358\":\"9bad533caca714f0bced\",\"8364\":\"715f1c611cfda64d7712\",\"8477\":\"f140f428201593126d08\",\"8502\":\"f427a69858ecc110e3a2\",\"8741\":\"ee12352acef67772ef9d\",\"8822\":\"ae2cfe7a9d957b98c2c9\",\"9006\":\"d3388eddaecbcd940b2b\",\"9015\":\"a0490af38ddd582dfb53\",\"9068\":\"c5d4c039e206348cf54d\",\"9223\":\"59ad78034420ba95cd31\",\"9287\":\"85a7129450175cc348ae\",\"9324\":\"32953bb2ef8c49a6ece4\",\"9336\":\"b4b8d13e109aa73a7b4e\",\"9343\":\"d2960a92a9ef2ff8b326\",\"9358\":\"f77001db2a3cf98f39f9\",\"9400\":\"a3bb75811ef6f838b792\",\"9463\":\"7a9e6ff6706015d0e574\",\"9511\":\"304c12130c0219e235a3\",\"9543\":\"9246789ce07a9d3c2c12\",\"9647\":\"94ada5a2f3b7fdb8a395\",\"9662\":\"d6957d7189cf7a91aa1b\",\"9679\":\"9306dc05b1684d0a30a8\",\"9733\":\"6407d185a9ed7b5b328f\",\"9748\":\"db2bad32f836084a7b6d\",\"9796\":\"e65efb82b22028833442\",\"9847\":\"c0c82b1b49f168e1d4f4\",\"9903\":\"1794343a2cd9387dcf92\",\"9938\":\"5afc9c1a56a289b13310\",\"9949\":\"86ca62a5b18a66a300bd\",\"9966\":\"918fbed5d633d40e354f\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames not based on template\n\tif (chunkId === 179) return \"main-062fc2e28fabcd771384.css\";\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + {\"143\":\"223f8377b326ed453cff\",\"154\":\"62617e1efa2d723b2cda\",\"304\":\"132168a61cb9c99afe32\",\"376\":\"bca872f08844e43814b8\",\"393\":\"7080fca964ce10e8db2c\",\"447\":\"893cf9c59e022b9af2d2\",\"477\":\"55180b88ad37942cbd3b\",\"687\":\"174b53738c8a3399955e\",\"782\":\"98e2656b7465f4de6d36\",\"1002\":\"bb16196e24a6fe0f8440\",\"1044\":\"ba262e5aac528c734fe6\",\"1142\":\"0dccdec8c60ca5514fdc\",\"1346\":\"9f593af1a501d69e10ef\",\"1409\":\"21a5fc92298d406f5d1f\",\"1552\":\"236b934ec187bee6c5ef\",\"1724\":\"624cbf4a9dff4885d9f3\",\"1809\":\"d2a57613e103f9583190\",\"1850\":\"2336d9bbfba7ab7f379c\",\"1865\":\"11070b386b4ab2f9399e\",\"2018\":\"0e0e38d6c1d76f2215c2\",\"2030\":\"667aaaa81bef1ce56828\",\"2081\":\"fd442780e697c304ad55\",\"2182\":\"64dc8969bd86f6af8720\",\"2190\":\"3ff4286ae12ba8a17499\",\"2397\":\"50fd0c2478664b124bdd\",\"2576\":\"142615c320419e687ff6\",\"2579\":\"44dd03a029fececa1921\",\"2819\":\"bbebbd5e700a7b203cad\",\"2830\":\"c3840fabe458a1cfa322\",\"2978\":\"6a75bd12f7c468ea51e5\",\"2979\":\"5c7b4a69f16b9d827629\",\"3122\":\"654699e6f2d6f2cb5cc3\",\"3494\":\"d2f188c22d13dd88db5a\",\"3532\":\"8063d450d20405b8b7db\",\"3662\":\"e145d653184e4076cf67\",\"3891\":\"003658e5f44ed35e1f87\",\"3943\":\"7d2dc9bcf8c4dc78bd37\",\"4091\":\"b115c1b83353943d7672\",\"4225\":\"b87b0acaca89e6e46059\",\"4406\":\"c4c42f36a91fef5d6cb0\",\"4552\":\"153f31cdf6a6dd6a6c7c\",\"4628\":\"212686a6744f26bcfb63\",\"4815\":\"f515ca00cf7b50cdf57f\",\"4861\":\"85737505492ead4f792c\",\"5144\":\"7e7dd946f55d35f5230f\",\"5271\":\"4faecb86fa5c309d940a\",\"5300\":\"ff0ead3cf7cb37ec7acb\",\"5394\":\"f459a4177092b9eddb84\",\"5494\":\"fed179e0e069b736449a\",\"5499\":\"168497d27d0d8e2a6bce\",\"5595\":\"12e37f949fd01a8ef9b0\",\"5731\":\"c4e98998314215094dfd\",\"5740\":\"06572c07464f5396ebdd\",\"5816\":\"e3d88075100833a07f9d\",\"6089\":\"541ea6a224490af59575\",\"6281\":\"11cd71137a27a9a43fd1\",\"6442\":\"1e09c8fc014e54fd3b66\",\"6470\":\"e6cc32532dbf93cbc49a\",\"6707\":\"ec056e926d7c9d91d0dd\",\"6763\":\"d159014d505cadd5a128\",\"6878\":\"f94bbd0ee4ae91224999\",\"6907\":\"5a5b45fafa5695a9139f\",\"6920\":\"be3b6bd5e696234562c1\",\"6956\":\"e75481297a5e019dba86\",\"6974\":\"a23532bc1a6088de517f\",\"7190\":\"ace7ed6faa9be02dc074\",\"7263\":\"35611f62155e63d6a08b\",\"7294\":\"4a030ab058a560c39136\",\"7463\":\"9e7151727a64302096df\",\"7473\":\"1063d0d0151e8e8a11ce\",\"7578\":\"10ed79ff717f668a5bde\",\"7592\":\"77b226f299fe5f7215f5\",\"7662\":\"bc3e98f63c7bbdc5f9a6\",\"7683\":\"9675e0c0317247a95308\",\"7898\":\"db916f26558545f18bee\",\"8006\":\"b2f45278e3b96ac660ed\",\"8030\":\"0a40923fdf80d4801056\",\"8033\":\"cc90298482cb9cc84fc4\",\"8160\":\"237deaa5ea8886221584\",\"8249\":\"c6cfb159d21cefada0e0\",\"8358\":\"303a726a6a78f0520054\",\"8364\":\"c620cdf31fdc9a4fa5c2\",\"8477\":\"7c18a19fe9e400339e72\",\"8822\":\"d317c77e747eb420eb94\",\"9006\":\"6e17c2d6a7f2ae880019\",\"9015\":\"6e7e7b1354ee79768744\",\"9068\":\"c628e21404cdf413d08f\",\"9223\":\"518cdb652d0f9e4adb92\",\"9324\":\"279113346590ded2d297\",\"9336\":\"675ea4bae78df816caac\",\"9343\":\"47e9b87c8f3bfac667cb\",\"9358\":\"11d3995779bd4a1243de\",\"9400\":\"63b742515b1766159815\",\"9463\":\"91a720a4a39649c3896d\",\"9511\":\"3db0b9354a1bfa826581\",\"9647\":\"eb1ed16222900cd9a613\",\"9662\":\"4fff57e2317ce74d7145\",\"9679\":\"40f9d18b081be9eb58c8\",\"9733\":\"2f2515e5480f501e254f\",\"9796\":\"ec2e70077f711559b1b9\",\"9847\":\"210f14b20529d233e6ae\",\"9903\":\"365f0d5d0c0549981153\",\"9938\":\"0ee47e01d1d951b3f02d\",\"9949\":\"6107989dee4d9f2014e5\",\"9966\":\"7c30c389dcb9b5fde540\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/javascripts/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// module factories are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4989,9075,9173,1801,1297,290,1468,2529,8049,2402,157,3021,4025,4510,3335,5530,5071,9016,4959,5139,5672,8616,3988,2224,5697,2406,3098,9505,2452,6422,7874,465,7156,173,8812,7453,5485,299,9541,6494,6798,1495,3084,8847,8676,8794,4779,1380,5855,9937,3088,5713,3939,1169], () => (__webpack_require__(79913)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","loadStylesheet","installedCssChunks","fetchGameChallenge","createAsyncThunk","params","axios","challengeName","then","camelize","_a","data","setRegistrationStatus","registered","updateRegistrationStatus","updateNudgeStatus","nudgeDismissed","fetchGameChallengeProposal","_b","saveGameChallengeProposal","payload","snakeCaseConverter","gameChallengeProposal","updateGameChallengeProposal","uploadGameChallengeImages","images","Promise","all","Object","entries","map","key","files","file","hasOwnProperty","filename","serialize","allowEmptyArrays","updatedAt","updatedImages","reduce","acc","curr","Date","SNACK_BAR","closeSnackbar","type","CLOSE_SNACKBAR","GAMES_COUNT","GAME","GAMES","PUBLISHER","getGameInfo","GAME_INFO","clearGameInfo","CLEAR_GAME","receiveModalGameInfo","RECEIVE_GAME","fetchPublicGameApiCall","gameProductionId","findGame","id","dispatch","response","error","window","location","assign","updateGame","game","generateModalGameFormData","method","url","updateGameEnabled","pageNumber","undefined","RECEIVE_UPDATED_GAME","fetchGameByProductionId","productionId","fetchGames","indexParams","page","limit","GAMES_PAGE_PAGE","offset","urlParams","URLSearchParams","toString","fetchGamesApiCall","resp","responseInPage","items","CLEAR_GAMES","RECEIVE_COUNT","RECEIVE_GAMES","receiveGamesTotalCount","totalCount","USER","MODAL_MANAGEMENT","findUser","$","ajax","INFO","FEATURE","FLAGS","findFeatureFlags","appConfig","featureFlags","SDK_DOWNLOADS","openProfileModal","OPEN_PROFILE_MODAL","closeProfileModal","CLOSE_PROFILE_MODAL","openGameInfoModal","OPEN_GAME_INFO_MODAL","closeGameInfoModal","CLOSE_GAME_INFO_MODAL","openArchiveModal","OPEN_ARCHIVE_MODAL","closeArchiveModal","CLOSE_ARCHIVE_MODAL","openFairnessModal","OPEN_FAIRNESS_MODAL","closeFairnessModal","CLOSE_FAIRNESS_MODAL","openPrizeEnablementModal","OPEN_PRIZE_ENABLEMENT_MODAL","closePrizeEnablementModal","CLOSE_PRIZE_ENABLEMENT_MODAL","openAccelerateModal","OPEN_ACCELERATE_MODAL","closeAccelerateModal","CLOSE_ACCELERATE_MODAL","openFeedbackModal","OPEN_FEEDBACK_MODAL","closeFeedbackModal","CLOSE_FEEDBACK_MODAL","openStudioModal","OPEN_STUDIO_MODAL","closeStudioModal","CLOSE_STUDIO_MODAL","openUserModal","OPEN_USER_MODAL","closeUserModal","CLOSE_USER_MODAL","openRemoveUserModal","OPEN_REMOVE_USER_MODAL","closeRemoveUserModal","CLOSE_REMOVE_USER_MODAL","openDeactivateSkillzSupportModal","OPEN_DEACTIVATE_SKILLZ_SUPPORT_MODAL","closeDeactivateSkillzSupportModal","CLOSE_DEACTIVATE_SKILLZ_SUPPORT_MODAL","openInviteUserModal","OPEN_INVITE_USER_MODAL","closeInviteUserModal","CLOSE_INVITE_USER_MODAL","openTransferOwnershipModal","OPEN_TRANSFER_OWNERSHIP_MODAL","closeTransferOwnershipModal","CLOSE_TRANSFER_OWNERSHIP_MODAL","openEditUserModal","OPEN_EDIT_USER_MODAL","closeEditUserModal","CLOSE_EDIT_USER_MODAL","openProgressionDeleteItemModal","OPEN_PROGRESSION_DELETE_ITEM_MODAL","closeProgressionDeleteItemModal","CLOSE_PROGRESSION_DELETE_ITEM_MODAL","openPlayerDataModal","OPEN_PLAYER_DATA_MODAL","closePlayerDataModal","CLOSE_PLAYER_DATA_MODAL","openProgressionPublishModal","OPEN_PROGRESSION_PUBLISH_MODAL","closeProgressionPublishModal","CLOSE_PROGRESSION_PUBLISH_MODAL","openProgressionChangelogModal","OPEN_PROGRESSION_CHANGELOG_MODAL","closeProgressionChangelogModal","CLOSE_PROGRESSION_CHANGELOG_MODAL","openProgressionPlayerLookupModal","OPEN_PROGRESSION_PLAYER_LOOKUP_MODAL","closeProgressionPlayerLookupModal","CLOSE_PROGRESSION_PLAYER_LOOKUP_MODAL","openInGameItemsModal","OPEN_IN_GAME_ITEMS_MODAL","closeInGameItemsModal","CLOSE_IN_GAME_ITEMS_MODAL","openEntryPointAssignAndSyncModal","OPEN_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL","closeEntryPointAssignAndSyncModal","CLOSE_ENTRY_POINT_ASSIGN_AND_SYNC_MODAL","openProgressionRoomSaveModal","OPEN_PROGRESSION_ROOM_SAVE_MODAL","closeProgressionRoomSaveModal","CLOSE_PROGRESSION_ROOM_SAVE_MODAL","openProgressionRoomCreateModal","OPEN_PROGRESSION_ROOM_CREATE_MODAL","closeProgressionRoomCreateModal","CLOSE_PROGRESSION_ROOM_CREATE_MODAL","openProgressionRoomDeleteModal","OPEN_PROGRESSION_ROOM_DELETE_MODAL","closeProgressionRoomDeleteModal","CLOSE_PROGRESSION_ROOM_DELETE_MODAL","openModal","modalOpenAttribute","OPEN_MODAL","closeModal","CLOSE_MODAL","fetchSdkDownloads","RECEIVE","ANALYTICS","fetchAnalytics","analyticsQuery","RECEIVE_RAW_DATA","receiveAnalyticsRawData","fetchAnalyticsDateRangeLimit","RECEIVE_DATE_RANGE_LIMIT","fetchCurrentUser","updateCurrentUser","user","e","Error","errors","basePublisherUrl","fetchPublisher","updatePublisher","publisher","form","FormData","logo","append","allowSkillzSupportAccess","companySize","name","phoneNumber","website","preparePublisherData","fetchPermissions","fetchGameAccess","_","getState","fetchGameAccessRequest","openSnackbar","options","OPEN_SNACKBAR","__extends","ButtonWithStyle","this","props","onClick","buttonType","classes","isDisabled","size","buttonContent","colorVariantProps","isErrorMode","exportProps","buttonColor","buttonVariant","determineColorVariantProps","React","Button","variant","color","disabled","className","AtomButton","withStyles","root","fontSize","lineHeight","fontFamily","borderRadius","textTransform","flexShrink","sizeLarge","fontWeight","padding","height","contained","variables","backgroundColor","borderColor","containedPrimary","containedSecondary","outlined","outlinedPrimary","outlinedSecondary","text","border","textPrimary","textSecondary","AtomModal","children","isOpen","handleClose","shouldShowClose","shouldDisableBackdropClick","Modal","open","onClose","_event","reason","includes","IconButton","Close","AtomMetaTag","chipText","Chip","label","renderChipText","AtomSingleSelectButton","buttonText","icon","isSelected","selected","largeFormat","baseClass","isLargeFormat","_this","copyValue","snackbarText","textField","document","createElement","innerText","textContent","body","appendChild","select","focus","execCommand","remove","autoHideDuration","anchorOriginVertical","anchorOriginHorizontal","AtomCopyToClipboard","labelText","hasIcon","copyToClipboard","FileCopy","AtomSnackbar","title","description","src","checkGreen","handleClick","textColor","theme","createTheme","components","MuiSnackbarContent","styleOverrides","message","snackbarContent","ThemeProvider","Snackbar","anchorOrigin","vertical","horizontal","SnackbarContent","action","CloseIcon","handleImageUpload","AtomImageUploader","newIconLabel","updateIconLabel","image","containerSize","isRectangular","style","width","PhotoSizeSelectActual","fileTypes","Dropzone","onDrop","handleImageDrop","accept","join","multiple","getRootProps","getInputProps","renderUploadIcon","palette","primary","main","dark","AtomTextField","placeholder","attributeName","onChange","fullWidth","errorText","value","onKeyPress","rows","multiline","autoComplete","inputProps","dataAttributes","autoFocus","onBlur","classNames","TextField","__assign","InputProps","helperText","minRows","margin","required","hasAnimation","MuiTextField","AtomDateSelector","LocalizationProvider","dateAdapter","AdapterDateFns","DatePicker","rifmFormatter","val","replace","renderInput","denseMarginOverrideClass","MuiTooltip","tooltip","boxShadow","position","maxWidth","arrow","ArrowTooltip","muitheme","restProps","Tooltip","tooltipArrow","enterTouchDelay","leaveTouchDelay","AtomTooltip","copy","placement","disableInteractive","shouldDisableHover","disableHoverListener","info","AtomLink","_c","newTab","href","target","rel","LaunchIcon","AtomColoredCircle","circleContent","circumference","greenCheckMark","_super","isLoadingProgress","animationChange","animationSecond","setState","state","startProgress","endProgress","startProgressTemp","Math","min","max","timer","setTimeout","progress","clearTimeout","segments","segmentIndex","ceil","segmentValue","isIndexProgressBar","indexProgressCalculation","currentSegment","isIncrease","pValue","AtomProgressBar","previousProps","previousSegment","isIncreaseProgressBar","calculateSegmentValue","isError","backgroundSizeUpdate","LinearProgress","AtomCollapsible","titleLineElements","collapserBody","isCollapsibleExpanded","Collapse","in","timeout","AtomRadioButton","checkedIcon","isChecked","hasSpecialIcons","radioProps","checked","Radio","AtomTableHeader","column","order","orderBy","onRequestSort","property","TableSortLabel","active","direction","SORT_DIRECTION","IconComponent","KeyboardArrowDownIcon","cellContent","headRows","isShaded","shadedMode","TableHead","TableRow","TableCell","sortDirection","renderTableSortLabelOrCellContent","AtomTableRows","row","rowIndex","cellIndex","align","isActive","TableBody","hover","shouldHover","keys","renderTableCellsHelper","AtomTableRow","hasHover","StyledMenuItem","MenuItem","AtomMenu","anchorEl","menuItems","handleCloseMenu","transformPosition","anchorPosition","Menu","paper","transformOrigin","item","hasAccess","TooltipNoAccess","handleItemClick","itemBody","AtomLinkButton","AtomInteractiveIcon","clickFunction","atomClassName","AtomTableOfContents","links","ids","link","contents","index","Scrollspy","currentClassName","GameSnapshotComponent","loadable","GameSnapshot","connect","ownProps","analytics","publisherInfo","connector","PASSWORD_CHECKLIST","PASSWORD_CHECKLIST_ORDER","checklistItem","HAS_MIN_EIGHT_CHARS","HAS_AT_LEAST_ONE_NUMBER","HAS_AT_LEAST_ONE_SPECIAL_CHARS","HAS_BOTH_UPPER_LOWER_CHARS","debounce","checklistProps","handleChecklistUpdate","isChecklistDone","password","isPassingBothUpperLowerCase","hasBothUpperAndLowerCaseLetters","isPassingHasAtLeastOneNum","hasAtLeastOneNumber","isPassingMinimumEightCharacters","hasMinimumEightCharacters","isPassingAtLeastOneSpecialCharacter","hasAtLeastOneSpecialCharacter","checklist","isPassing","last","length","kebabCase","passwordChecklistClassName","checkGrayIconWhiteFill","checkGreenIconWhiteFill","passingChecklistItem","hasSubmitted","redXCircle","failedChecklistItem","PasswordWrapper","shouldRenderChecklist","propOverride","PasswordTextField","renderChecklist","email","emailPrefix","split","hasSubstring","hasOnlyAsciiCharacters","BANNER_TYPES","cssPrefix","signupCssPrefix","PromotionBanner","isFullWidth","hideDescription","header","isSignup","bannerType","ufcGamePartnership","UFC_GAME_PARTNERSHIP_NEW_SIGNUP","UFC_GAME_PARTNERSHIP","NFL_GAME_CHALLENGE","ufcProps","bannerCssSuffix","UFC_GAME_URL","ufcLogo","defaultDescription","ufcSignupProps","redUfcLogo","topLineDescription","nflProps","NFL_CHALLENGE_URL","nflLogo","useState","shouldDismiss","setShouldDismiss","getDismissedBanners","dismissedBannersString","localStorage","getItem","JSON","parse","isBannerDismissed","dismissedBanners","setItem","stringify","useEffect","descriptionText","headerPrefix","textDecoration","Grid","container","justifyContent","sx","marginTop","cursor","xs","lg","sm","event","preventDefault","dismissBanner","commonTooltipStyles","popper","zIndex","CommonTooltipActionWithStyle","display","Typography","commonTooltipTextStyles","BlueTooltipWithStyle","top","PlayerDataTooltipWithStyle","animation","transform","filter","BlueTooltipText","toggleTooltip","classNamePrefix","ShepherdToolTipWithStyle","ShepherdToolTipText","WhiteTooltipWithStyle","OverflowTip","textElementRef","compareSize","current","shouldResize","scrollWidth","clientWidth","setHover","addEventListener","removeEventListener","styleProps","hasArrow","ref","GrayTooltipWithStyle","LearnMoreTooltipWithStyle","LearnMoreTooltipText","helpBitId","toggleHelpBit","ArchiveModalContainer","ArchiveModal","isArchiveModalOpen","modalManagement","gameId","withRouter","AnalyticsSummaryCardContainer","mapDispatchToProps","AnalyticsSummaryCard","mathOperation","attributeKeys","format","startDate","endDate","selectedGameProductionId","isLoading","mdOverride","Card","CLASS_NAME","BackButton","scrollTo","behavior","history","fallBackUrl","customUrl","goBack","push","pathname","leftArrow","BarChartContentLoader","speed","ContentLoader","primaryColor","secondaryColor","x","y","rx","ry","defaultProps","chartDefaultProps","BestPracticeCard","cancelableFetch","makeCancelable","cancelFetch","cancel","promise","snackbar","show","snackbarErrorMessage","error_1","genre","iconUrl","tagline","component","WithSnackbar","RequiresSingleGamePlaceholder","chartTitle","Stack","alignItems","InfoIcon","marginBottom","containerWidth","containerHeight","resizing","updateWindowDimensions","bind","interval","Chart","clearInterval","idPrefix","chartContainer","getElementById","offsetWidth","offsetHeight","Loading","isResizing","loadingComponent","chartComponent","shouldHaveSingleGame","kebabCaseTitle","renderLoader","META_TAG_TEXT","publisherId","feature","userRolesU6GameRolesAndPermissions","tooltipContent","Link","to","enterDelay","isMenuOpen","anchorElement","currentTarget","stopPropagation","handleMenuSelection","GameObjectCard","isEnabled","isLive","cardMenuItems","menuOptions","MENU_ITEM_ATTRIBUTES","MENU_ITEM_COPY","handleMenuItemClick","DEFAULT_MENU_ITEMS","STATUS","isCashLive","IN_PROGRESS","PRIZE_ENABLED","LAUNCHED","ARCHIVED","additionalClasses","enabled","handleCardClick","renderGameIconOrBlankIcon","determineTagChipText","handleKabobClick","kabobMenu","determineMenuItems","GameObjectListComponent","GameObjectList","gameAccess","permissions","args","typography","MuiFormControlLabel","MuiCheckbox","MaterialCheckbox","FormControlLabel","control","renderCheckbox","handleChange","Checkbox","click","MaterialFileUpload","fileName","FormControl","lightBlue","passwordIsMasked","MaterialPasswordField","InputAdornment","marginLeft","togglePasswordMask","warningIcon","endAdornment","renderErrorIcon","renderShowOrHide","MaterialSingleSelector","dropdownLabel","currentValue","hasError","selectionOptions","disabledText","shouldDisableUnderline","labelStyle","inputElement","Input","disableUnderline","selectStyle","textAlign","errorDataAttribute","MATERIAL_UI_VARIANTS","OutlinedInput","FilledInput","paddingTop","selectorInputLabel","InputLabel","htmlFor","renderDropdownLabel","NativeSelect","input","option","FormHelperText","button","a11yProps","MaterialTab","labels","isCentered","indicatorColor","tabComponents","togglePlayerDataTooltip","showTooltip","tabWithTooltip","tooltipCopy","hasDisabled","tabDisabled","tabOnClick","tabLinks","Paper","Tabs","centered","labelName","Tab","tabLinkOverride","ModalHeader","ModalSubHeader","PageHeader","spacing","renderHeaderElement","findMaxValueFromBarChartData","values","bar","Number","isNaN","apply","ResponsiveBarChart","colors","scheme","xAxisDates","axisLeft","ResponsiveBar","maxValue","minValue","indexBy","right","bottom","left","defs","background","rotation","lineWidth","animate","enableLabel","groupMode","axisBottom","tickSize","legend","legendPosition","legendOffset","legends","barLegends","findMaxValueFromLineChartData","forEach","line","point","ResponsiveLineChart","sliceTooltip","propOverrides","ResponsiveLine","enableGridX","yScale","stacked","pointColor","pointBorderWidth","pointBorderColor","from","useMesh","lineLegends","enableSlices","SectionHeader","ALERT_TYPES","SubText","String","processData","contentType","success","swal","allowOutsideClick","confirmButtonClass","XMLHttpRequest","textStatus","errorThrown","responseJSON","html","showConfirmButton","allowEscapeKey","sync","gameInfo","ProductionSyncButton","GAME_PERMISSIONS","SyncButton","Accordion","borderBottom","flexDirection","expanded","flexGrow","overflow","MuiAccordion","AccordionSummary","minHeight","content","expandIcon","MuiAccordionSummary","StickyHeader","Box","DISMISSED_KEY","alertContent","Upcoming","AlertTitle","Active","EntryPointWorkflowChangeAlert","isDismissed","setIsDismissed","alertType","progressionV3SeasonsEntryPoints","Alert","severity","MONTH_NAMES_MMM","MONTH_NAMES_FULL","TIME_IN_MILLISECONDS","TIME_UNIT","determineActionPrefix","actionString","host","GOOGLE_ANALYTICS_4","LANDING_PAGE","CATEGORY","ACTIONS","VIEW","SIGN_UP","FIRST_START_INTEGRATION","FIRST_SDK_DOWNLOAD","FIRST_INTEGRATION_COMPLETE","FIRST_UPLOAD_BINARY","FIRST_DISTRIBUTION_COMPLETE","LEARNING_CENTER_CARD_CLICK","category","DISCORD_INVITE_CLICK","QUANTUM_PACKAGE_DOWNLOAD","ANALYTICS_ATTRIBUTES","MATH_OPERATIONS","ANALYTICS_DB_ATTRIBUTES","ANALYTIC_DATA_FORMAT_TYPES","ANALYTIC_DATA_BENCHMARKS","ANALYTICS_BENCHMARK_LABELS","ANALYTICS_KEY_ATTRIBUTES","SKILLZ_INSTALLS","DAU","SKILLZ_DAU","PAYING_DAU","SKILLZ_PDAU","DAU_OF_MAU","D1","D7","D30","INSTALLS_TO_1Z","INSTALLS_TO_2Z","INSTALLS_TO_3Z","INSTALLS_TO_D","ABORT_RATE","ABORT_EVENTS_UNKNOWN","ABORT_EVENTS_TIMEOUT","ABORT_EVENTS_TERMINATED","ABORT_EVENTS_BACKGROUNDED","ABORT_EVENTS_UNINTENTIONAL","ABORT_EVENTS_INTENTIONAL","ACCELERATE_INSTALLS","P1","P7","P30","REVENUE","GROSS_REVENUE","ESTIMATED_REVENUE","GAMES_PER_USER","CASH_GAMES_PER_USER","GAMES_PLAYED","PRO_GAMES_PLAYED","Z_GAMES_PLAYED","ARPPU","ARPDAU","EST_ARPPU","EST_ARPDAU","NEW_PAYING_USERS","COMPLETION_1Z","COMPLETION_2Z","COMPLETION_3Z","DAY_1_Z_GAMES_PER_INSTALL","IN_BAND_WIN_RATE","ENTRY_FEE","ENTRY_FEE_PER_PRO_DAU","PRO_DAU","FIRST_TIME_PAYERS_TO_SKILLZ_NETWORK","NEW_PRO_USERS","PRO_GAMES_PER_PRO_DAU","PAYER_PRO_RETENTION_D1","PAYER_PRO_RETENTION_D7","PAYER_PRO_RETENTION_D30","INSTALLS_TO_DEPOSIT","INSTALLS","INSTALLS_Z1","INSTALLS_Z2","INSTALLS_Z3","RETENTION_D1","RETENTION_D7","RETENTION_D30","ENTRY_FEE_D1","ENTRY_FEE_D7","ENTRY_FEE_D30","ENTRY_FEE_LIFETIME","EST_ARPPU_DEV_ANALYTICS","ARPPU_DEV_ANALYTICS","CHART_TYPE","ANALYTICS_CHART_TITLES","PAGE_NAMES","MAINTENANCE_FLOW_PAGE_NAMES","MAINTENANCE_FLOW_PAGE_LINKS","ANALYTICS_CHART_TOOLTIPS","ABORT_EVENTS","ARPPU_ARPDAU","Z_COMPLETION","PAYING_USER_RETENTION","INSTALLS_TO_Z","USER_RETENTION","COHORT_PERFORMANCE","ANALYTICS_CHART_TOOLTIPS_PRE_PRIZE","RETENTION","PAYING_RETENTION","anchor","justify","translateY","translateX","itemWidth","itemHeight","itemsSpacing","symbolSize","symbolShape","itemDirection","effects","on","itemBackground","itemOpacity","cloneDeep","dataFrom","horizontalLegends","Z_COMPLETION_Y_AXIS_PROPERTIES","orient","abs","parseFloat","DAY_1_Z_GAMES_PER_INSTALL_PROPERTIES","yAxisLabelFormatter","GENERIC_Y_AXIS_PROPERTIES","WHOLE_NUMBER_Y_AXIS_PROPERTIES","floor","USD_Y_AXIS_PROPERTIES","PERCENTAGE_Y_AXIS_PROPERTIES","CHART_COLORS","PRIMARY","LIGHT","RETENTION_WITH_BENCHMARK","SINGLE_LINE_WITH_BENCHMARK","DOUBLE_LINE_WITH_BENCHMARK","CARD_PROPS","raised","elevation","ABORT_RATE_KEYS","ABORT_EVENTS_KEYS","_d","IN_BAND_WIN_RATE_KEYS","Z_COMPLETION_KEYS","_f","DAY_1_Z_GAMES_PER_INSTALL_KEYS","GAME_INFORMATION","THEME","DEEP_LINKING","SINGLE_SIGN_ON","BINARIES","APPLE_PAY","IN_APP_PURCHASE_PACKAGE","INTRODUCTION","SKILLZ_SDK","FAIRNESS","SDK_THEME","TOURNAMENTS","VIRTUAL_CURRENCY","PUSH_NOTIFICATIONS","UPLOAD_BINARY","VERIFY_CONFIGURATION","PUBLISH_GAME","NEXT_STEPS","VIRTUAL_CURRENCY_OPTIONS","PLATFORM","RESPONSE_STATUS","PUBLIC_PRIVATE_ROUTES","PUBLIC_ROUTES","PUBLIC_FLOWS","USERS","ENVIRONMENT","ENVIRONMENT_TABS","FORM_ERRORS","TOURNAMENT_NAME_INVALID_CHARACTERS","COUNTRIES","EU_COUNTRIES","RESPONSE_TYPES","GAME_ATTRIBUTE_NAME","properUrlFormat","properSecuredUrlFormat","allowedPhoneNumberCharacters","KEY_CONSTANT","LOCALE","GOOGLE_ANALYTICS","HELP_BITS","CLICK_HELP","HELP_BIT_VIEW","CLICK_BACK","CLICK_NEXT","CLICK_SEARCH","SEARCH_TERM","ZENDESK_DASHBOARD","OPEN_TAB","OPEN_TICKET","CHANGE_PAGE","CHANGE_PAGE_SIZE","CHANGE_TICKET","CHANGE_CATEGORY","CHANGE_DATE_RANGE","CRUD","RESOURCES","DEFAULT","DC_RELATIVE_URLS","PUBLISHER_PERMISSIONS","CREATE","READ","UPDATE","DESTROY","USER_PERMISSIONS","GAME_CHALLENGE_PROPOSAL_PERMISSIONS","GAME_CHALLENGE_PROPOSAL","PUBLISH","ANALYTICS_PERMISSIONS","BILLING_PERMISSIONS","DOWNLOAD_STATEMENTS","AUDIT_PERMISSIONS","AUDIT","GAMES_SKILLZ_URL","GAMES_SKILLZ_URL_GAMES","SKILLZ_URL","environment","skillzUrl","NFL_TERMS_CONDITIONS_URL","determineSkillzDocsLink","docSubPage","subUrl","skillzDocBaseUrl","SKILLZ_DOCS_RELEASE_NOTES_URL","SKILLZ_DOCS_PLAYER_DATA_API_URL","SKILLZ_DOCS_STANDARD_GAMEPLAY_URL","SKILLZ_DOCS_IN_GAME_ITEM_URL","SKILLZ_DOCS_PROGRESSION_API_URL","SKILLZ_DOCS_REAL_TIME_FTUE_URL","SKILLZ_DOCS_BASE_URL","USER_ROLES","PLAY_AND_COMPARE_TOURNAMENT_DOCS","REAL_TIME_TOURNAMENT_DOCS","UTM_TERMS","PEEK_COOKIE","isPeekPageRegex","createContext","object","result","isObject","constructor","isArray","Array","snakeCaseKey","snakeCase","cookies","Cookies","setGDPRCookie","date","convertedDate","setFullYear","getFullYear","toUTCString","cookie","removeGDPRCookies","indexOf","expiration","hostname","keyDivider","cookieKey","substring","deleteCookie","addGDPRCookies","_ga","addTooltipCookie","expirationDate","set","cookieName","path","expires","getTooltipCookie","get","checkCookieExists","shouldViewPeekPage","isSkillzSupport","shouldShowPeekHeader","checkEUcountries","country","fileNameHelper","calculatePercentageDifference","valueA","valueB","formatDate","isFullMonth","dateArr","monthIndex","parseInt","day","createDateStringArray","dateRangeArray","i","setDate","getDate","toISOString","slice","calculateDateRange","selectedDateRange","startDateInput","endDateInput","startOfDay","endOfDay","DATE_RANGE_OPTIONS","setMonth","getMonth","lastDayOfMonth","calculateDateRangeHelper","calculateDateNDaysAfter","isoStringDate","numberOfDays","calculateUnitOfTimeFromMilliseconds","unit","milliseconds","calculatePSTTime","isoStrToDate","timeZone","formatIsoDate","toLocaleString","createTempData","keysObj","tempData","normalizeGraph","calculateTotalsCount","dateRange","isEmpty","calculateData","calculateTotals","startTime","currentData","total","count","toFixed","_i","calculateSumOrAverageByDate","buildLineData","lineDataObj","normalizeDataForLineChart","buildBarData","dateValue","sort","normalizeDataForBarChart","filterData","tempDate","parseISO","createTotalCountDataObject","keyAttributes","analyticsInfo","tempLineData","analyticsKeys","filteredDate","rawData","currentAnalyticKey","analytic","analyticValue","currentAccValue","findNestedIndex","array","selectedId","findIndex","element","calculateSumOrAverage","calculateTotalAndCountOfAttribute","xAxisLabelFormatter","getTime","absoluteValue","toPrecision","suffixNum","pow","renderLineChartTooltip","formatter","points","xFormatted","serieId","yFormatted","serieColor","marginRight","renderBarChartTooltip","indexValue","renderBarChart","filteredData","barKeys","renderLineChart","benchmarkValue","benchmarkLabel","lineGraphData","benchMarkLine","addBenchmarkLine","isEstimatedRevenueEnabled","estimatedRevenueChart","formatFileName","selectedGame","toUpperCase","getAnalyticsAttributes","attributes","COMMON_ANALYTICS_METRICS","GAME_ANALYTICS_REPLACED_METRICS","GAME_ANALYTICS_METRICS","ESTIMATED_REVENUE_METRIC","formatAnalyticsToCsv","csvKeys","csvData","csvDataRow","csvKey","n","sendGaEvent","selectedGameName","gameIdsString","ReactGA","tracker","ALL_GAMES","uniqBy","formatCurrency","currency","formatWholeNumber","formatWholeNumberFromDecimal","round","formatDecimal","minimumFractionDigits","maximumFractionDigits","formatPercentage","formatDateToIsoString","formatStringDateToIsoString","cleanDate","getUTCMonth","padStart","getUTCDate","getUTCFullYear","getTabIndex","tab","tabIndex","TABS","getSearchParams","searchParams","search","getDateRangeFromUrl","dateRangeQuery","splitQuery","dateToUrlFormatter","dateRangeUrlParamHelper","DEFAULT_DATE_RANGE","exec","dateRangeUrlParamFormatter","formatDropdownOptions","postRequest","dropdownOptionsConverter","formatToDropDownOptions","platform","developmentEnvironment","DEFAULT_VALID_RESPONSE","status","emailValidation","RegExp","lengthValidation","attributeValue","maximumLength","capitalize","phoneNumberValidation","hasInvalidCharacters","digitsFromPhoneNumber","hasInvalidNumberOfDigits","urlValidation","securedUrlValidation","test","emptyValidation","semverValidation","version","specialCharacterValidation","skillzSupport","validateStrongPassword","currentPassword","UserFlowErrors","PASSWORD_ERRORS","validateEmail","VALID_EMAIL_REGEX","validateInputForEmptyField","emptyFileNameValidation","isDefaultCompany","isDefaultFirstName","firstName","isDefaultLastName","lastName","isDefaultUserName","BYTE_UNIT","removeUnwantedCharacters","output","charCodeAt","charAt","toLowerCase","ONE_KB_IN_BYTES","ONE_MB_IN_BYTES","ONE_GB_IN_BYTES","convertByteToUnit","byteSize","bytes","KB","MB","GB","printFile","resolve","reject","reader","FileReader","onload","readAsText","replaceNullsWith","replacement","obj","isPublicRoute","flow","pathName","isPublicOrPrivateRoute","userId","hasAccessGameForPermission","some","el","handleResponse","handleError","axiosError","errorMessage","hasCanceled","isCanceled","Component","useSnackbarContext","pluralize","word","override","endsWith","defaultSuffix","defaultCount","basePluralCases","suffix","replaceCharsCount","replaceChars","substr","concat","truncateWithElipses","maxLength","getWindowDimensions","func","windowDimensions","setWindowDimensions","handleResize","Banner","iconCircumference","customContent","iconId","bannerContent","role","renderIcon","ButtonWithLoader","PulseLoader","CardWithIconAndLink","cardIcon","cardText","linkTitle","linkUrl","hasLinkIcon","shouldLinkNewTab","linkIcon","linkNewTab","shouldShowPassword","positionEnd","handleClickShowPassword","eyeClosed","eyeOpened","renderInputAdornment","isExpanded","isScreenWideEnough","shouldAnimate","getWindowWidth","minScreenWidth","innerWidth","setTimer","IconToSearchBar","updateShouldAnimate","growDirection","searchIcon","SearchIcon","shouldShowIcon","handleSearchExpand","handleSearchCompress","isAutoFocused","startAdornment","getOptionDetails","passDownProps","details","dataQa","optionDataAttributes","Avatar","tags","getTagProps","allowRemove","chipDataAttributes","avatar","tagProps","omit","deleteIcon","noop","BaseAutocomplete","Autocomplete","getOptionLabel","renderOption","renderTags","every","GamesAutocomplete","getOptionDisabled","ALPHA_NUMERIC_CHARACTERS","WHITE_SPACES","token","querySelector","getAttribute","initialAppConfig","appEnv","nodeEnv","railsEnv","cmsBaseUrl","discordInviteUrl","themeImagesAwsS3Bucket","bestPracticeProductionIds","progressionPlayerDataMaxCount","progressionInGameItemsMaxCount","zendeskDashboardEarlyAdopterGameIds","prePrizeAnalyticsPublisherIds","oAuthClientId","oAuthRedirectUri","oAuthDomain","axiosWithRetry","defaults","raxConfig","instance","rax","isSnackbarOpen","duration","alertProps","Account","currentUser","Analytics","showSurvey","CONTACT_US","ContactUs","mapStateToProps","contactUs","games","fetchSdkVersions","ApiUtils","RECEIVE_SDK_VERSIONS","Dashboard","GameInfoModal","createGame","fetchGameStateByGameId","isGameInfoModalOpen","totalGames","GameManagement","fetchGameLatestSdkDownload","clearGamePerformanceStatus","HomePage","Introduction","Jobs","CaseStudyBenchmarks","CaseStudyChat","CaseStudyInGameItems","CaseStudyProgression","useHistory","startIcon","ArrowBackIosIcon","ManagedLearningCenterIndex","learningCenterCategoriesQuery","useLearningCenterCategories","learningCenterCardsQuery","useLearningCenterCards","gamesQuery","useGames","learningCenterCategories","learningCenterCards","Container","LoadingIndicator","cardsSortByColumn","hasLaunchedToStore","mt","mb","cardsSortBy","categoriesSortBy","shouldCardsMaintainAspectRation","categories","cards","learningCenterSortComparator","ml","mr","CategoryName","sortAndRenderLearningCenterCards","renderLearningCenterContent","ManagedLearningCenter","Switch","progressionPr3iIgiCaseStudy","Route","progressionPr7LearningCenterAndCaseStudy","exact","NotFoundPage","NavBar","NflChallenge","Notification","fetchNotificationItems","PeekHeader","Loadable","loader","loading","PeekPage","Playground","ProfileModal","isProfileModalOpen","usePublisherQuery","useQuery","COOKIE_REVENUE_MODEL_CHANGE","WithActionModalHeader","fontWeightMedium","WithNoActionModalHeader","shouldRenderNotificationWithNoAction","developerRevenueOverhaulContract","developerRevenueOverhaulContractNoAction","shouldRenderNotificationWithAction","revenueModelAgreedOn","shouldRenderRevenueModelNotification","staleTime","reOpenTime","RevenueModelNotification","reduxFetchPublisher","setIsOpen","isAgreeChecked","setIsAgreeChecked","isAtBottom","setIsAtBottom","isRefetched","setIsRefetched","showSnackbar","queryClient","useQueryClient","useTheme","publisherQuery","Infinity","openModalTimeout","updatePublisherMutation","useMutation","onSuccess","onError","onSettled","invalidateQueries","timer_1","isRefetching","Dialog","DialogTitle","Divider","DialogContent","onScroll","hasReachedBottom","scrollHeight","scrollTop","clientHeight","fontStyle","ReactMarkdown","source","renderers","startsWith","listItem","img","listStyleImage","DialogActions","FormGroup","mutate","visibility","SdkDownloads","sdkDownloads","SignInComponent","SignIn","ChangePassword","SignUpFlow","SignUp","ForgotPassword","STATEMENTS","Statements","fetchStatements","year","month","paddedMonth","statements","Survey","survey","hideSurvey","fromLocation","fetchAllQuestions","createResponse","updateResponse","SurveyLandingPage","DialogSurvey","userType","isSurveyOpen","answers","setAnswers","closeSurvey","useSurveyContext","questions","surveyQuestions","pageLocation","useLocation","submitResponse","isDismissal","postSurveyResponse","surveyId","SUCCESS_SUBMISSION_SNACKBAR_MESSAGE","SURVEY_24H_COOKIE","DialogTitleWithCloseButton","surveyTitle","DEFAULT_SURVEY_TITLE","question","renderQuestionWithAppropriateComponent","addAnswer","validateAnswers","PopupSurvey","muiTheme","Slide","borderBottomLeftRadius","borderBottomRightRadius","CardActions","Surveys","surveyTrigger","determineUserType","triggeredSurvey","useSurvey","mapUserTypeToSurveyTarget","previousResponse","useLatestSurveyResponse","checkHasUserRespondedInLast24Hours","surveyType","lastResponse","lastResponseDate","createdAt","nowInMilliseconds","dismissalThreshold","dismissalCadence","completionThreshold","completionCadence","shouldRenderSurveyBasedOnLastResponse","TOAST_SURVEYS","UserInvite","YourGames","QueryClient","appBar","navBarHeight","small","large","drawerWidth","peekHeaderHeight","portalDeveloperThemeOverrides","permissionKey","App","locationPathName","getPublisherGameUserInfo","reload","isLoggedIn","shouldAddPeekHeaderOffset","whenPeeking","themePeekHeaderHeight","StyledEngineProvider","injectFirst","GlobalStyles","styles","QueryClientProvider","client","ReactQueryDevtools","initialIsOpen","SkillzetThemeProvider","SnackbarContainer","UserContext","SurveyContextProvider","md","CookieBanner","ReduxSnackbarAdapter","PrivacyPolicyBar","hasPermission","NoAccessPage","Redirect","PlaygroundOld","surveysInDc","config","store","Provider","BrowserRouter","Application","initialState","combineReducers","freeze","dateRangeLimit","CONTACT_US_STORE","SDK_VERSIONS","createSlice","reducers","extraReducers","builder","addCase","itemsInitialState","gameBuildsReducer","GAME_BUILDS_COUNT","GAME_BUILDS_FETCH","merge","GAME_BUILDS_UPDATE","firstKey","gameBuild","gameBuildIndex","findGameBuildIndex","uploads","newState","GAME_BUILDS_UPLOAD","sandbox","production","createProgressionRoomReducer","env","fetchProgressionRoomVersions","roomVersionId","fetchProgressionRoomVersionLocales","currentVersionId","versionLocales","locales","sendStatus","deepLinkOption","prefix","verified","android","INITIAL_PACKAGES","ios","verification","VERIFICATION","singleSignOn","deepLinking","virtualCurrency","iosOfferSetId","androidOfferSetId","sdkDownloadInfo","SDK_DOWNLOAD_INFO","gameState","GAME_STATE_ACTIONS","gameBuilds","notificationCertificates","gamePerformanceStatus","GAME_PERFORMANCE_STATUS_ACTIONS","prizeEnablementRequest","PRIZE_ENABLEMENT_REQUEST_ACTIONS","accelerateApplication","ACCELERATE_PROGRAM","progressionRooms","progressionRoomVersions","progressionRoomVersionMappings","hasActionData","gamesReducer","gameIndex","androidStoreUrl","iosStoreUrl","samsungStoreUrl","androidPushVerification","iosPushVerification","initialModalState","IS_PROFILE_MODAL_OPEN","IS_GAME_INFO_MODAL_OPEN","IS_PROGRESSION_ROOM_EDIT_MODAL_OPEN","IS_AUDIT_NOTE_MODAL_OPEN","IS_ENTRY_POINT_CONFIRM_MODAL_OPEN","IS_ENTRY_POINT_SYNC_MODAL_OPEN","replaceNullsWithEmptyStr","extractProposal","proposalResponse","isSubmitted","userInterfaceImages","artStyleImages","postWorkAndPlanningImages","nflChallengeProposal","artStyle","competitiveFormat","gameSummary","gameplayOverview","postWorkAndPlanning","scoring","skillFactor","useOfNflBranding","userInterface","workingTitle","meta","arg","activeUsers","fetchActiveUsers","DEFAULT_USER_PAGE_SIZE","invitedUsers","fetchInvitedUsers","showModal","questionSet","createNamespaceReducer","keyNamespace","filteredPayload","pick","KEY_NAMESPACE","productionChangelog","PlayerData","InGameItems","fetchPlayerDataSchema","fetchPlayerDataSchemaChangelogs","fetchInGameItemsSchema","fetchInGameItemsSchemaChangelogs","needsFetch","appReducer","applePayCertificates","customTheme","BASE_THEME","json","themeObject","parsedJson","gradients","gradient","jsonBody","ADVANCED_THEME","mainField","subField","keyField","CUSTOM_THEME","updateTheme","gameUrl","tournament","NEW_TOURNAMENTS","tournaments","rules","tournamentRule","updateIndex","rule","deleteIndex","splice","verifyConfig","VERIFY_CONFIG","SURVEY_TOOL","unshift","SELECT_TEXT","isFairnessModalOpen","isPrizeEnablementModalOpen","isAccelerateModalOpen","isFeedbackModalOpen","isStudioModalOpen","isUserModalOpen","isRemoveUserModalOpen","isDeactivateSkillzSupportModalOpen","isInviteUserModalOpen","isTransferOwnershipModalOpen","isEditUserModalOpen","isDisableThirdPartyAdsModalOpen","isProgressionDeleteItemModalOpen","isPlayerDataModalOpen","isProgressionPublishModalOpen","isProgressionChangelogModalOpen","isProgressionPlayerLookupModalOpen","isInGameItemsModalOpen","isProgressionRoomSaveModalOpen","isProgressionRoomCreateModalOpen","isProgressionRoomDeleteModalOpen","isEntryPointAssignAndSyncModalOpen","notifications","progression","gameChallenge","isProductionEnv","createStore","rootReducer","applyMiddleware","thunk","composeWithDevTools","retry","GA4_ID","s","ReactDOM","Root","ReactGA4","fetchUsers","hasPendingInvitation","sortAttributes","sortAttribute","directionSign","TABLE_SORT_ATTRIBUTES","TABLES","INITIAL_TABLE_STATE","EMAIL","EMAIL_HEAD_ROW","ACTION_HEAD_ROW","USER_ROLE_HEAD_ROW","GAME_ROLE_HEAD_ROW","GAMES_HEAD_ROW","SKILLZ_SUPPORT_HEAD_ROW","SKILLZ_SUPPORT","TABLE_DATA_ORDER","ROLE_NAMES","INITIAL_USER_GAME_ROLES","billing","developer","GAME_ASSIGNMENT_DROPDOWN_DEFAULTS","shouldSelectAllGames","selectAllGamesText","dropdownPlaceholder","limitTags","TOOLTIP_TYPOGRAPHY_STYLE","TOOLTIP_BOLD_TEXT_STYLE","TAB","TITLE","ANALYTICS_TABS","OVERVIEW","ENGAGEMENT","MONETIZATION","FUNNEL","gameTitle","abortRate","skillzDau","gamesPerPlayer","gamesPlayed","proGamesPlayed","zGamesPlayed","dauOfMau","installs","installsZ1","installsZ2","installsZ3","retentionD1","retentionD7","retentionD30","payerProRetentionD1","payerProRetentionD7","payerProRetentionD30","proDau","proGamesPerProDau","entryFeePerProDau","firstTimePayersToSkillzNetwork","kpiInstallsToDeposit","entryFee","entryFeeD1","entryFeeD7","entryFeeD30","entryFeeLifetime","newProUsers","estimatedRevenue","LAST_30_DAYS","CONTACT_US_SNACKBAR_MESSAGE","DESCRIPTION","FRAMEWORKS","ENVIRONMENTS","sendTicket","ticketEntry","ticketValue","NavigationButton","ArrowForward","ArrowBack","renderFooterComponents","currentHelpBit","handleChangeHelpBit","hasPrevious","previous","previousFunction","hasNext","next","nextFunction","PAGINATE_LIMIT","SORT_BY_FIELD","FETCH_ERROR_MESSAGE","componentClassName","thickness","_e","testId","CircularProgress","contentManagementSystemInstance","headers","common","fetchHelpBit","fetchHelpBits","fetchHelpBitsHeaders","start","keyFrom","formatFindParams","user_id","page_searched_from","pageSearchedFrom","isGameLaunched","live","hasFirstGame","verifiedFairness","fairnessVerification","stateName","GAME_STATES","receiveVerification","RECEIVE_DATA","fetchVerification","updateVerification","verifyFairness","receiveGameState","updateGameState","requestObject","updateInProgressGameState","updateCompleteGameState","GAME_STATES_REQUEST","META_TAGS_ATTRIBUTES","REAL_PRIZES_URL","fetchProgressionRooms","fetchProgressionRoomsRequest","fetchProgressionRoomMappings","fetchProgressionRoomMappingsRequest","fetchProgressionRoomVersionsRequest","fetchProgressionRoomVersionLocalesRequest","chunkFileUpload","fileType","numberOfChunks","fileChunkSize","signedUrls","progressFunction","startEndOfChunk","awsResponsePromises","controller","AbortController","signedUrl","partNumber","calculateFileChunkStartEnd","uploadResp","chunk","onUploadProgress","progressEvent","signal","etag","uploadAwsChunk","end","uploadChunks","cancelUpload","abort","tournamentIcon","tournamentIconSvg","inAppPurchaseIcon","inAppPurchaseIconSvg","gameBuildIcon","gameBuildIIconSvg","appStoreUrlIcon","appStoreUrlIconSvg","themeIcon","themeIconSvg","pushNotificationIcon","pushNotificationIconSvg","applePayIcon","applePayIconSvg","deepLinkingIcon","deepLinkingIconSvg","singleSignOnIcon","singleSignOnIconSvg","prizeEnablementIcon","prizeEnablementIconSvg","fixItIcon","fixItIconSvg","UploadSdkIcon","UploadSdkIconSvg","fairPlayIcon","fairPlayIconSvg","hundredDAUIcon","hundredDAUIconSvg","expertMoneyGradient","expertMoneyGradientSvg","playerDataIcon","playerDataIconSvg","inGameItemsIcon","inGameItemsIconSvg","NEXT_STEP_FIX_APPLE_PAY_COPY","NEXT_STEP_FIX_PUSH_NOTIFICATION_COPY","NEXT_STEP_UPLOAD_SDK_COPY","NEXT_STEP_TOURNAMENT_COPY","NEXT_STEP_IN_APP_PURCHASE_COPY","NEXT_STEP_GAME_BUILDS_COPY","NEXT_STEP_APP_STORE_URL_COPY","NEXT_STEP_THEME_COPY","NEXT_STEP_PUSH_NOTIFICATION_COPY","NEXT_STEP_APPLE_PAY_COPY","NEXT_STEP_DEEP_LINKING_COPY","NEXT_STEP_SINGLE_SIGN_ON_COPY","NEXT_STEP_HUNDRED_DAU","NEXT_STEP_SEVENTY_FIVE_DAU","NEXT_STEP_FAIR_PLAY","NEXT_STEP_PRIZE_ENABLEMENT","NEXT_STEP_ANALYTICS_COPY","NEXT_STEP_MONETIZATION_CHANNEL","NEXT_STEP_PLAYER_DATA","NEXT_STEP_IN_GAME_ITEMS","renderDescription","TAB_PATH_ENUM","stepFixApplePay","Icons","Copy","buttonProps","stepFixPushNotification","stepUploadSdk","stepTournament","stepInAppPurchase","stepGameBuilds","stepAppStoreUrl","stepTheme","stepPushNotification","stepApplePay","stepDeepLinking","stepSingleSignOn","stepHundredDAU","stepSeventyFiveDAU","stepFairPlay","stepPrizeEnablement","stepAnalytics","stepPlayerData","stepInGameItems","OVERVIEW_GAME_STATE_ORDER","OVERVIEW_ACTION_REQUIRED_ORDER","POST_PERFORMANCE_GAME_STATE_ORDER","featureFlag","NEXT_STEP_ACTION_REQUIRED_CONSTANTS","NEXT_STEP_GAME_STATE_CONSTANTS","NEXT_STEP_POST_PERFORMANCE_CONSTANTS","GAME_HOME_TAB_BASE_URLS","GAME_HOME_PAGE_URL","TAB_TOOLTIPS","PLAYER_DATA","launchDate","IN_GAME_ITEMS","PROGRESSION","FILE_CHUNK_SIZE","calculateNumberOfChunks","fileSize","fileNameCleanUp","startEnd","shouldRenderPrizeEnablementSuccessModal","hasSeenPrizeEnablementSuccess","roomId","roomIdentifier","currentRoomIdentifier","createProgressionRoomRequest","editProgressionRoomRequest","productionRoomId","sandboxRoomId","versionId","formatLocalesBodyImagesConditions","activateProgressionRoomRequest","deactivateProgressionRoomRequest","deleteProgressionRoomRequest","nextStepSelectorActionRequired","isLatestSdk","tempGameState","nextStepSelectorGameState","postPerformanceGameStateSelector","isPerformanceRequirementAchieved","gameStateWithFeature","isGameFair","cashLive","isFair","hasFewerDAU","isPrizeEnablementRevamp","skillzDau7DayAverage","determineNextStepProps","isActionRequired","latestSdk","isNextGameState","shouldShowAnalytics","shouldShowFairPlay","isPostPerformanceGameState","nextStep","isVcOnly","vcOnly","determineNextStep","determineNextStepUrl","getGameStatePageUrl","nextStepState","pageUrl","pageWithTab","progressionPages","clearFinalizeGameBuild","CLEAR_FINALIZE_GAME_BUILD","createGameBuild","gameBuildInfo","gameBinary","RECEIVE_NEW_GAME_BUILD","completeMultipartUpload","uploadResponse","parts","uploadId","processUpload","fetchProcessingGameBuild","gameBuildId","camelizeResponse","uploadStatus","GAME_BUILD_PROCESS_END_STATE","fetchGameBuildsApiCall","fetchActiveAndroidGameBuilds","GAME_BUILD_STATUS","fetchGameBuilds","GAME_BUILDS_PER_PAGE","RESET_AND_RECEIVE_GAME_BUILDS","RECEIVE_GAME_BUILDS","receiveGameBuilds","receiveGameBuildsCount","receiveUpdatedGameBuild","RECEIVE_GAME_BUILD_UPDATE","updateGameBuild","updateGameBuildNotComplete","newUploadStatus","updateGameBuildInPage","gameBuildUpdateParams","createGameBuildRequest","updatedGameBuild","ticketCreated","activeTicketId","updateGameBuildRequest","FILE_TYPE","CONTENT_TYPE","ATTRIBUTE_NAME","READABLE_ATTRIBUTE_NAME","FAILURE_PROCESSING","CANCELLED","COMPLETE","UPLOADER_TOOLTIP_COPY","QA_CHECKLIST_LINK","RELEASE_GUIDE_LINK","UPLOAD_PROGRESS_MAX","UPLOAD_PROGRESS_STEP_VALUE","SUCCESS_UPLOAD_MESSAGE","BLANK_VALIDATION","CASH_LIVE_NOTE","parseNewGameVersion","mostRecentGameBuild","currentVersion","gameVersion","lastIndexOfPeriod","lastIndexOf","patchNumber","extractNameGameVersionAndFileType","extractVersion","determineUploadFileTypes","isFirstOtherPlatformGameBuild","gameBinariesStatus","uploadBinaryPlatform","editGameBuildProcessErrorMessage","gameBuildPlatform","platformValues","constantMessage","bundleMismatchError","calculateProgressSegment","currentProgress","increment","maxProgress","newSegmentState","calculateChunkProgressFactor","convertByteToMbGb","sizeInByte","isProgressAtMax","uploadProgressBarSegments","determineFileUploadErrorMessage","HEAD_ROWS","ACTIVE","NAME","SDK_VERSION","CREATED_AT","PENDING_TOOLTIP_COPY","PROGRESSION_SCHEMA_VALIDATIONS","SANDBOX_SCHEMA_STATUS","MENU_TYPES","GAME_PROGRESSION_CLASS","SANDBOX_TOOLTIP_COPY","PROGRESSION_SCHEMA_ERRORS","BULK_ERRORS","DEFAULT_NAMESPACE","ACTION_TYPE","KEY_NAME_MUST_BE_UNIQUE","INVALID_GAME_ID","SNACKBAR_MESSAGES","SCHEMA_KEY_CAP","SCHEMA_KEY_CAP_EXCEEDED_ERROR","DEFAULT_PLAYER_DATA","DEFAULT_PLAYER_DATA_HEAD_ROWS","DEFAULT_PLAYER_DATA_ORDER","MIN_SCREEN_WIDTH_TO_ANIMATE","DEFAULT_PROGRESSION_SCHEMA_PAGE_SIZE","IGI_EDIT_AUTHORIZATION_ERROR_MESSAGE","IGI_PUBLISH_AUTHORIZATION_ERROR_MESSAGE","OPERATORS","OPERATORS_OTHER","PROGRESSION_ROOM_MENU_ITEM_ATTRIBUTES","PROGRESSION_ROOM_MENU_ITEM_COPY","deleteProgressionRoom","DELETE","DeleteIcon","viewProgressionRoomInSandbox","VIEW_IN_SANDBOX","CheckCircleRoundedIcon","stopProgressionRoomInSandbox","STOP_IN_SANDBOX","CancelIcon","assignToBuilds","ASSIGN_TO_BUILDS","LibraryAddIcon","editEntryPoint","EDIT_ENTRY_POINT","CreateIcon","changeEntryPointName","CHANGE_NAME","SyncAlt","activateProgressionRoomInProduction","ACTIVATE_IN_PRODUCTION","deactivateProgressionRoomFromProduction","DEACTIVATE_FROM_PRODUCTION","syncToProgressionRoomToProduction","SYNC_TO_PRODUCTION","SyncIcon","LOCALE_MAPPING","localeDropdown","locale","gameBuildsMappingCount","room","versions","gameBinaryIds","existingConditionCounter","validation","conditionValidationCount","bodyImagesWithCondition","bodyImageValidations","newConditionCounterAndNewValidationObject","newConditionsCount","bodyImagesWithConditionValidations","bodyImageWithCondition","condition","emptyConditionValidation","hasLoadedAllVersionLocales","reduxProgressionRooms","reduxProgressionRoomVersionMappings","isAnyVersionEmpty","determineLocaleCopyToUse","stateVersionLocales","initialRoomVersionLocaleState","determineLocalesUpdateTo","currentLocale","currentVersionLocale","isCurrentVersionLocaleSameAsInitialState","versionLocaleMatchInitialState","isCurrentVersionLocaleSameAsCopyInState","versionLocaleMatchState","newRoomVersionLocales","emptyCopy","isEqual","removeEmptyFromStateLocales","extractDeveloperKeyFromInput","regex","parsed","extractLatestEnvRoomVersionId","reduxProgressionRoomVersionMapping","progressionRoomVersionMapping","roomVersionIds","extractCurrentRoomId","progressionRoom","extractRoomName","extractCurrentVersion","latestVersionId","versionNumber","generateProductionProgressionRoomVersionFormData","progressionRoomVersion","localeIdx","roomName","headerTitle","headerSubtitle1","headerSubtitle2","headerFontColor1","headerFontColor2","headerColor","renderType","roomIcon","headerBadge","headerImage","lastIndex","bodyImages","bodyImage","bodyImageIdx","conditions","convertConditionsIntoFormData","bodyImageKey_1","formDataStr","generateSandboxProgressionRoomVersionFormData","progressionRoomVersionState","localeIndex","versionLocale","roomIconFile","headerBadgeFile","headerImageFile","defaultBodyImage","fullBodyImages","lastIndex_1","bodyImageIndex","mimeType","bodyImageKey_2","determineNextSandboxVersionNumber","latestSandboxVersion","latestProdVersion","sandboxVersionNumbers","imageRequirements","extensions","sizeInKb","resolution","imageSizeValidation","imageFor","requirement","str","imageFieldName","maxSize","fileTypeRegex","generateRequirementsForImage","isFileValid","formatBodyImageDisplayName","extractFileNameFromS3Url","formatEntryPointImageDisplayName","s3Url","tempString","pop","lastIndexOfDash","extension","formatResponseLocaleToLocaleState","responseVersionLocale","versionLocaleWithoutBodyImages","bodyImagesState","initialBaseBodyImages","bodyImagesCount","formattedBodyImages","bodyImagesCopy","initialBaseVersionLocaleFiles","rest","formattedBodyImage","flattenAndRoomCondition","formattedCondition","formattedCondition1","formattedCondition2","convertArrayIntoFormDataBase","baseConditionHelper","accAddOnKey","halfIndex","firstHalf","secondHalf","convertSingleConditionIntoFormData","conditionKey","extractGameBinaryMappedRoom","gameBinaryId","versionMappedToBinary","find","FIELDS_OF_TSTATE_LOCAL","supportImageTypes","supportImageTypesBodyImage","ENTRY_POINT_CSS_PREFIX","headerFontColor1Swatches","headerFontColor2Swatches","headerColorLeftSwatches","headerColorRightSwatches","emptyConditionState","developerKey","comparisonOperators","localeFieldsToValidate","defaultSingleRoomState","reset","deleteMappings","deleteProgressionRoomVersionMappings","actions","formattedRoom","roomVersionBinaryMappings","resetProgressionRooms","seasonStatusNames","upcoming","past","draft","deleted","now","tomorrow","nextMonth","yesterday","lastMonth","COMPONENT_CLASS_NAME","hasBorder","other","m","p","grey","dataId","hideGradientOverlay","backgroundImage","VIDEO_COMPONENT_CLASS_NAME","videoModalStyle","bgcolor","aspectRatio","renderVideoModal","videoTitle","handleToggle","videoUrl","disableAutoFocus","frameBorder","allowFullScreen","allow","shouldShowImageOnly","prev","videoThumbnail","videoDescription","ImageCard","PlayCircleOutlineIcon","renderPlaceholder","RECEIVE_VERIFICATION","sendDeepLinkTest","verifyDeepLinkTest","match","getDeepLinkingVerification","FORM_LIST","platformKeys","iOS","Android","proTournaments","orientation","Portrait","Landscape","winMetric","skuValues","Yes","No","cross_platform","EXISTING_GAME_VALUE","orientationValues","portrait","landscape","winMetricValues","high_score","low_score","entryFeeValues","cash_and_virtual_currency","virtual_currency_only","GAME_ATTRIBUTES","VC_ONLY","IOS_APP_ID","IOS_BUNDLE_ID","ANDROID_PACKAGENAME","IOS_STORE_URL","ANDROID_STORE_URL","SAMSUNG_STORE_URL","ORIENTATION","WIN_METRIC","ICON_URL","GAMEPLAY_SCREENSHOT","MISSING_URL_TEXT","IOS","SAMSUNG","ANDROID","MISSING_URL","FIELD_NAMES","ICON","receiveCertificates","RECEIVE_CERTIFICATES","fetchNotificationCertificates","updateIosCertificate","p12","hasOverwriteIos","updateAndroidCertificate","androidRequest","fcm","overwrite","hasOverwriteAndroid","formAndroidRequest","notificationCertificate","RECEIVE_PREFIX","sendSSORequest","fetchSSOPrefix","checkSdkThemingFf","sdkThemingRevamp","COLOR","SAVED_THEMES","GRADIENT","GRADIENT_REPLACE","storeTheme","themeData","getBaseTheme","themeId","newFetch","oldFetch","receiveTheme","receiveGradientTheme","receiveThemeGradientToReplace","saveBaseTheme","themeName","uploadedImages","entry","practiceCurrencyString","currencyValues","postUrl","baseThemeId","emailCustomTheme","requestSync","syncThemeToProd","fetchSandboxTournaments","RECEIVE_SANDBOX_TOURNAMENTS","updateSandboxTournamentTemplateSet","setId","tournamentSet","players","backgroundImageUrl","presignedUrl","form_1","filename_1","fields_1","presigned_urls","fields","dateStr","chars","getAmzDate","cdn_base_url","encodeURI","addGameParameterToSet","gameplayParamKey","gameplayParamValue","deleteGameParameterFromSet","gameplayParamid","editGameParameterFromSet","gameplayParamId","fetchProductionTournamentSet","RECEIVE_PRODUCTION_TOURNAMENT_SET","fetchSandboxTournamentSet","RECEIVE_SANDBOX_TOURNAMENT_SET","fetchProductionTournaments","RECEIVE_PRODUCTION_TOURNAMENTS","deleteTournamentRule","REMOVE_TOURNAMENT_RULE","createTournamentRule","tournamentRuleParentId","tournament_rule","tournamentRuleParentType","RECEIVE_TOURNAMENT_RULE","updateTournamentRule","UPDATE_TOURNAMENT_RULE","saveTournament","tournamentId","sandbox_tournament_template","RECEIVE_SANDBOX_TOURNAMENT","receiveSandboxTournament","publishTournamentSet","PACKAGES_NAME","PACKAGES","TINY_PACKAGE","cashValue","SMALL_PACKAGE","MEDIUM_PACKAGE","LARGE_PACKAGE","XLARGE_PACKAGE","HUGE_PACKAGE","PACKAGES_ORDER","productId","CLEAR","fetchGamePerformanceStatus","receivePrizeEnablementRequest","fetchPrizeEnablementRequest","createPrizeEnablementRequest","createPrizeEnablementRequestZendeskTicket","prizeEnablementRequestId","receiveAccelerateApplication","RECEIVE_ACCELERATE_APPLICATION","fetchAccelerateApplication","updateAccelerateApplication","isWidgetClosed","createAccelerateApplication","applicationRequest","createAccelerateApplicationZendeskTicket","accelerateApplicationId","ABORT_RATE_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL","GAMES_PER_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL","SKILLZ_DAU_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL","DAY_7_RETENTION_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL","INSTALLS_TO_2Z_7_DAY_AVERAGE_PRIZE_ENABLEMENT_GOAL","SKILLZ_DAU_7_DAY_AVERAGE_SYNC_PRIZE_ENABLEMENT_GOAL","PRIZE_ENABLEMENT_STEPS_STATE","PRIZE_ENABLEMENT_LABEL_POSITION","SORTABLE_PRIZE_ENABLEMENT_ATTRIBUTE","PRIZE_ENABLEMENT_STEPS_COPY","GAMES_PER_DAU","DAY_7_RETENTION","INSTALLS_TO_2_Z","FAIR_PLAY","sortGamePerformanceStatusAttributes","complete","incomplete","gamesPerDau7DayAverage","day7Retention7DayAverage","installsTo1z7DayAverage","determineStepState","stepValue","goal","fairPlayState","renderPrizeEnablementAttributeCopy","attribute","dauGoal","gameplayFormat","renderSkillzDauCopy","alertIcon","renderPrizeEnablementAttributeIcon","PathIcon","prizeEnablementRevamp","grayCheckMark","errorIcon","giftIcon","giftShadedIcon","completeStepLineStyle","strokeWidth","strokeColor","inProgressStepLineStyle","strokeDasharray","paddingBottom","archerElementSteps","isComplete","isNextComplete","idx","relations","targetId","targetAnchor","sourceAnchor","positionHelper","ArcherElement","sortedGamePerformanceStatus","sortedAttributes","numberOfCompleteSteps","ArcherContainer","endShape","arrowLength","renderStep","step","renderGameStep","renderGiftStep","receiveSdkDownloadInfo","createSdkDownload","PUSH","storePushVerification","sendPush","verifyPush","pushCode","verifyId","getLearningCenterCategories","getLearningCenterCards","getGames","learningCenterCardStyles","backgroundRepeat","backgroundSize","learningCenterCardAspectRatio","LINEAR_BACKGROUND","WHATS_NEW_TITLE_COPY","profileIconWithInitials","userFirstName","userLastName","renderFirstInitialOrLast","defaultProfileIcon","defaultProfile","hasDefaultUserName","userNameItalics","renderStudioName","renderProfileIcon","renderUserName","renderProgressComplete","viewBox","fill","xmlns","d","SidebarTooltipWithStyles","minWidth","shouldShowTooltip","getIconColor","isVisited","currentHelpBitId","setIsVisited","setIsActive","SidebarTooltip","HexagonSvg","helpBits","shouldShowTooltips","useWindowDimensions","backgroundUrl","helpBit","SidebarLink","renderSidebarLinks","iconStyle","setIsLoading","isInView","setIsInView","helpBitsList","setHelpBitsList","setCurrentHelpBit","fetchHelpBitsChainRecursively","fetchedHelpBits","targetHelpBitId","targetHelpBit","Fade","mountOnEnter","unmountOnExit","Backdrop","WizardSidebar","Header","Content","Footer","InteractiveCard","isModalOpen","setIsModalOpen","cardStyle","isLessThanMd","useMediaQuery","breakpoints","down","shouldMaintainAspectRatio","renderCard","wrap","pr","WizardView","LinkCard","targetLink","descendingComparator","a","b","highestUtfCode","fromCodePoint","A","B","renderCardIcon","iconType","downloadFile","renderCardWithComponent","card","targetUrl","learningCenterCategory","Title","categoryId","sortBy","shouldCardsRetainAspectRatio","sortAndRenderWhatsNewCards","shouldShowProfileWidget","profileWidgetData","renderedCards","ProfileWidget","CMS_NOTIFICATIONS_ACTIONS","dismissed","viewed","interacted","mapKeys","k","logNotificationUserAction","notificationId","cmsNotification","notification","response_type","log","fetchCmsNotifications","isFtue","userRole","today","filters","qs","_where","_or","end_date_gte","end_date_null","is_ftue","is_ftue_null","user_role","start_date_lte","_sort","fetchNotifications","SignUpComponent","EMAIL_PASSWORD_ERROR","CardContainer","isHomePage","isDeveloperLandingPageOverhaulEnabled","developerLandingPageOverhaul","iosLogo","alt","androidLogo","unityLogo","isToastOpen","ContentProps","handleToastClose","handleInputChange","handleSubmit","renderToast","SurveyContext","openSurvey","useContext","surveyState","setSurveyState","getSurvey","targetType","getLatestSurveyResponse","FREEFORM_TEXT_PLACEHOLDER","NumericSelector","startLabel","endLabel","selectedOption","setSelectedOption","questionType","columns","numberOfOptions","times","optionValue","optionsStartFromZero","surveyQuestionId","SurveyTextInput","inputValue","setInputValue","onChangeFunc","setStateFunction","newAnswer","existingAnswerIndex","recordedAnswer","existingAnswers","allQuestions","errorMessages","isRequired","answer","SHOW_SURVEY","HIDE_SURVEY","RECEIVE_QUESTIONS","fetchValidQuestions","surveyResponse","responseId","download","isMultiline","rowsMax","maxRows","hasNoLabel","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","call","O","chunkIds","fn","priority","notFulfilled","fulfilled","j","r","getter","__esModule","getPrototypeOf","t","mode","ns","create","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","chunkId","promises","u","miniCssF","g","globalThis","Function","prop","prototype","l","done","script","needAttach","scripts","getElementsByTagName","charset","nc","setAttribute","onScriptComplete","onerror","doneFns","parentNode","removeChild","head","Symbol","toStringTag","nmd","paths","fullhref","existingLinkTags","dataHref","tag","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}