{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/routes/Home/StatIcon.tsx","webpack:///./src/shared/Indicator.tsx","webpack:///./src/routes/Home/Login.tsx","webpack:///./src/routes/Home/Signup.tsx","webpack:///./src/routes/Home/SignupWizard.tsx","webpack:///./src/shared/AgreeToTermsAndConditions.tsx","webpack:///./src/routes/Home/ForgotPassword.tsx","webpack:///./src/routes/Home/PasswordReset.tsx","webpack:///./src/shared/Overlay.tsx","webpack:///./src/routes/Home/Join.tsx","webpack:///./src/shared/ErrorCompetitionVerification.tsx","webpack:///./src/shared/ErrorUserJoin.tsx","webpack:///./src/shared/Toast.tsx","webpack:///./src/routes/About/index.tsx","webpack:///./src/routes/Faq/index.tsx","webpack:///./src/routes/Blog/index.tsx","webpack:///./src/shared/BlogEntryPreview.tsx","webpack:///./src/routes/Share/index.tsx","webpack:///./src/routes/Missing.tsx","webpack:///./src/routes/Entity/index.tsx","webpack:///./src/routes/Entity/EntityStats.tsx","webpack:///./src/routes/Entity/Scoreboard.tsx","webpack:///./src/routes/Pledge/index.tsx","webpack:///./src/routes/Pledge/CompetitionEntityPledges.tsx","webpack:///./src/routes/Pledge/CompetitionEntityPledge.tsx","webpack:///./src/routes/Pledge/CompetitionEntityPledgeForm.tsx","webpack:///./src/routes/Pledge/PledgeStats.tsx","webpack:///./src/routes/User/index.tsx","webpack:///./src/routes/Account/index.tsx","webpack:///./src/routes/Account/UserUpdate.tsx","webpack:///./src/routes/Account/ConfirmModal.tsx","webpack:///./src/routes/Account/ConfirmDeleteModal.tsx","webpack:///./src/routes/Account/UserEmailForm.tsx","webpack:///./src/routes/StoryPage.tsx","webpack:///./src/routes/TeamsNew/index.tsx","webpack:///./src/shared/SocialLinksForm.tsx","webpack:///./src/routes/EntityEdit/index.tsx","webpack:///./src/routes/Teams/index.tsx","webpack:///./src/routes/EntityBlog/index.tsx","webpack:///./src/routes/BlogEntry/index.tsx","webpack:///./src/routes/BlogEntryEdit/index.tsx","webpack:///./src/routes/BlogEntryNew/index.tsx","webpack:///./src/routes/Pledges/index.tsx","webpack:///./src/shared/PledgesTableHelp.tsx","webpack:///./src/routes/PledgeCategory/index.tsx","webpack:///./src/routes/Calculator/index.tsx","webpack:///./src/routes/CompetitionTopUserScores.tsx","webpack:///./src/shared/TopUserScores/CompetitionUserScoreRow.tsx","webpack:///./src/shared/Paginator.tsx","webpack:///./src/routes/EntityTopUserScores.tsx","webpack:///./src/routes/Survey.tsx","webpack:///./src/routes/MissingCompetition.tsx","webpack:///./src/routes/GlobalAbout/index.tsx","webpack:///./src/routes/GlobalAbout/CompetitionAboutText.tsx","webpack:///./src/utils/environment.ts","webpack:///./src/utils/uuid.ts","webpack:///./src/shared/ExternalLink.tsx","webpack:///./src/shared/RouteLink.tsx","webpack:///./src/utils/routerHelper.ts","webpack:///./src/redux/actions/story.ts","webpack:///./src/redux/actions/image.ts","webpack:///./src/shared/SafeHtml.tsx","webpack:///./src/shared/EntityEmailDomains.tsx","webpack:///./src/redux/selectors/index.ts","webpack:///./src/shared/Stories.tsx","webpack:///./src/shared/ImageUploader/ImageUploader.tsx","webpack:///./src/shared/MarkdownEditor.tsx","webpack:///./src/redux/actions/index.ts","webpack:///./src/utils/i18nextShim.ts","webpack:///./src/utils/userApiHelper.ts","webpack:///./src/userApi/index.ts","webpack:///./src/redux/actions/errors.ts","webpack:///./src/utils/image.ts","webpack:///./src/redux/actions/score.ts","webpack:///./src/utils/intercom.ts","webpack:///./src/shared/ProfilePhoto.tsx","webpack:///./src/shared/ScoreboardTeams.tsx","webpack:///./src/shared/ScoreboardParticipants.tsx","webpack:///./src/utils/strings.ts","webpack:///./src/shared/ConfirmDeleteModal.tsx","webpack:///./src/routes/Home/index.tsx","webpack:///./src/routes/About/CompetitionAboutText.tsx","webpack:///./src/utils/wrappers/asPage.ts","webpack:///./src/utils/styles.ts","webpack:///./src/redux/actions/patch.ts","webpack:///./src/redux/middleware/storage.ts","webpack:///./src/redux/actions/initialize.ts","webpack:///./src/redux/selectors/competition.ts","webpack:///./src/redux/state.ts","webpack:///./src/utils/logger.ts","webpack:///./src/redux/actions/handleUnexpectedError.ts","webpack:///./src/utils/googleAnalytics.ts","webpack:///./src/redux/actions/userEmail.ts","webpack:///./src/utils/forms/socialLinks.ts","webpack:///./src/utils/sleep.ts","webpack:///./src/shared/UserHeader.tsx","webpack:///./src/shared/UserStats.tsx","webpack:///./src/shared/UserScoreLevel.tsx","webpack:///./src/shared/Scoreboard.tsx","webpack:///./src/redux/actions/toast.ts","webpack:///./src/shared/StoryComponent.tsx","webpack:///./src/shared/StoryForm.tsx","webpack:///./src/redux/imageStore.ts","webpack:///./src/shared/OpenGraphCarousel.tsx","webpack:///./src/shared/StoryPoints.tsx","webpack:///./src/shared/Page.tsx","webpack:///./src/shared/NavBar.tsx","webpack:///./src/utils/forms/index.ts","webpack:///./src/shared/Radio.tsx","webpack:///./src/shared/Checkbox.tsx","webpack:///./src/shared/Errors.tsx","webpack:///./src/shared/BlogEntries.tsx","webpack:///./src/shared/EntityIdentity.tsx","webpack:///./src/shared/SocialLinksBtnGroup.tsx","webpack:///./src/shared/SafeHTMLPageContent.tsx","webpack:///./src/shared/EntityForm.tsx","webpack:///./src/shared/BlogEntryForm.tsx","webpack:///./src/shared/PledgesTable.tsx","webpack:///./src/shared/TopUserScores/index.tsx","webpack:///./src/shared/WaitingPage.tsx","webpack:///./src/index.tsx","webpack:///./src/utils/validations.ts","webpack:///./src/redux/index.ts","webpack:///./src/redux/middleware/index.ts","webpack:///./src/redux/middleware/crashReporter.ts","webpack:///./src/utils/lodashQueryString.ts","webpack:///./src/redux/selectors/auth.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/redux/selectors/userApi.ts","webpack:///./src/userApi/api.ts","webpack:///./src/userApi/configuration.ts","webpack:///./src/userApi/errors.ts","webpack:///./src/redux/selectors/entities.ts","webpack:///./src/utils/joinAnd.ts","webpack:///./src/redux/selectors/pledges.ts","webpack:///./src/redux/selectors/scores.ts","webpack:///./src/redux/selectors/user.ts","webpack:///./src/redux/selectors/comment.ts","webpack:///./src/redux/selectors/search.ts","webpack:///./src/redux/selectors/stories.ts","webpack:///./src/utils/forms/login.ts","webpack:///./src/utils/forms/form.ts","webpack:///./src/shared/LinkButton.tsx","webpack:///./src/utils/forms/signup.ts","webpack:///./src/utils/forms/userEmail.ts","webpack:///./src/utils/forms/forgotPassword.ts","webpack:///./src/utils/forms/passwordReset.ts","webpack:///./src/utils/forms/userUpdate.ts","webpack:///./src/utils/forms/inviteAFriend.ts","webpack:///./src/utils/forms/entity.ts","webpack:///./src/utils/forms/blogEntry.ts","webpack:///./src/utils/forms/join.ts","webpack:///./src/redux/actions/auth.ts","webpack:///./src/redux/actions/landingPage.ts","webpack:///./src/redux/actions/modal.ts","webpack:///./src/redux/actions/comment.ts","webpack:///./src/redux/actions/forgotPassword.ts","webpack:///./src/redux/actions/passwordReset.ts","webpack:///./src/redux/actions/entity.ts","webpack:///./src/redux/actions/pledge.ts","webpack:///./src/redux/actions/user.ts","webpack:///./src/redux/actions/userUpdate.ts","webpack:///./src/redux/actions/search.ts","webpack:///./src/redux/actions/inviteAFriend.ts","webpack:///./src/redux/actions/entityForms.ts","webpack:///./src/redux/actions/blogEntry.ts","webpack:///./src/redux/actions/competitionEntityPledge.ts","webpack:///./src/redux/actions/calculator.ts","webpack:///./src/redux/actions/topCompetitionUserScores.ts","webpack:///./src/redux/actions/survey.ts","webpack:///./src/redux/actions/openGraph.ts","webpack:///./src/routes/index.tsx","webpack:///./src/routes/Dashboard/index.tsx","webpack:///./src/utils/wrappers/withLocalization.ts","webpack:///./src/utils/wrappers/withRouterAndHelpers.ts","webpack:///./src/shared/ProgressBar.tsx","webpack:///./src/shared/ScoreLevelModal.tsx","webpack:///./src/utils/withPreventDefault.ts","webpack:///./src/shared/ScoreboardCampuses.tsx","webpack:///./src/redux/actions/types.ts","webpack:///./src/shared/Comment.tsx","webpack:///./src/shared/CommentPrompt.tsx","webpack:///./src/shared/StoryEditor.tsx","webpack:///./src/shared/Dropdown.tsx","webpack:///./src/shared/ImageUploader/ImageUploadTrigger.tsx","webpack:///./src/shared/ImageUploader/ImageInput.tsx","webpack:///./src/shared/ImageUploader/ImageEditor.tsx","webpack:///./src/shared/Footer.tsx","webpack:///./src/shared/ImageUploader/FormTextAspectRatio.tsx","webpack:///./src/shared/Search.tsx","webpack:///./src/shared/SearchResults.tsx","webpack:///./src/shared/StoryTaggedUsers.tsx","webpack:///./src/shared/displayContent.tsx","webpack:///./src/shared/StoryControl.tsx","webpack:///./src/shared/StoryCreator.tsx","webpack:///./src/shared/UserIneligibleForPledge.tsx","webpack:///./src/shared/PledgeCarousel.tsx","webpack:///./src/routes/Dashboard/EarnMorePoints.tsx","webpack:///./src/routes/Dashboard/InviteAFriend.tsx","webpack:///./src/shared/NavBarDropdown.tsx","webpack:///./src/routes/Home/AuthButtons.tsx","webpack:///./src/redux/actions/all.ts","webpack:///./src/utils/markdown.ts","webpack:///./src/utils/wrappers/index.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","StatType","compose","withLocalization","statType","statLine","formatNumber","over","perParticipant","className","style","width","alt","src","srcSet","Math","max","dangerouslySetInnerHTML","__html","textTransform","fontSize","margin","lineHeight","active","vertical","containerStyle","height","fill","display","justifyContent","alignItems","flexDirection","times","map","border","borderRadius","backgroundColor","initialState","form","email","password","errors","dirty","submitted","state","componentWillReceiveProps","nextProps","this","props","validationErrors","makeLoginErrors","setState","update","validate","markDirty","field","patch","ve","loginVEMessages","removeVEForField","loginVE","constant","login","isEmpty","render","id","FormGroup","Label","Input","invalid","Boolean","type","onBlur","onChange","e","trim","target","toLowerCase","FormFeedback","Button","onClick","route","Routes","ForgotPassword","Signup","React","Component","connect","_props","dispatch","bindActionCreators","Login","UserType","Student","options","confirmPassword","agreedToTermsAndConditions","isWizardOpen","signupWizardStep","stateToSignupForm","user","makeSignupErrors","signupVEMessages","signupVE","completeRegistration","submit","signup","openEntityEmailDomainModal","canSetHealthSystemsEmployee","isSignupPasswordValid","FormText","text","firstName","lastName","valid","autoComplete","signupState","selectors","healthFacilityEntities","some","entity","someMatchingEmailDomain","permittedDomains","setModal","Modals","EntityEmailDomains","previous","next","items","CarouselItem","role","toString","checked","userType","userTypeFromString","Faculty","Staff","outline","size","color","isLabUser","disabled","has","isHealthFacilityEmployee","Date","toISOString","Modal","isOpen","onClosed","toggle","ModalHeader","ModalBody","Carousel","interval","activeIndex","rel","href","makeForgotPasswordErrors","forgotPasswordVEMessages","forgotPasswordVE","postPasswordResetRequest","block","_ownProps","makePasswordResetErrors","putPasswordResetRequest","hasPasswordResetToken","Alert","level","StyleState","Danger","Link","to","initialQuery","passwordResetToken","PasswordReset","children","onLogout","event","preventDefault","logout","makeJoinErrors","join","competition","joinVE","Join","makeUserEmailErrors","userEmailVEMessages","userEmailVE","postUserEmail","competitionEmailVerificationSent","getAccountVerification","userEmailPermittedByCompetition","ErrorCompetitionVerification","ErrorUserJoin","toast","closeToast","on","title","message","asPage","withRouter","_state","section","getFaqParams","history","location","i18n","Nav","tabs","NavItem","NavLink","FaqSection","General","makeFaqPath","TabContent","activeTab","TabPane","tabId","componentWillMount","initializeBlogPage","initializingBlogPage","WaitingPageContent","showEntity","pendingRoute","Blog","BlogPage","ownProps","entities","blogEntry","entityID","competitionID","photo","makeBlogEntryPath","textOnly","limit","contentHTML","ShareItem","content","img","download","MobileSection","confirmDelete","mobileSection","INFO","initializeEntityPage","didEntityIDUpdate","delete","deleteTeam","initializingEntityPage","canJoin","joinTeam","hasCompetitionEnded","membershipLevel","deleteEntityMembership","membership","bannerPhoto","cc__entity__with_banner","cc__entity__no_banner","Entity","TypeEnum","HealthFacility","socialLinks","ButtonGroup","MembershipLevel","Member","Team","Admin","makeEntityEditPath","Superadmin","University","entityCanBlog","makeEntityBlogPath","getActiveClass","descriptionHTML","SCOREBOARD","ACTIVITY","getActiveTextClass","selectSection","index","requiresCompetitionStart","requiresCompetitionVerification","isGrey","currentEntity","getEntityParams","userMemberships","canJoinCurrentEntity","EntityPage","competitionEntity","competitionEntities","competitionEntityScore","entityScore","rank","entityRank","points","pledgeCount","savingsCO2Lbs","ScoreboardView","scoreboardView","Participants","topSubEntityScores","topUserScores","Teams","teamScores","viewAll","makeCompetitionUserScoresForEntityPath","userScores","entityTopSubentityScores","entityTopUserScores","Scoreboard","initializePledgePage","pledge","pledgeID","isNaN","didPledgeIDUpdate","pledgeCategory","lastUsersToVerify","initializingPledgePage","pointsAvailable","completions","pointsEarned","shortTitle","makePledgeCategoryPath","description","assumptions","learnMoreLinks","someDescriptionContent","learnMoreLink","showRank","WaitingWhiteBox","showPrompt","uuid","CompetitionPledges","TakeSurvey","Pledge","getPledgeParams","competitionPledgeID","currentPledge","userPledgeCompletions","userPledgePoints","estimatePointsAvailable","currentPledgeCategory","getEntitiesWithCompetitionEntityPledges","PledgePage","competitionEntityPledges","values","filter","isAtLeastAcceptedAdmin","makeNewCompetitionEntityPledge","competitionEntityPledge","getCompetitionEntityPledge","isEntityAdmin","editing","editingCompetitionEntityPledgeEntityID","edit","contentMD","save","destroy","cancel","markdown","cep","saveCompetitionEntityPledge","destroyCompetitionEntityPledge","CompetitionEntityPledgeForm","repeats","ACCOUNT","initializeUserPage","userID","didUserIDUpdate","university","healthFacility","team","score","universityRank","pledgeCompletions","scoreLevel","nextScoreLevel","initializingUserProfile","highlightAHero","highlightable","STATS","footprint","takenCO2Lbs","userUniversityRank","STORIES","getSrc","getSrcSet","image","selected","User","getUserParams","profileUser","acceptedUniversity","acceptedHealthFacility","acceptedTeam","competitionUserScores","getScoreLevel","getNextScoreLevel","profileTotalPledges","highlightHero","UserProfile","raw","paths","makePathnames","activable","Account","Email","Switch","Route","path","component","exact","fileInputID","newPassword","undefined","confirmNewPassword","userReadToWrite","profilePhoto","makeUserUpdateErrors","savedUserUpdateID","clear","userUpdateVEMessages","UserUpdatePassword","toggleChangePassword","changingPassword","putUser","removeUserUpdateVE","removeUserDeleteVE","closeModal","modal","deleteUser","isUsersDeletePasswordIncorrect","isNewPasswordValid","validatePassword","currentImage","readyPhotoClassName","aspectRatio","onDelete","cursor","Collapse","padding","marginBottom","UserDeletePassword","show","close","confirm","error","isPasswordInvalid","userUpdateVE","userDeleteVE","matchesErrorCode","ValidationError","CodeEnum","ErrPasswordIncorrect","UserUpdate","ModalFooter","canDelete","userEmail","onlyVerifiedCompetitionUserEmail","canResendVerification","moment","verificationSentAt","add","duration","isBefore","userEmails","newUserEmailSave","deleteUserEmail","makePrimaryUserEmail","Table","verified","UserEmailForm","initializeStoryPage","story","creator","deleteStory","closeConfirmStoryDelete","canUseMarkdown","date","createdAt","ConfirmStoryDelete","storyID","getStoryParams","stories","find","taggedUsers","competitionPledges","users","createdBy","makeStoryTitle","StoryPage","newTeam","initialize","initializing","parentID","requiresUniversity","TeamsNew","userUniversity","initializeTeamsNewPage","TeamsNewPage","SocialLinkAddOn","icon","InputGroupAddon","addonType","processSocialLinks","textAlign","InputGroup","website","placeholder","medium","facebook","twitter","linkedin","instagram","SocialLinksForm","authenticated","BlogEntryEdit","getEntityEditParams","initializeEntityEditPage","EntityEditPage","initializeTeamsPage","makeEntityPath","makeSimpleRoutePath","ErrorNoTeamsForUniversity","teamScoresForUserUniversity","userTeam","TeamsPage","initializeEntityBlogPage","Container","PageContentWithBanner","PageContent","containerProps","bannerURL","atLeastSuperadmin","makeBlogEntryNewPath","params","getEntityBlogParams","EntityBlogPage","componentDidMount","initializeBlogEntryPage","blogEntryID","didBlogEntryIDChange","initializingBlogEntryPage","previousURL","allURL","nextURL","deleteBlogEntry","onEdit","atLeastAdmin","makeBlogEntryEditPath","showControls","getBlogEntryParams","blogEntries","blogEntryIndex","findIndex","be","previousEntry","nextEntry","blogEntryQuery","BlogEntry","BlogEntryPage","initializeBlogEntryForm","getBlogEntryEditParams","BlogEntryEditPage","BlogEntryNew","getBlogEntryNewParams","BlogEntryNewPage","initializePledgesPage","competitionPledgeCategoryID","PledgeCategoryPage","initializePledgeCategoryPage","pledgeCategoryID","getPledgeCategoryParams","isCalculatorReady","availablePoints","widget","maxWait","Promise","resolve","fail","Widget","start","now","wait","setInterval","clearInterval","Error","createCalculatorPledgePoints","updateFootprint","container_id","source","campaign","hideUserPlatform","url","callbacks","allPagesVisited","ev","token","isProduction","componentWillUnmount","calculatorAvailablePoints","CalculatorPage","term","initializeTopUserScoresPage","CompetitionUserScores","CompetitionTopUserScores","campus","campusID","makeUserPath","displayFullName","inputPage","hasInputDebounce","debounceShowPage","inputDebounce","clearTimeout","setTimeout","showPage","page","parseInt","setInputPage","valueI","replace","totalPages","spannedPages","Pagination","PaginationItem","PaginationLink","first","last","InputGroupText","Spinner","topCompetitionUserScoreQuery","pagination","min","range","Paginator","didEntityIDChange","getCompetitionUserScoresForEntityParams","CompetitionUserScoresForEntity","EntityTopUserScores","iframe","createRef","initializeSurveyPage","messageReceive","origin","search","host","qualtricsID","createSurveyStory","addEventListener","removeEventListener","ref","qualtricsSurveyURL","Survey","competitionUser","isDevelopment","hostname","isStaging","isIOS","navigator","platform","test","config","FORCE_REPORT_TO_SENTRY","SENTRY_PUBLIC_DSN","SENTRY_RELEASE","SUPPORT_EMAIL","dt","getTime","random","floor","trackEvent","withRouterAndHelpers","currentRoute","linkProps","inactive","translate","Dashboard","About","Faq","Share","Calculator","EntityEdit","EntityBlog","Pledges","PledgeCategory","Story","GlobalAbout","localStorage","competitionName","makePledgePath","TakeCalculator","InviteAFriend","makePledgePathLiteral","translationFunction","makeStoryPath","makeCompetitionUserScoresPath","getParams","getFixedT","language","matchingPath","matchPath","pathname","strict","Number","getCompetitionNameParams","console","log","indexOf","getCurrentRoute","pathnames","NotFound","goToRouteByName","h","openConfirmStoryDelete","getState","storyToDelete","None","toggleStoryLike","storyLikes","likes","storyIndex","storiesUpdate","api","userApi","postLike","deleteLike","updateIn","handleUnexpectedError","toggleStoryFlag","storyFlags","flags","postFlag","flag","deleteFlag","pageStoriesThrottle","throttle","storyPagination","storyQuery","storyTerm","getCompetitionStories","nextPage","res","reduce","newStories","ActionType","GetCompetitionStories","setStoryQuery","_getState","defaultState","storyComments","storyCommentPagination","storyCommentsFlags","storyCommentsLikes","SetStoryQuery","postCompetitionStories","newStory","taggedUserIDs","savedStoryFormID","extra","getImage","spinner","postImage","imageResponse","converter","makeHtml","storyTaggedUserIDs","0","latestToPledge","addUserPoints","err","Success","editStory","editingStoryID","cancelStoryEdit","HighlightAHero","clearNewStoryTaggedUserIDs","putStory","storyForm","links","locationQualifier","_extra","reject","clearPostedImage","inputID","postedImages","omitBy","_value","k","imageID","delImage","dataURLFromFile","dataURLToBlob","blob","formData","FormData","append","filename","basePath","userApiBasePath","postFormData","imgResponse","postImageMutation","mutation","JSON","stringify","body","headers","Authorization","Accept","contentType","mimeType","method","fetch","response","blob2","blobToDataURL","dataURL","setDataURLDimensions","getExtensionForMimeType","newDataURL","Warning","safeContentHTML","filterHTML","html","div","document","createElement","innerHTML","textContent","innerText","SafeHTML","competitionEntityScores","searched","pageStories","eligible","Info","InfiniteScroll","pageStart","loadMore","hasMore","loader","threshold","isUserEligibleForStoryQueryPledge","StoriesComponent","open","getElementById","click","clearDataURL","actualProps","postedImage","wasImagePostedOrCleared","clearFileInput","setEditedDataURLFromFile","setImage","readyImage","imageMutationToServerIM","ImageMutation","ContentTypeEnum","Png","prompt","photoClassName","anyImage","newFile","controls","idealRatio","withImages","ImageUploader","preview","textAreaProps","selectedTab","onTabChange","generateMarkdownPreview","MarkdownEditor","pick","actions","templateSettings","interpolate","keys","template","shim","_language","_namespace","i18nextContext","createContext","isValidationErrors","Array","validationError","code","isResponse","json","Function","getValidationErrors","clone","payload","getScoreLevelColor","getScoreLevelPhoto","compact","commentableTypeToString","commentableType","Comment","CommentableTypeEnum","LocationQualifierEnum","toLocationQualifierEnum","Home","Work","Both","Empty","StatusEnum","toStoryStatusEnum","AlreadyDo","New","status","makeCampusHeroTitle","userNames","joinAnd","displayUserType","displayCompetitionPledgeUserType","CompetitionPledgeUserType","Labs","userTypeS","pointsPerPhoto","pointsPerStoryRepeat","calculatePointsForNextStory","repeatPoints","totalPointsAvailable","domain","split","isUserScoreEligibleForPledge","scoreLevels","scoreLevelUUID","thresholdLevel","isUserTypeEligibleForPledge","userTypes","isDateEligibleForPledge","releaseWeek","startsAt","savingsCO2LbsToCars","pow","maxImageSizeBytes","roundTo","decimals","round","maxMB","hex","crop","x","pixelCrop","y","imageWidth","imageHeight","imageFullWidth","naturalWidth","imageFullHeight","naturalHeight","rotation","bgColor","exec","g","b","a","setError","SetError","input","applyRotation","canvas","degrees","invertDimensions","clearCanvas","context","getContext","rotate","PI","Image","onload","drawImage","restore","updatedDataURLFromFile","toDataURL","onerror","applyBackgroundColor","ctx","fillStyle","fillRect","applyCrop","setTransform","clearRect","getDataURLFromFileInput","file","files","FileReader","ArrayBuffer","String","fromCharCode","Uint16Array","readAsDataURL","ErrCouldNotCompressFile","byteString","atob","ab","ia","Uint8Array","charCodeAt","Blob","reader","onabort","dataURLBytes","isJPG","addPointsToScore","savingsWaterOz","savingsGasGallons","savingsElectricityKwh","dismissStoryPointsModal","lastPointsEarned","carbon","competitionScore","competitionUserScore","completionUpdates","pledgePointsUpdates","lastPointsCanEarnMore","StoryPoints","acceptedCompetitionEntityMemberships","forEach","entityType","ces","openIntercom","Intercom","intercom","op","app_id","user_id","created_at","campus_id","campus_name","getItem","deleteIntercomCookie","setItem","warn","cookie","rounded","outerStyle","imgProps","cc__rounded","ConnectedTeamScore","abbreviation","teamScore","ConnectedUserScore","someUser","userScore","orJoin","strings","urlRegExpS","urlRegExpSearch","RegExp","urlRegExp","localURLRegExpS","localURLRegExpSearch","localURLRegExp","hasURL","isURL","getURLs","externalMatches","match","localMatches","concat","PageScrollerComponent","backgroundImage","backgroundSet","sliders","Carbon","Cars","participants","pledgesCompleted","zIndex","marginTop","scrollToLoginForm","cmpnt0","querySelector","scrollIntoView","behavior","landingPagePosition","canViewCompetitionContent","hasJoined","isLoggedIn","setLandingPagePosition","setLandingPagePostion","readOnly","animationTimer","containerWidth","containerHeight","pageOnChange","oneBasedPosition","Patch","parseLocalStorageState","stateString","parse","_err","saveLocalStorageThrottle","store","savableState","action","indexPledgeIDsByUUID","pledges","initialized","Initialize","verificationToken","postAccountVerification","sleep","mockCompetition","getMe","userDashboard","newState","competitionPledgeIDsByUUID","initializedState","setAnalyticsAttributes","configure","getCompetitionDashboard","competitionDashboard","loggedInState","handleUserApiError","reinitializeDashboardIfNecessary","every","competitionStoryQuery","setAttribute","hasCompetitionStarted","endsAt","competitionDescription","UiErrorType","URLSearchParams","lodashQueryString","savedCommentPromptID","savedInviteAFriendFormID","inviteAFriendVE","searchResults","isSearching","topCompetitionUserScores","pageSize","assign","reportToSentry","silenceAlerts","sentryEnvironment","init","dsn","environment","getMappedStack","done","stack","mapStackTrace","logger","debug","arg","mappedStack","configureScope","scope","setExtra","captureException","alertInfo","alert","info","setUser","genericErrorToast","toastData","logUnexpectedResponse","fnValidationErrors","waitForGoogleAnalytics","ga","category","label","verifyingCompeition","userEmailIndex","ue","format","mustVerifyCompetition","someMessageForValidationErrors","putUserEmail","primary","currentPrimaryI","hasHttp","processed","validateSocialLinks","isValidURL","ms","_reject","linkToProfile","percentToNextLevel","openScoreLevelModal","withPreventDefault","CompetitionScoreLevels","nextLevel","labels","percent","topTeamScores","Campuses","competitionTopUserScores","closedToast","persistent","StoryContent","StoryTitle","toggleLike","toggleFlag","liked","flagged","comments","userCompletionsLTPledgeRepeats","isVerifiedCompetitionUser","isCreator","isUserEligibleForPledge","fromNow","imgParts","isVideo","competitionUserPointID","comment","commentableID","storyCreator","StoryComponent","parsedLinks","hasBeenParsed","parseURLs","debounce","_parseURLs","postedPhoto","storyFormID","storyFormSaved","tagUser","untagUser","updateContent","parseOpenGraph","urls","newURLs","openGraphLinks","ogl","_validate","deletePhoto","onSave","pointsForNextStory","storyPrompt","canTagUsers","removeUserTag","onSelect","qualifyLocation","currentValue","displayValues","marginRight","StoryForm","imageStore","imageIDs","otherProps","images","link","autoPlay","CarouselControl","direction","directionText","onClickHandler","OpenGraphCarousel","pledgePoints","photoPoints","ErrorNotification","PageError","errorNotification","Unexpected","ErrorUnexpected","Auth","ErrorAuth","UniversityVerification","ErrorUniversityMembership","UserHasntJoin","CompetitionVerification","CompetitionHasntStarted","ErrorCompetitionHasntStarted","hasError","getDerivedStateFromError","_error","componentDidCatch","hasBanner","cc__grey_bg","isCompetitionUser","isUniversitySuperadmin","Page","buttonStyle","loggedIn","inputProps","blogEntryPagination","pageBlogEntries","element","socialLink","position","left","maxWidth","URL","isConfirmingDelete","SafeHTMLPageContent","descriptionMD","publicJoin","editingSocial","photoInputID","bannerInputID","wasPhotoUploaded","postedBanner","wasBannerUploaded","makeEntityErrors","validationUpdate","banner","saveEntity","EntityFormComponent","makeBlogEntryErrors","saveBlogEntry","BlogEntryFormComponent","helpIsOpen","pledgesByLevel","categories","userIsSomeUniversityAdmin","colSpan","pledgesByCategoryAndLevel","competitions","competitionPledgeCategories","PledgesTable","sort","desc","changeSort","newKey","pageTopUserScores","paginate","cus","TopUserScores","createBrowserHistory","createCompetitionStore","RouteChange","listen","_action","Provider","validator","Ajv","allErrors","addKeyword","compile","datum","passwordSchema","minLength","maxLength","makeErrorMessage","dataPath","isValidationReady","devToolsExtension","__REDUX_DEVTOOLS_EXTENSION__","reducer","profilePledgeCompletions","profileMemberships","profileEntityRanks","middleware","storage","crashReporter","withExtraArgument","createStore","applyMiddleware","default","_store","FRONTEND","webpackContext","req","webpackContextResolve","userApiBase","protocol","defaultBasePath","configuration","Configuration","apiKey","DefaultApi","BASE_PATH","COLLECTION_FORMATS","csv","ssv","tsv","pipes","BaseAPI","msg","RequiredError","Body14","LevelEnum","Body15","CompetitionPledge","UiLocationEnum","CompetitionUserPoint","EntityMembership","DefaultApiFetchParamCreator","deleteComment","commentID","localVarPath","encodeURIComponent","localVarUrlObj","localVarRequestOptions","localVarHeaderParameter","localVarApiKeyValue","query","deleteCompetitionEntity","deleteCompetitionEntityPledge","competitionEntityPledgeID","deleteEntityBlogEntry","membershipID","flaggableID","flaggableType","localVarQueryParameter","likableID","likableType","deleteSession","userEmailID","getBlogEntries","authorization","getCalculatorAnswers","getCalculatorResultLeaders","order","city","zipcode","country","inputIncome","inputSize","includeSeedUsers","getComments","getCompetitionEntities","getCompetitionEntity","getCompetitionPledge","getCompetitionUser","getCompetitionUserScores","getCompetitionUsers","getGenerate","number","include","userPledgeDomain","getStatus","checks","getSwagger","pat","getUser","getUserPledges","needsSerialization","postComments","postCompetitionEntities","postCompetitionEntityMemberships","postCompetitionEntityPledges","postCompetitionPledgePoints","postEntityBlogEntries","postEntityMembershipLevel","postEntityMembershipStatus","postEntityOwner","localVarFormParams","set","postInvite","postJoin","postOpenGraph","postQualtricsID","postSession","postTokens","postUserCompetitionFootprint","competitionId","postUserDelete","postUsers","putCalculatorAnswers","putComment","putCompetitionEntity","putCompetitionEntityPledge","putEntityBlogEntry","DefaultApiFp","localVarFetchArgs","then","DefaultApiFactory","param","username","accessToken","validationErrorExists","matchesErrorCodeString","getValidationErrorMessage","messages","relevantCodes","foundCode","flatMap","fieldCodeMessages","userEntityOfType","Accepted","userHealthFacility","acceptedEntityOfType","entitiesOfType","userRankForEntityType","userEntityRanks","userHealthFacilityRank","entityScores","isAtLeastAcceptedSuperadmin","scoreIndex","universityParticipationRank","campuses","participationIndex","e1","e2","population1","population","memberCt1","memberCount","pctParticipation1","population2","memberCt2","healthFacilityRank","userTotalPledges","sortPledgesByRemainingPoints","pledge1","pledge2","carouselPledges","filteredPledges","uiLocation","Primary","filterPledgesByAvailablePointsLeft","competitionScoreLevels","sortedPledges","findPledgeByUUID","getMembershipsCompetitionEntityPledges","defaultCalculatorPoints","_scoreLevel","userScoreLevel","nextUserScoreLevel","pointsToNext","primaryUserEmail","verifiedCompetitionUserEmails","hasEmailPermittedByCompetition","isHealthSystemsEmployee","required","profileID","commentCreator","validation","properties","ErrEmailNotFound","loginForm","errorMessages","validationReady","pickBy","ErrEmailNonUnique","signupForm","passwordError","ErrUserEmailExists","emailVEMsg","forgotPasswordForm","passwordResetForm","_validationErrors","confirmPasswordError","userUpdateForm","newPasswordError","inviteAFriendValidation","makeInviteAFriendErrors","joinVEMessages","ErrIllegalMembershipJoin","updateIntercom","dashboard","invitationToken","signedupState","_dispatch","reload","SetLandingPagePosition","commentForm","commentPromptID","existingComments","blogEntryComments","deleteStoryComment","ErrTokenExpired","ErrTokenInvalidJTI","entityStoryQuery","pr","entityMembership","entityMembershipID","userUpdate","_v","_entityID","teamName","InitializeProfilePage","userUpdateID","initializeSearchResults","clearSearchResults","removeInviteAFriendVE","inviteAFriendForm","formID","entityForm","omit","newEntity","entityParams","blogEntryForm","entityName","postEntityBlogEntry","savedBlogEntry","putBlogEntry","blogEntryToDelete","initializeBlogEntries","newQuery","isEqual","setBlogEntryQuery","blogEntryCommentPagination","blogEntryCommentsFlags","blogEntryCommentsLikes","blogEntryLikes","SetBlogEntryQuery","_page","GetBlogEntries","_cep","topUserScoresQuery","surveyPledge","waitUntilPledgePageInitialized","getHomeComponent","homePaths","acctPaths","Router","Redirect","from","fauxT","namespace","exclude","Consumer","localizationComponent","places","toLocaleString","pushRoute","flex","reverse","fn","ConnectedCampusScore","campusScores","showMore","CommentComponent","commentSaved","CommentPrompt","displayDict","ButtonDropdown","DropdownToggle","caret","DropdownMenu","DropdownItem","Dropdown","accept","ImageInput","processedDataURL","getDefaultPixelCrop","setMutationD","setMutation","initializeDataURLFromFile","mutatedImage","cutCrop","cropElement","imageRef","ReactCrop","onImageLoad","newCrop","ImageEditor","Separator","ratio","showResults","uniqueId","initializeResults","clearResults","didSearchResultsReturn","select","updateInput","Popover","placement","PopoverBody","Search","results","ListGroup","ListGroupItem","Badge","reduction","parts","remainder","stringsToJSX","elem","tooltipOpen","copyLink","execCommand","copyPermalink","Tooltip","trigger","StoryControls","ut","pointsToNextLevel","UserIneligibleForPledge","PledgeCarousel","didFormSave","_e","InviteAFriendPledge","isMobileOpen","openDropdown","openMobileDropdown","borderLeft","borderRight","borderBottom","ReactMde","frag","createDocumentFragment","appendChild","querySelectorAll","xss","FilterXSS","process","firstElementChild","filterHTMLExt","_converter","_options","showdown","extension","Converter","tables","simplifiedAutoLink","strikethrough","tasklists","extensions"],"mappings":"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","file":"assets/main.8f8b1ab98fdad43ef8c9.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([502,3]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { withLocalization, LProps } from '../../utils/wrappers';\n\nexport enum StatType {\n Participants = 'participants',\n Carbon = 'savings_carbon',\n Cars = 'cars',\n Pledges = 'actions_completed'\n}\n\ninterface Props {\n statType: StatType;\n value: number;\n statLine: string;\n over?: boolean;\n perParticipant?: boolean;\n}\n\nconst StatIcon = ({ statType, value, statLine, formatNumber, over = false, perParticipant = false }: LProps) => (\n
\n
\n \n
\n
{over ? '> ' : ''}{formatNumber(Math.max(0.01, value))}
\n
\n {perParticipant &&
per participant
}\n
\n);\n\nexport default compose(\n withLocalization('common')\n)(StatIcon) as React.SFC;\n","import * as React from 'react';\nimport { times } from 'lodash';\n\ninterface Props {\n length: number;\n active?: number;\n vertical?: boolean;\n height?: string;\n width?: string;\n fill?: string;\n containerStyle?: React.CSSProperties;\n}\n\nconst Indicators = ({\n length, active, vertical,\n containerStyle = {},\n height = '16px', width = '16px', fill = 'white'\n}: Props) => (\n \n {times(length).map((n) => (\n
\n ))}\n
\n);\n\nexport default Indicators;\n","import * as React from 'react';\nimport up from 'updeep';\nimport { isEmpty, trim } from 'lodash';\nimport { Button, Input, FormGroup, Label, FormFeedback } from 'reactstrap';\nimport { compose, Dispatch } from 'redux';\nimport { withLocalization, LProps } from '../../utils/wrappers';\nimport { State } from '../../redux/state';\nimport actions, { bindActionCreators } from '../../redux/actions';\nimport { connect } from 'react-redux';\nimport { LoginErrors, makeLoginErrors, loginVEMessages } from '../../utils/forms';\nimport { Patch } from '../../redux/actions/all';\nimport RouteLink from '../../shared/RouteLink';\nimport { Routes } from '../../utils/routerHelper';\nimport { ValidationErrors, CreateSessionParams, removeVEForField } from '../../userApi';\n\ninterface Props {\n login: (params: CreateSessionParams) => void;\n validationErrors: ValidationErrors;\n patch: Patch;\n}\n\ninterface LoginState {\n form: { email: string, password: string };\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: LoginState = {\n form: { email: '', password: '' },\n errors: {},\n dirty: {},\n submitted: false\n};\n\nclass Login extends React.Component, LoginState> {\n public state: LoginState = initialState;\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { validationErrors, t } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const { dirty, submitted, form } = this.state;\n const errors = makeLoginErrors({ dirty, submitted, ...form }, nextProps.validationErrors, t);\n this.setState({ errors });\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n const { dirty, submitted, form } = this.state;\n if (validate) {\n const errors = makeLoginErrors({ dirty, submitted, ...form }, validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as LoginState);\n }\n\n private markDirty(field: string) {\n const { submitted, form } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const { validationErrors, t, patch } = this.props;\n let ve = validationErrors;\n if (loginVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, loginVEMessages);\n patch({ loginVE: up.constant(ve) });\n }\n\n const update: Partial = { dirty: up({ [field]: true }, this.state.dirty) };\n const errors = makeLoginErrors({ dirty, submitted, ...form }, ve, t);\n update.errors = errors;\n this.setState({ errors, dirty });\n }\n\n private login() {\n const { form, dirty } = this.state;\n const submitted = true;\n const { login, t, validationErrors } = this.props;\n const errors = makeLoginErrors({ dirty, submitted, ...form }, validationErrors, t);\n if (isEmpty(errors)) {\n login(form);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const {\n t\n } = this.props;\n return (\n
\n \n \n this.markDirty('email')}\n onChange={(e) => this.update({ form: { ...form, email: trim(e.target.value || '').toLowerCase() } })}\n />\n {errors.email && {errors.email}}\n \n \n \n this.markDirty('password')}\n onChange={(e) => this.update({ form: { ...form, password: e.target.value } })}\n />\n {errors.password && {errors.password}}\n \n this.login()}\n style={{ width: '250px' }}\n >{t('Login')}\n
\n {t('Forget something?')} \n {t('Reset Password')}\n
\n
\n {t('Not registered?')} \n {t('Sign up!')}\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _props: Props) => ({\n validationErrors: state.loginVE\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch, _props: Props) =>\n bindActionCreators({\n login: actions.login,\n patch: actions.patch\n }, dispatch);\n\nexport default compose(\n withLocalization('auth'),\n connect(mapStateToProps, mapDispatchToProps)\n)(Login);\n","import * as React from 'react';\nimport { FormText, Input, Button, FormGroup, Label, FormFeedback } from 'reactstrap';\nimport { compose, Dispatch } from 'redux';\nimport up from 'updeep';\nimport { isEmpty, trim } from 'lodash';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { State, Modals } from '../../redux/state';\nimport actions, { bindActionCreators } from '../../redux/actions';\nimport * as selectors from '../../redux/selectors';\nimport { connect } from 'react-redux';\nimport { SignupErrors, makeSignupErrors, signupVEMessages, SignupForm } from '../../utils/forms';\nimport { UserType, UserWrite, ValidationErrors, CreateUserParams, removeVEForField } from '../../userApi';\nimport EntityEmailDomains from '../../shared/EntityEmailDomains';\nimport { Form } from '../../utils/forms/form';\nimport SignupWizard from './SignupWizard';\nimport LinkButton from '../../shared/LinkButton';\nimport { someMatchingEmailDomain } from '../../utils/userApiHelper';\n\ninterface Props {\n validationErrors: ValidationErrors;\n signup: (params: CreateUserParams) => void;\n patch: (update: Partial) => void;\n openEntityEmailDomainModal: () => void;\n canSetHealthSystemsEmployee: (email: string) => boolean;\n}\n\nexport interface SignupState extends Form {\n form: UserWrite;\n errors: Partial;\n password: string;\n confirmPassword: string;\n agreedToTermsAndConditions: string;\n isWizardOpen: boolean;\n signupWizardStep: number;\n}\n\nconst initialState: SignupState = {\n form: { type: UserType.Student, options: {} } as UserWrite,\n password: '',\n confirmPassword: '',\n agreedToTermsAndConditions: '',\n errors: {},\n dirty: {},\n submitted: false,\n isWizardOpen: false,\n signupWizardStep: 0\n};\n\nconst stateToSignupForm = (s: SignupState): SignupForm => ({\n user: s.form,\n password: s.password,\n confirmPassword: s.confirmPassword,\n agreedToTermsAndConditions: s.agreedToTermsAndConditions,\n dirty: s.dirty,\n submitted: s.submitted\n});\n\nclass Signup extends React.Component, SignupState> {\n public state = initialState;\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { validationErrors, t } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const errors = makeSignupErrors(stateToSignupForm(this.state), nextProps.validationErrors, t);\n const update: Partial = { errors };\n if (!isEmpty(errors)) {\n update.isWizardOpen = false;\n }\n this.setState(update as SignupState);\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n if (validate) {\n const errors = makeSignupErrors(stateToSignupForm({ ...this.state, ...update }), validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as SignupState);\n }\n\n private markDirty(field: string) {\n const dirty = { ...this.state.dirty, [field]: true };\n if (field === 'password') {\n dirty.confirmPassword = true;\n }\n const { validationErrors, t, patch } = this.props;\n let ve = validationErrors;\n if (signupVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, signupVEMessages);\n patch({ signupVE: up.constant(ve) });\n }\n\n const update: Partial = { dirty };\n const errors = makeSignupErrors(stateToSignupForm({ ...this.state, dirty }), ve, t);\n update.errors = errors;\n this.setState(update as SignupState);\n }\n\n private completeRegistration() {\n const { validationErrors, t } = this.props;\n const errors = makeSignupErrors(stateToSignupForm({ ...this.state, submitted: true }), validationErrors, t);\n const update: Partial = { submitted: true, errors };\n if (isEmpty(errors)) {\n update.isWizardOpen = true;\n }\n this.setState(update as SignupState);\n }\n\n private submit() {\n const { agreedToTermsAndConditions, password, form } = this.state;\n const { signup } = this.props;\n signup({ user: form, password, agreedToTermsAndConditions });\n this.setState({ isWizardOpen: false });\n }\n\n public render() {\n const { form, errors, password, confirmPassword, dirty } = this.state;\n const {\n openEntityEmailDomainModal, canSetHealthSystemsEmployee,\n t\n } = this.props;\n const isSignupPasswordValid = dirty.password && !Boolean(errors.password);\n return (\n
\n \n \n this.update({ form: up({ email: trim(e.target.value || '').toLowerCase() }, form) })}\n onBlur={() => this.markDirty('email')}\n />\n \n {errors.email && {errors.email}}\n \n \n \n this.update({ form: up({ firstName: e.target.value }, form) })}\n onBlur={() => this.markDirty('firstName')}\n />\n {errors.firstName && {errors.firstName}}\n \n \n \n this.update({ form: up({ lastName: e.target.value }, form) })}\n onBlur={() => this.markDirty('lastName')}\n />\n {errors.lastName && {errors.lastName}}\n \n \n \n this.markDirty('password')}\n onChange={(e) => this.update({ password: e.target.value })}\n />\n {errors.password && {errors.password}}\n \n \n \n this.update({ confirmPassword: e.target.value }, true)}\n onBlur={() => this.markDirty('confirmPassword')}\n autoComplete={'off'}\n />\n {errors.confirmPassword && {errors.confirmPassword}}\n \n this.update(update)}\n submit={() => this.submit()}\n canSetHealthSystemsEmployee={canSetHealthSystemsEmployee(form.email || '')}\n t={t}\n />\n this.completeRegistration()}\n style={{ width: '250px' }}\n >{t('Signup')}\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _props: Props) => ({\n validationErrors: state.signupVE,\n canSetHealthSystemsEmployee: (email: string) => selectors.healthFacilityEntities(state).some((entity) => someMatchingEmailDomain(email, entity.permittedDomains))\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch, _props: Props) =>\n bindActionCreators({\n signup: actions.signup,\n openEntityEmailDomainModal: () => actions.setModal(Modals.EntityEmailDomains),\n patch: actions.patch\n }, dispatch);\n\nexport default compose(\n withLocalization('auth'),\n connect(mapStateToProps, mapDispatchToProps)\n)(Signup);\n","import * as React from 'react';\nimport { ModalHeader, Modal, ModalBody, Carousel, CarouselItem, FormGroup, Label, Button } from 'reactstrap';\nimport { TranslationFunction } from 'i18next';\nimport { has } from 'lodash';\nimport Radio from '../../shared/Radio';\nimport Checkbox from '../../shared/Checkbox';\nimport AgreeToTermsAndConditions from '../../shared/AgreeToTermsAndConditions';\nimport { SignupState } from './Signup';\nimport { UserType } from '../../userApi';\nimport { userTypeFromString } from '../../utils/userApiHelper';\n\ninterface Props {\n t: TranslationFunction;\n canSetHealthSystemsEmployee: boolean;\n update: (update: Partial) => void;\n submit: () => void;\n signupState: SignupState;\n}\n\nexport default class SignupWizard extends React.Component {\n\n private previous() {\n const { update, signupState: { signupWizardStep } } = this.props;\n if (signupWizardStep > 0) {\n update({ signupWizardStep: signupWizardStep - 1 });\n }\n }\n\n private next() {\n const { update, signupState: { signupWizardStep } } = this.props;\n if (signupWizardStep < 2) {\n update({ signupWizardStep: signupWizardStep + 1 });\n }\n }\n\n public render() {\n const { t, signupState, update, submit, canSetHealthSystemsEmployee } = this.props;\n const { form, agreedToTermsAndConditions, signupWizardStep } = signupState;\n\n const items = [\n (\n \n
\n update({ form: { ...form, type: userTypeFromString(userType) } })}\n >{t('Student')}  \n update({ form: { ...form, type: userTypeFromString(userType) } })}\n >{t('Faculty')}  \n update({ form: { ...form, type: userTypeFromString(userType) } })}\n >{t('Staff')}  \n \n
\n update({ signupWizardStep: signupWizardStep + 1 })}\n className=\"cc__signup_wizard__controls__next\"\n >{t('Next')}\n
\n
),\n (\n \n
\n update({ form: { ...form, options: { ...form.options, isLabUser: value === '1' } } })}\n >{t('Yes')}  \n update({ form: { ...form, options: { ...form.options, isLabUser: value === '1' } } })}\n >{t('No')}  \n \n
\n update({ signupWizardStep: signupWizardStep - 1 })}\n className=\"cc__signup_wizard__controls__prev\"\n >{t('Back')}\n update({ signupWizardStep: signupWizardStep + 1 })}\n className=\"cc__signup_wizard__controls__next\"\n >{t('Next')}\n
\n
)\n ];\n if (canSetHealthSystemsEmployee) {\n items.push((\n \n
\n update({ form: { ...form, options: { ...form.options, isHealthFacilityEmployee: value === '1' } } })}\n >{t('Yes')}  \n update({ form: { ...form, options: { ...form.options, isHealthFacilityEmployee: value === '1' } } })}\n >{t('No')}  \n \n
\n update({ signupWizardStep: signupWizardStep - 1 })}\n className=\"cc__signup_wizard__controls__prev\"\n >{t('Back')}\n update({ signupWizardStep: signupWizardStep + 1 })}\n className=\"cc__signup_wizard__controls__next\"\n >{t('Next')}\n
\n
));\n }\n\n items.push(\n \n \n checked ?\n update({ agreedToTermsAndConditions: new Date().toISOString() }) :\n update({ agreedToTermsAndConditions: '' })\n }\n >\n \n \n \n
\n update({ signupWizardStep: signupWizardStep - 1 })}\n className=\"cc__signup_wizard__controls__prev\"\n >{t('Back')}\n submit()}\n id=\"cc__signup_wizard__controls__submit\"\n >{t('Submit')}\n
\n
\n );\n\n return (\n update({ isWizardOpen: false })}\n toggle={() => update({ isWizardOpen: !signupState.isWizardOpen })}\n >\n update({ isWizardOpen: !signupState.isWizardOpen })}\n >{t('Complete your registration')}\n \n this.next()}\n previous={() => this.previous()}\n activeIndex={signupState.signupWizardStep}\n >\n {items}\n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { withLocalization, LProps } from '../utils/wrappers';\n\nconst AgreeToTermsAndConditions = ({ t }: LProps<{}>) => (\n \n {t('I agree to the ')}\n {t('terms and conditions')}.\n \n);\n\nexport default compose(\n withLocalization('common')\n)(AgreeToTermsAndConditions);\n","import * as React from 'react';\nimport up from 'updeep';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { isEmpty, trim } from 'lodash';\nimport { FormGroup, Input, Button, FormFeedback, Label } from 'reactstrap';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport actions from '../../redux/actions';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { ForgotPasswordErrors, makeForgotPasswordErrors, forgotPasswordVEMessages } from '../../utils/forms';\nimport { ValidationErrors, removeVEForField } from '../../userApi';\n\ninterface Props {\n validationErrors: ValidationErrors;\n postPasswordResetRequest: (form: { email: string }) => void;\n patch: (update: Partial) => void;\n}\n\ninterface ForgotPasswordState {\n errors: Partial;\n form: { email: string };\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: ForgotPasswordState = {\n errors: {},\n form: { email: '' },\n dirty: {},\n submitted: false\n};\n\nclass ForgotPassword extends React.Component, ForgotPasswordState> {\n public state = initialState;\n\n private update(update: Partial, validate: boolean = false) {\n const { dirty, submitted, form } = this.state;\n const { validationErrors, t } = this.props;\n if (validate) {\n const errors = makeForgotPasswordErrors({ dirty, submitted, ...form }, validationErrors, t);\n if (!isEmpty(errors)) {\n update.errors = errors;\n }\n }\n this.setState(update as ForgotPasswordState);\n }\n\n private markDirty(field: string) {\n const { submitted, form } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const { validationErrors, t, patch } = this.props;\n let ve = validationErrors;\n if (forgotPasswordVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, forgotPasswordVEMessages);\n patch({ forgotPasswordVE: ve });\n }\n\n const update: Partial = { dirty: up({ [field]: true }, this.state.dirty) };\n const errors = makeForgotPasswordErrors({ dirty, submitted, ...form }, ve, t);\n update.errors = errors;\n this.setState({ errors, dirty });\n }\n\n private submit() {\n const { postPasswordResetRequest, validationErrors, t } = this.props;\n const submitted = true;\n const { form, dirty } = this.state;\n\n const errors = makeForgotPasswordErrors({ dirty, submitted, ...form }, validationErrors, t);\n if (isEmpty(errors)) {\n postPasswordResetRequest(form);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const {\n t\n } = this.props;\n return (\n
\n \n \n this.markDirty('email')}\n onChange={(e) => this.update({ form: { ...form, email: trim(e.target.value || '').toLowerCase() } })}\n />\n {errors.email && {errors.email}}\n \n this.submit()}\n >{t('Send link')}\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n validationErrors: state.forgotPasswordVE\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n postPasswordResetRequest: actions.postPasswordResetRequest,\n patch: actions.patch\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('forgotPassword')\n)(ForgotPassword) as React.ComponentClass;\n","import * as React from 'react';\nimport up from 'updeep';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Alert, FormGroup, Input, Button, Label, FormFeedback } from 'reactstrap';\nimport { isEmpty } from 'lodash';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { State } from '../../redux/state';\nimport actions from '../../redux/actions';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { PasswordResetForm, PasswordResetErrors, makePasswordResetErrors } from '../../utils/forms';\nimport { StyleState } from '../../utils/styles';\nimport { Routes } from '../../utils/routerHelper';\n\ninterface Props {\n hasPasswordResetToken: boolean;\n errors: Partial;\n form: Partial;\n putPasswordResetRequest: (password: string) => void;\n}\n\ninterface PasswordResetState {\n form: {\n password: string;\n confirmPassword: string;\n };\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: PasswordResetState = {\n form: { password: '', confirmPassword: '' },\n errors: {},\n dirty: {},\n submitted: false\n};\n\nclass PasswordReset extends React.Component, PasswordResetState> {\n public state = initialState;\n\n private update(update: Partial, validate: boolean = false) {\n const { t } = this.props;\n const { dirty, form } = this.state;\n if (validate) {\n const errors = makePasswordResetErrors({\n ...form,\n ...update.form,\n dirty\n }, [], t);\n update.errors = errors;\n }\n this.setState(update as PasswordResetState);\n }\n\n private markDirty(field: string) {\n const { t } = this.props;\n const dirty = { ...this.state.dirty, [field]: true };\n const errors = makePasswordResetErrors({ ...this.state.form, dirty }, [], t);\n this.setState({ errors, dirty });\n }\n\n private submit() {\n const { putPasswordResetRequest, t } = this.props;\n const submitted = true;\n const { form, dirty } = this.state;\n const errors = makePasswordResetErrors({ ...form, dirty, submitted }, [], t);\n if (isEmpty(errors)) {\n putPasswordResetRequest(form.password);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors, dirty } = this.state;\n const {\n t, hasPasswordResetToken\n } = this.props;\n return (\n
\n {!hasPasswordResetToken &&\n \n
\n

{t('It appears the link is missing a valid reset token. Click the link below to try again.')}

\n {t('Forgot password')}\n
\n
\n }\n {hasPasswordResetToken &&\n
\n \n \n this.markDirty('password')}\n onChange={(e) => this.update({ form: up({ password: e.target.value }, form) })}\n />\n {errors.password && {errors.password}}\n \n \n \n this.markDirty('confirmPassword')}\n onChange={(e) => this.update({ form: { ...form, confirmPassword: e.target.value } }, true)}\n />\n {errors.confirmPassword && {errors.confirmPassword}}\n \n this.submit()}\n >{t('Confirm')}\n
\n }\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n hasPasswordResetToken: Boolean(state.initialQuery.passwordResetToken)\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n putPasswordResetRequest: actions.putPasswordResetRequest\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('passwordReset')\n)(PasswordReset) as React.ComponentClass;\n","import * as React from 'react';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nconst Overlay = ({\n children\n}: Props) => (\n
\n
\n
\n
{children}
\n
\n
\n);\n\nexport default Overlay;\n","import * as React from 'react';\nimport up from 'updeep';\nimport { isEmpty, trim } from 'lodash';\nimport { Button, Input, FormGroup, Label, FormFeedback } from 'reactstrap';\nimport { compose, Dispatch } from 'redux';\nimport { withLocalization, LProps } from '../../utils/wrappers';\nimport { State } from '../../redux/state';\nimport actions, { bindActionCreators } from '../../redux/actions';\nimport { connect } from 'react-redux';\nimport { JoinErrors, makeJoinErrors, joinVEMessages } from '../../utils/forms';\nimport { Patch } from '../../redux/actions/all';\nimport RouteLink from '../../shared/RouteLink';\nimport { Routes } from '../../utils/routerHelper';\nimport { ValidationErrors, CreateSessionParams, removeVEForField, Competition, UserRead } from '../../userApi';\n\ninterface Props {\n join: () => void;\n validationErrors: ValidationErrors;\n competition?: Competition\n user?: UserRead \n logout: () => void;\n}\n\ninterface JoinState { \n errors: Partial;\n submitted: boolean;\n}\n\nconst initialState: JoinState = { \n errors: {}, \n submitted: false\n};\n\nclass Join extends React.Component, JoinState> {\n public state: JoinState = initialState;\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { validationErrors, t } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const { submitted } = this.state;\n const errors = makeJoinErrors(nextProps.validationErrors, t);\n this.setState({ errors });\n }\n }\n\n private join() { \n this.props.join();\n }\n\n onLogout=(event:React.MouseEvent)=>{\n event.preventDefault()\n this.props.logout()\n\n }\n\n public render() {\n const { errors } = this.state;\n const { competition, user } = this.props\n const {\n t\n } = this.props;\n return (\n
\n

\n {t(\"You haven't join\")} \n {competition?.name} \n {t(\"competition yet\")} \n

\n

\n {t(\"Do you want to join?\")}\n

\n

\n {errors.join && {errors.join}}\n

\n this.join()}\n style={{ width: '250px' }}\n >{t('Join')} \n
\n {t(\"Isn't you\")} {user?.firstName}? \n {t('Log out')} \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _props: Props) => ({\n validationErrors: state.joinVE,\n competition: state.competition,\n user: state.user\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch, _props: Props) =>\n bindActionCreators({\n join: actions.join,\n logout: actions.logout\n }, dispatch);\n\nexport default compose(\n withLocalization('auth'),\n connect(mapStateToProps, mapDispatchToProps)\n)(Join);\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport up from 'updeep';\nimport { isEmpty } from 'lodash';\nimport { connect } from 'react-redux';\nimport { Alert, Input, Button, FormGroup, Label, FormFeedback } from 'reactstrap';\nimport { Competition, UserEmail, ValidationErrors, removeVEForField } from '../userApi';\nimport { State, Modals } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport actions from '../redux/actions';\nimport { StyleState } from '../utils/styles';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { UserEmailErrors, makeUserEmailErrors, userEmailVEMessages } from '../utils/forms';\nimport { Form } from '../utils/forms/form';\nimport { Patch } from '../redux/actions/all';\nimport EntityEmailDomains from './EntityEmailDomains';\nimport LinkButton from './LinkButton';\n\ninterface Props {\n competition: Competition;\n userEmailPermittedByCompetition: UserEmail;\n competitionEmailVerificationSent: string;\n validationErrors: ValidationErrors;\n postUserEmail: (email: string, mustVerifyCompetition: boolean) => void;\n patch: Patch;\n getAccountVerification: (userEmail: UserEmail, verifyingCompetition: boolean) => void;\n openEntityEmailDomainModal: () => void;\n}\n\ninterface UserEmailState {\n form: { email: string };\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: UserEmailState = {\n form: { email: '' },\n errors: {},\n dirty: {},\n submitted: false\n};\n\nclass ErrorCompetitionVerification extends React.Component, UserEmailState> {\n public state = initialState;\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { validationErrors, t } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const { dirty, submitted, form } = this.state;\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, nextProps.validationErrors, t);\n this.setState({ errors });\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n const { dirty, submitted, form } = this.state;\n if (validate) {\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as UserEmailState);\n }\n\n private markDirty(field: string) {\n const { submitted, form } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const { validationErrors, t, patch } = this.props;\n let ve = validationErrors;\n if (userEmailVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, userEmailVEMessages);\n patch({ userEmailVE: up.constant(ve) });\n }\n\n const update: Partial = { dirty };\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, ve, t);\n update.errors = errors;\n this.setState({ errors, dirty });\n }\n\n private submit() {\n const { postUserEmail, t, validationErrors } = this.props;\n const submitted = true;\n const { form, dirty } = this.state;\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, validationErrors, t);\n if (isEmpty(errors)) {\n postUserEmail(form.email, true);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const {\n openEntityEmailDomainModal, competitionEmailVerificationSent,\n getAccountVerification, userEmailPermittedByCompetition, t\n } = this.props;\n return (\n \n
\n {competitionEmailVerificationSent &&\n

\n {t('A verification email has been sent to {{ email }}.', { email: competitionEmailVerificationSent })}\n

\n }\n {!competitionEmailVerificationSent &&\n
\n {userEmailPermittedByCompetition &&\n
\n

{t('A verification email has been sent to {{ email }}.', { email: userEmailPermittedByCompetition.email })}

\n getAccountVerification(userEmailPermittedByCompetition, true)}\n >{t('Resend verification')}\n
\n }\n {!userEmailPermittedByCompetition &&\n
\n

\n {t('Please add an email for one of the competition')}: \n .\n

\n \n \n this.markDirty('email')}\n onChange={(e) => this.update({ form: up({ email: e.target.value }, form) })}\n />\n {errors.email && {errors.email}}\n \n this.submit()}\n >{t('Send verification')}\n
\n }\n
\n }\n
\n \n
\n );\n }\n\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n competition: state.competition,\n validationErrors: state.userEmailVE,\n userEmailPermittedByCompetition: selectors.userEmailPermittedByCompetition(state),\n competitionEmailVerificationSent: state.competitionEmailVerificationSent\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n postUserEmail: actions.postUserEmail,\n getAccountVerification: actions.getAccountVerification,\n openEntityEmailDomainModal: () => actions.setModal(Modals.EntityEmailDomains),\n patch: actions.patch\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('competitionNotification')\n)(ErrorCompetitionVerification) as React.ComponentClass;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport up from 'updeep';\nimport { isEmpty } from 'lodash';\nimport { connect } from 'react-redux';\nimport { Alert, Input, Button, FormGroup, Label, FormFeedback } from 'reactstrap';\nimport { Competition, UserEmail, ValidationErrors, removeVEForField } from '../userApi';\nimport { State, Modals } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport actions from '../redux/actions';\nimport { StyleState } from '../utils/styles';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { UserEmailErrors, makeUserEmailErrors, userEmailVEMessages } from '../utils/forms';\nimport { Form } from '../utils/forms/form';\nimport { Patch } from '../redux/actions/all';\nimport EntityEmailDomains from './EntityEmailDomains';\nimport LinkButton from './LinkButton';\n\ninterface Props {\n competition: Competition;\n userEmailPermittedByCompetition: UserEmail;\n competitionEmailVerificationSent: string;\n validationErrors: ValidationErrors;\n postUserEmail: (email: string, mustVerifyCompetition: boolean) => void;\n patch: Patch;\n getAccountVerification: (userEmail: UserEmail, verifyingCompetition: boolean) => void;\n openEntityEmailDomainModal: () => void;\n}\n\ninterface UserEmailState {\n form: { email: string };\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: UserEmailState = {\n form: { email: '' },\n errors: {},\n dirty: {},\n submitted: false\n};\n\nclass ErrorUserJoin extends React.Component, UserEmailState> {\n public state = initialState;\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { validationErrors, t } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const { dirty, submitted, form } = this.state;\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, nextProps.validationErrors, t);\n this.setState({ errors });\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n const { dirty, submitted, form } = this.state;\n if (validate) {\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as UserEmailState);\n }\n\n private markDirty(field: string) {\n const { submitted, form } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const { validationErrors, t, patch } = this.props;\n let ve = validationErrors;\n if (userEmailVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, userEmailVEMessages);\n patch({ userEmailVE: up.constant(ve) });\n }\n\n const update: Partial = { dirty };\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, ve, t);\n update.errors = errors;\n this.setState({ errors, dirty });\n }\n\n private submit() {\n const { postUserEmail, t, validationErrors } = this.props;\n const submitted = true;\n const { form, dirty } = this.state;\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, validationErrors, t);\n if (isEmpty(errors)) {\n postUserEmail(form.email, true);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const {\n openEntityEmailDomainModal, competitionEmailVerificationSent,\n getAccountVerification, userEmailPermittedByCompetition, t\n } = this.props;\n return (\n \n
\n

\n {t(\"Your haven't join this competition yet\")}\n

\n
\n \n
\n );\n }\n\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n competition: state.competition,\n validationErrors: state.userEmailVE,\n userEmailPermittedByCompetition: selectors.userEmailPermittedByCompetition(state),\n competitionEmailVerificationSent: state.competitionEmailVerificationSent\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n postUserEmail: actions.postUserEmail,\n getAccountVerification: actions.getAccountVerification,\n openEntityEmailDomainModal: () => actions.setModal(Modals.EntityEmailDomains),\n patch: actions.patch\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('competitionNotification')\n)(ErrorUserJoin) as React.ComponentClass;\n","import * as React from 'react';\nimport { compose, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { Alert } from 'reactstrap';\nimport { State, Toast } from '../redux/state';\nimport actions, { bindActionCreators } from '../redux/actions';\n\ninterface Props {\n toast: Toast;\n closeToast: () => void;\n}\n\nconst Toast = ({\n toast,\n closeToast\n}: Props) => (\n
\n \n {toast.title &&
{toast.title}
}\n
\n \n
\n);\n\nconst mapStateToProps = (state: State) => ({\n toast: state.toast\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n closeToast: actions.closeToast\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps)\n)(Toast);\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport Footer from '../../shared/Footer';\nimport { Link } from 'react-router-dom';\nimport { makeSimpleRoutePath, Routes } from '../../utils/routerHelper';\nimport CompetitionAboutText from './CompetitionAboutText';\nconst About = ({ t }: LProps<{}>) => (\n
\n
\n \n

{t('Cool Campus Challenge Team')}

\n

\n UCOP (Ryan Bell, Emma Finn & the Marketing and Communications Team)
\n CoolClimate Network (Chris Jones, Eric Hulburd & Daniel Kammen)
\n UCSB (Jewel Persad)
\n Center for Sustainable Energy (Katherine Beaulieu, Jack Ulrich & Ally Senturk)
\n

\n
\n
\n
\n
\n

{t('What is the Cool Campus Challenge?')}

\n

{t('The Cool Campus Challenge is a friendly challenge designed to educate and motivate the University of California community to take simple energy-saving, waste reducing and sustainability-focused actions to lower their carbon footprint and help the UC system reach carbon neutrality by 2025.')}

\n

{t('It\\'s a big, daring goal, but we can get there if we all work together as a community to make it happen.')}

\n
\n
\n

{t('How does the Cool Campus Challenge work?')}

\n

{t('Once you sign up you will be given a variety of ways to learn about your carbon footprint and take actions that have a direct impact on reducing it, and living a more sustainable lifestyle. These activities could be as simple as turning off the lights when you leave the room, or taking public transportation…things you may already be doing! Show us, your friends, and your colleagues your progress by uploading photos and stories to your personal Challenge page.')}

\n

{t('For every action you take, you\\'ll earn valuable points within your locally hosted competition and track of your personal progress.')}

\n
\n
\n

{t('Who runs the Cool Campus Challenge?')}

\n

\n {t('The Cool Campus Challenge is a collaboration between the University of California and the CoolClimate Network at U.C. Berkeley, with funding from UC’s Carbon Neutrality Initiative. It was developed by contributions from the University of California, the Center for Sustainable Energy, and your local, friendly Cool Campus Team.')}\n

\n
\n
\n
\n);\n\nexport default asPage({})(compose(\n withLocalization('about')\n)(About));\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { Nav, NavItem, NavLink, TabContent, TabPane } from 'reactstrap';\nimport { compose } from 'redux';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport Footer from '../../shared/Footer';\nimport { RouterProps, withRouter } from 'react-router';\nimport { FaqSection, makeFaqPath, getFaqParams } from '../../utils/routerHelper';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport LinkButton from '../../shared/LinkButton';\nimport { openIntercom } from '../../utils/intercom';\nimport ExternalLink from '../../shared/ExternalLink';\n\ninterface Props {\n section: FaqSection;\n}\n\nconst Contact = () => (contact@coolcampushchallenge.org);\n\nconst Faq = ({ t, history, section }: LProps & RouterProps) => (\n
\n

FAQ

\n \n \n \n
\n

{t('How do I sign up?')}

\n

{t('Joining a campus competition? Enter the url in this format https://www.coolcampuschallenge.org/ and click the signup button. ')}

\n

{t('If you do not receive a confirmation email, please check your spam folder for the verification email.')}

\n
\n
\n

{t('How do participants earn points?')}

\n

{t('There are several ways for participants to earn points. Simple actions such as signing up for the Challenge will earn 200 points, and additional points can be earned for tasks such as uploading a photo, and inviting friends to join.')}

\n

{t('Points earned throughout the Challenge will be tracked and viewable in real-time and added to your total.')}

\n
\n
\n

{t('How do teams work?')}

\n

{t('Anyone can either create their own team or join an existing team at their UC location.')}

\n

{t('There is no limit to the number of participants on teams…the more the better!')}

\n
\n
\n

{t('Who do I contact if I have a question or want to start my own competition?')}

\n

{t('Please contact your local campus sustainability office.')}

\n
\n
\n
\n
\n
\n);\n\nconst mapStateToProps = (_state: State, props: LProps) => ({\n section: getFaqParams(props.history.location, props.i18n).section\n});\n\nexport default asPage({})(compose(\n withLocalization('faw'),\n withRouter,\n connect(mapStateToProps)\n)(Faq));\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Competition } from '../../userApi';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport { RouterProps } from 'react-router';\nimport actions from '../../redux/actions';\nimport { Routes } from '../../utils/routerHelper';\nimport BlogEntries from '../../shared/BlogEntries';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\nimport CompetitionAboutText from '../About/CompetitionAboutText';\n\ninterface Props {\n competition: Competition;\n initializingBlogPage: boolean;\n initializeBlogPage: () => void;\n}\n\nclass BlogPage extends React.Component & RouterProps> {\n public componentWillMount() {\n const { initializeBlogPage } = this.props;\n initializeBlogPage();\n }\n\n public render() {\n const {\n initializingBlogPage, t\n } = this.props;\n if (initializingBlogPage) {\n return ();\n }\n return (\n
\n
\n \n
\n
\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: {}): Partial => ({\n initializingBlogPage: state.pendingRoute === Routes.Blog\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializeBlogPage: actions.initializeBlogPage\n}, dispatch);\n\nexport default asPage({})(compose(\n withLocalization('blog'),\n connect(mapStateToProps, mapDispatchToProps)\n)(BlogPage) as React.SFC);\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { BlogEntry, Entity, Competition } from '../userApi';\nimport { Link } from 'react-router-dom';\nimport SafeHTML from './SafeHtml';\nimport { makeBlogEntryPath, makeEntityPath } from '../utils/routerHelper';\nimport { State } from '../redux/state';\nimport { connect } from 'react-redux';\nimport EntityIdentity from './EntityIdentity';\n\ninterface ManualProps {\n blogEntry: BlogEntry;\n showEntity: boolean;\n}\n\ninterface Props extends ManualProps {\n entity: Entity;\n competition: Competition;\n}\n\nconst BlogEntryMarkdownPreview = ({\n t, blogEntry, entity, competition, showEntity\n}: LProps) => {\n return (\n
\n {showEntity &&\n \n }\n {blogEntry.photo &&\n
\n {t(blogEntry.title)}\n
\n }\n
\n {blogEntry.title}\n
\n
\n \n
\n {t('Read more')} >\n
\n );\n};\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n competition: state.competition,\n entity: state.entities[ownProps.blogEntry.entityID]\n});\n\nexport default compose(\n withLocalization('blogEntry'),\n connect(mapStateToProps)\n)(BlogEntryMarkdownPreview) as React.SFC;\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport { TranslationFunction } from 'i18next';\nimport { asPage } from '../../utils/wrappers/asPage';\n\ninterface ShareItemProps {\n content: string;\n title: string;\n img: string;\n download: string;\n t: TranslationFunction;\n}\n\nconst ShareItem = ({\n title, content, img, t\n}: ShareItemProps) => (\n
\n {title}\n

{title}

\n

{content}

\n {t('Download')} >\n
\n);\n\nconst Share = ({ t }: LProps<{}>) => (\n
\n
\n

\n {t('Want to help us spread the word about the Challenge? You\\'ll find all you need to know about promotion on and offline in our spiffy new toolkit.')}\n

\n

{t('Here are links to some additional resources that might come in handy:')}

\n
\n
\n \n \n \n \n \n
\n
\n);\n\nexport default asPage({})(compose(\n withLocalization('share')\n)(Share));\n","import * as React from 'react';\nimport { Alert } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { compose } from 'redux';\nimport { StyleState } from '../utils/styles';\nimport { asPage } from '../utils/wrappers/asPage';\n\nconst Missing = ({ t }: LProps<{}>) => (\n \n

{t('This route does not exist.')}

\n
\n);\n\nexport default asPage({})(compose(\n withLocalization('common')\n)(Missing));\n","import * as React from 'react';\nimport { isEmpty } from 'lodash';\nimport cx from 'classnames';\nimport { Modal, ModalBody, ButtonGroup } from 'reactstrap';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Entity, MembershipLevel, EntityMembership } from '../../userApi';\nimport SocialLinksBtnGroup from '../../shared/SocialLinksBtnGroup';\nimport EntityStats from './EntityStats';\nimport Stories from '../../shared/Stories';\nimport { connect } from 'react-redux';\nimport Scoreboard from './Scoreboard';\nimport { State } from '../../redux/state';\nimport * as selectors from '../../redux/selectors';\nimport { withRouter, RouterProps } from 'react-router';\nimport { History } from 'history';\nimport actions from '../../redux/actions';\nimport { Routes, makeEntityEditPath, makeEntityBlogPath, getEntityParams } from '../../utils/routerHelper';\nimport Footer from '../../shared/Footer';\nimport { Button } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\nimport SafeHTML from '../../shared/SafeHtml';\nimport { entityCanBlog } from '../../utils/userApiHelper';\n\ninterface Props {\n entity: Entity;\n membership: EntityMembership;\n entityID: number;\n membershipLevel: MembershipLevel;\n canJoin: boolean;\n initializingEntityPage: boolean;\n hasCompetitionEnded: boolean;\n initializeEntityPage: (history: History) => void;\n deleteTeam: (entity: Entity) => void;\n joinTeam: (entity: Entity) => void;\n deleteEntityMembership: (membershipID: number) => void;\n}\n\nenum MobileSection {\n INFO = 1,\n SCOREBOARD = 2,\n ACTIVITY = 4\n}\n\ninterface EntityPageState {\n confirmDelete: boolean;\n mobileSection: number;\n}\n\nconst didEntityIDUpdate = (nextProps: LProps, props: LProps) => {\n if (!props.entityID) return false;\n return props.entityID !== nextProps.entityID && Boolean(nextProps.entityID);\n};\n\nclass EntityPage extends React.Component & RouterProps, EntityPageState> {\n public state = { confirmDelete: false, mobileSection: MobileSection.INFO };\n\n public componentWillMount() {\n const { initializeEntityPage, history } = this.props;\n initializeEntityPage(history);\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n if (didEntityIDUpdate(nextProps, this.props)) {\n const { initializeEntityPage, history } = this.props;\n initializeEntityPage(history);\n }\n }\n\n private confirmDelete() {\n this.setState({ confirmDelete: true });\n }\n\n private delete() {\n const { entity, deleteTeam } = this.props;\n this.setState({ confirmDelete: false });\n deleteTeam(entity);\n }\n\n public render() {\n const {\n t, entity, initializingEntityPage, canJoin, joinTeam, hasCompetitionEnded,\n membershipLevel, history, deleteEntityMembership, membership\n } = this.props;\n if (!entity || initializingEntityPage) return ;\n return (\n
\n {entity.bannerPhoto &&\n
\n {entity.name}\n
\n }\n \n
\n
\n {entity.photo &&\n
\n {entity.name}\n
\n }\n
\n
\n
\n {entity.photo &&\n
\n {entity.name}\n
\n }\n {entity.name} \n {entity.type === Entity.TypeEnum.HealthFacility && }\n
\n {!isEmpty(entity.socialLinks) && }\n {(canJoin && !hasCompetitionEnded) &&\n \n joinTeam(entity)}\n >{t('Join now')}\n \n }\n {(membershipLevel === MembershipLevel.Member && entity.type === Entity.TypeEnum.Team) && !hasCompetitionEnded &&\n \n deleteEntityMembership(membership.id)}\n >{t('Leave')}\n \n }\n {(membershipLevel === MembershipLevel.Admin) &&\n \n history.push(makeEntityEditPath(entity, t))}\n >\n {entity.type === Entity.TypeEnum.Team && !hasCompetitionEnded &&\n deleteEntityMembership(membership.id)}\n >{t('Leave')}\n }\n \n }\n {(membershipLevel === MembershipLevel.Superadmin) &&\n \n history.push(makeEntityEditPath(entity, t))}\n >\n {entity.type !== Entity.TypeEnum.University && !hasCompetitionEnded &&\n this.confirmDelete()}\n >\n }\n \n }\n {entityCanBlog(entity) &&
{t('View blog')}
}\n
\n
\n \n
\n
{t('About')}
\n \n
\n
\n
\n
\n
\n {!initializingEntityPage &&\n
\n \n
\n }\n\n {!initializingEntityPage &&\n
\n \n
\n }\n
\n
\n
this.selectSection(MobileSection.INFO)}>\n Info\n
\n
this.selectSection(MobileSection.SCOREBOARD)}>\n Scoreboard\n
\n
this.selectSection(MobileSection.ACTIVITY)}>\n Activity\n
\n
\n {membershipLevel === MembershipLevel.Superadmin &&\n this.setState({ confirmDelete: !this.state.confirmDelete })}\n >\n {t('By clicking below you acknowledge that this team will no longer earn points and its memberships will be lost.')}\n \n \n \n \n \n }\n
\n
\n );\n }\n private getActiveClass(index: number) {\n return (index & this.state.mobileSection) === this.state.mobileSection ? 'cc__mobile_show' : 'cc__mobile_hide';\n }\n private getActiveTextClass(index: number) {\n return (index & this.state.mobileSection) === this.state.mobileSection ? 'active' : '';\n }\n private selectSection(index: number) {\n this.setState({\n mobileSection: index\n });\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const entity = selectors.currentEntity(state, ownProps);\n const initializingEntityPage = state.pendingRoute === Routes.Entity;\n const { entityID } = getEntityParams(ownProps.history.location, ownProps.i18n);\n if (!entity || initializingEntityPage) return { initializingEntityPage: true, entityID };\n const membership = state.userMemberships[entity.id];\n return {\n entityID,\n entity,\n membership,\n membershipLevel: membership && membership.level,\n initializingEntityPage,\n hasCompetitionEnded: selectors.hasCompetitionEnded(state),\n canJoin: selectors.canJoinCurrentEntity(state, ownProps)\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializeEntityPage: actions.initializeEntityPage,\n joinTeam: actions.joinTeam,\n deleteTeam: actions.deleteTeam,\n deleteEntityMembership: actions.deleteEntityMembership\n}, dispatch);\n\nexport default asPage({ requiresCompetitionStart: true, requiresCompetitionVerification: true, isGrey: true })(compose(\n withRouter,\n withLocalization('entity'),\n connect(mapStateToProps, mapDispatchToProps)\n)(EntityPage));\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport { Entity, CompetitionEntity, CompetitionEntityScore } from '../../userApi';\nimport { State } from '../../redux/state';\nimport { connect } from 'react-redux';\nimport * as selectors from '../../redux/selectors';\nimport logger from '../../utils/logger';\n\ninterface ManualProps {\n entity: Entity;\n}\n\ninterface Props extends ManualProps {\n competitionEntity: CompetitionEntity;\n competitionEntityScore: CompetitionEntityScore;\n rank: number;\n}\n\nconst getRankLabel = (entity: Entity) => {\n switch (entity.type) {\n case Entity.TypeEnum.Team:\n return 'Team Rank';\n case Entity.TypeEnum.University:\n return 'University Rank';\n case Entity.TypeEnum.HealthFacility:\n return 'Health Systems Rank';\n default:\n logger.error(new Error(`Received unexpected Entity type '${entity.type}'.`));\n return 'Rank';\n }\n};\n\nconst EntityStats = ({ entity, competitionEntity, competitionEntityScore, t, formatNumber, rank }: LProps) => (\n
\n
\n
{t('Points')}
\n
{formatNumber(competitionEntityScore.points, 0)}
\n
\n {/*{(rank || '') &&
\n
{t(getRankLabel(entity))}
\n
{formatNumber(rank, 0)}
\n
} Gets rid of the rank on entity page.*/}\n
\n
{t('Actions')}
\n
{formatNumber(competitionEntity.pledgeCount, 0)}
\n
\n
\n 2 reduced')\n }}\n />\n
{formatNumber(competitionEntityScore.savingsCO2Lbs, 0)}
\n
\n
\n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n competitionEntity: state.competitionEntities[ownProps.entity.id],\n competitionEntityScore: selectors.entityScore(state, ownProps),\n rank: selectors.entityRank(state, ownProps)\n});\n\nexport default compose(\n withLocalization('entity'),\n connect(mapStateToProps)\n)(EntityStats) as React.SFC;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { CompetitionEntityScore, CompetitionUserScore, Entity } from '../../userApi';\nimport ScoreboardParticipants from '../../shared/ScoreboardParticipants';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport ScoreboardTeams from '../../shared/ScoreboardTeams';\nimport { makeCompetitionUserScoresForEntityPath } from '../../utils/routerHelper';\n\ninterface ManualProps {\n entity: Entity;\n}\n\ninterface Props extends ManualProps {\n topSubEntityScores: CompetitionEntityScore[];\n topUserScores: CompetitionUserScore[];\n competitionID: number;\n}\n\nenum ScoreboardView {\n Participants = 'participants',\n Teams = 'teams'\n}\n\ninterface ScoreboardState {\n scoreboardView: ScoreboardView;\n}\n\nclass Scoreboard extends React.Component, ScoreboardState> {\n public state = { scoreboardView: ScoreboardView.Participants };\n\n public render() {\n const { scoreboardView } = this.state;\n const { topSubEntityScores, topUserScores, t, entity, competitionID } = this.props;\n return (\n
\n
\n
{t('Scoreboard')}
\n
\n this.setState({ scoreboardView: ScoreboardView.Participants })}\n >{t('Participants')}
\n {(topSubEntityScores && entity.type !== Entity.TypeEnum.Team) &&\n this.setState({ scoreboardView: ScoreboardView.Teams })}\n >{t('Teams')}
\n }\n
\n
\n {scoreboardView === ScoreboardView.Teams &&\n \n }\n {scoreboardView === ScoreboardView.Participants &&\n \n }\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n topSubEntityScores: state.entityTopSubentityScores && state.entityTopSubentityScores[ownProps.entity.id],\n topUserScores: state.entityTopUserScores[ownProps.entity.id],\n competitionID: state.competition.id\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('entity')\n)(Scoreboard) as React.ComponentClass;\n","import * as React from 'react';\nimport { withRouter, RouterProps } from 'react-router';\nimport { History } from 'history';\nimport { Alert } from 'reactstrap';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Link } from 'react-router-dom';\nimport { isEmpty } from 'lodash';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport actions from '../../redux/actions';\nimport * as selectors from '../../redux/selectors';\nimport { withLocalization, LProps } from '../../utils/wrappers';\nimport { CompetitionPledge, CompetitionPledgeCategory, CompetitionUserScore, Entities, CompetitionEntityPledge } from '../../userApi';\nimport { StyleState } from '../../utils/styles';\nimport Stories from '../../shared/Stories';\nimport { makePledgeCategoryPath, Routes, getPledgeParams } from '../../utils/routerHelper';\nimport ScoreboardParticipants from '../../shared/ScoreboardParticipants';\nimport Footer from '../../shared/Footer';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { WaitingWhiteBox, WaitingPageContent } from '../../shared/WaitingPage';\nimport CompetitionEntityPledges from './CompetitionEntityPledges';\nimport PledgeStats from './PledgeStats';\nimport { estimatePointsAvailable, CompetitionPledges } from '../../utils/userApiHelper';\n\ninterface Props {\n initializePledgePage: (history: History) => void;\n pointsAvailable: number;\n pledgeID: number;\n completions: number;\n pointsEarned: number;\n initializingPledgePage: boolean;\n pledge: CompetitionPledge;\n pledgeCategory: CompetitionPledgeCategory;\n lastUsersToVerify: CompetitionUserScore[];\n competitionEntityPledges: CompetitionEntityPledge[];\n entities: Entities;\n}\nenum MobileSection {\n INFO = 1,\n ACTIVITY = 2\n}\n\ninterface PledgeState {\n mobileSection: number;\n}\n\nconst initialState: PledgeState = {\n mobileSection: MobileSection.INFO\n};\n\nconst didPledgeIDUpdate = (nextProps: LProps, props: LProps) => {\n if (!props.pledge) return false;\n return props.pledgeID !== nextProps.pledgeID && !isNaN(nextProps.pledgeID);\n};\n\nconst someDescriptionContent = (pledge: CompetitionPledge) => {\n return Boolean(pledge.description) || Boolean(pledge.assumptions) || !isEmpty(pledge.learnMoreLinks);\n};\n\nclass PledgePage extends React.Component & RouterProps, PledgeState> {\n public state = initialState;\n\n public componentWillMount() {\n const { initializePledgePage, history } = this.props;\n initializePledgePage(history);\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n if (didPledgeIDUpdate(nextProps, this.props)) {\n const { initializePledgePage, history } = this.props;\n initializePledgePage(history);\n }\n }\n\n public render() {\n const {\n t, pledge, pledgeCategory, lastUsersToVerify, initializingPledgePage,\n pointsAvailable, completions, pointsEarned\n } = this.props;\n if (initializingPledgePage) {\n return ;\n }\n return (\n
\n
\n {!pledge &&\n {t('We could not find the requested competition pledge.')}\n }\n
\n
\n
\n

{pledge.shortTitle}

\n {pointsAvailable === 0 &&\n

\n {t('action \n {t('Complete')}\n

\n }\n
\n {pledgeCategory &&\n
\n {pledgeCategory.name}\n
\n }\n \n {someDescriptionContent(pledge) &&\n
\n {pledge.description &&
{t('Description')}
}\n {pledge.description &&
{pledge.description}
}\n {pledge.assumptions &&\n
\n
\n
{t('Assumptions')}
\n
{pledge.assumptions}
\n
\n }\n {(pledge.learnMoreLinks && pledge.learnMoreLinks.length > 0) &&\n
\n
{t('Learn More')}
\n \n\n
\n }\n
\n }\n {(!initializingPledgePage && lastUsersToVerify && lastUsersToVerify.length > 0) &&\n
\n
{t('Last users to verify this action')}
\n
\n \n
\n
\n }\n {!initializingPledgePage && }\n {initializingPledgePage && }\n
\n
\n
\n {!initializingPledgePage &&\n \n }\n {initializingPledgePage &&\n \n }\n
\n
\n
\n
\n
this.selectSection(MobileSection.INFO)}>\n Info\n
\n
this.selectSection(MobileSection.ACTIVITY)}>\n Activity\n
\n
\n
\n );\n }\n private getActiveClass(index: number) {\n return (index & this.state.mobileSection) === this.state.mobileSection ? 'cc__mobile_show' : 'cc__mobile_hide';\n }\n private getActiveTextClass(index: number) {\n return (index & this.state.mobileSection) === this.state.mobileSection ? 'active' : '';\n }\n private selectSection(index: number) {\n this.setState({\n mobileSection: index\n });\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const initializingPledgePage = state.pendingRoute === Routes.Pledge;\n if (initializingPledgePage) {\n return {\n initializingPledgePage\n };\n }\n const pledgeID = getPledgeParams(ownProps.history.location, ownProps.i18n).competitionPledgeID;\n const pledge = selectors.currentPledge(state, ownProps);\n if (!pledge) return { initializingPledgePage: true, pledgeID };\n return {\n pledgeID,\n pledge,\n completions: state.userPledgeCompletions[pledge.id] || 0,\n pointsEarned: state.userPledgePoints[pledge.id] || 0,\n pointsAvailable: estimatePointsAvailable(state.userPledgeCompletions, pledge),\n pledgeCategory: selectors.currentPledgeCategory(state, ownProps),\n lastUsersToVerify: selectors.lastUsersToVerify(state, ownProps),\n entities: selectors.getEntitiesWithCompetitionEntityPledges(state, ownProps)\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n initializePledgePage: actions.initializePledgePage\n}, dispatch);\n\nexport default asPage({ isGrey: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withRouter,\n withLocalization('pledge'),\n connect(mapStateToProps, mapDispatchToProps)\n)(PledgePage));\n","import * as React from 'react';\nimport { values, has } from 'lodash';\nimport { State } from '../../redux/state';\nimport CompetitionEntityPledgeContent from './CompetitionEntityPledge';\nimport { isAtLeastAcceptedAdmin } from '../../redux/selectors';\nimport { CompetitionPledge, Entity } from '../../userApi';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\ninterface ManualProps {\n pledge: CompetitionPledge;\n}\n\ninterface Props extends ManualProps {\n entities: Entity[];\n}\n\nconst CompetitionEntityPledges = ({\n entities, pledge\n}: Props) => (\n
\n {entities.map((entity) => (\n \n ))}\n
\n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => {\n const { competitionEntityPledges } = state;\n // get all entities where user is admin or there is CompetitionEntityPledge content.\n const entities = values(state.entities)\n .filter((entity) =>\n isAtLeastAcceptedAdmin(state, { entity }) || has(competitionEntityPledges[ownProps.pledge.id], entity.id)\n );\n return {\n entities\n };\n};\n\nexport default compose(\n connect(mapStateToProps)\n)(CompetitionEntityPledges) as React.ComponentClass;\n","import * as React from 'react';\nimport EntityIdentity from '../../shared/EntityIdentity';\nimport { Entity, CompetitionEntityPledge, Competition, CompetitionPledge } from '../../userApi';\nimport SafeHTML from '../../shared/SafeHtml';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { Button } from 'reactstrap';\nimport { State } from '../../redux/state';\nimport * as selectors from '../../redux/selectors';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { patch } from '../../redux/actions/all';\nimport { connect } from 'react-redux';\nimport CompetitionEntityPledgeForm from './CompetitionEntityPledgeForm';\n\ninterface ManualProps {\n entity: Entity;\n pledge: CompetitionPledge;\n}\n\ninterface Props extends ManualProps {\n isEntityAdmin: boolean;\n competitionEntityPledge: CompetitionEntityPledge;\n competition: Competition;\n editing: boolean;\n edit: () => void;\n}\n\nconst makeNewCompetitionEntityPledge = (entity: Entity, pledge: CompetitionPledge) => ({\n id: 0,\n entityID: entity.id,\n competitionPledgeID: pledge.id\n});\n\nconst CompetitionEntityPledgeContent = ({\n entity, isEntityAdmin, competitionEntityPledge, competition, t,\n edit, editing, pledge\n}: LProps) => (\n
\n \n {(() => {\n if (editing) {\n return (\n \n );\n } else if (!competitionEntityPledge && isEntityAdmin) {\n return (\n
\n {t('As an admin, you can share content with your members here.')}
\n {t('Get started')} \n
\n );\n } else {\n return (\n
\n \n {isEntityAdmin &&\n
\n {t('Edit')} \n
\n }\n
\n );\n }\n })()}\n
\n);\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => ({\n competitionEntityPledge: selectors.getCompetitionEntityPledge(state, ownProps),\n competition: state.competition,\n isEntityAdmin: selectors.isAtLeastAcceptedAdmin(state, ownProps),\n editing: state.editingCompetitionEntityPledgeEntityID === ownProps.entity.id\n});\nconst mapDispatchToProps = (dispatch: Dispatch, ownProps: LProps): Partial => bindActionCreators({\n edit: () => patch({ editingCompetitionEntityPledgeEntityID: ownProps.entity.id })\n}, dispatch);\n\nexport default compose(\n withLocalization('pledge'),\n connect(mapStateToProps, mapDispatchToProps)\n)(CompetitionEntityPledgeContent) as React.SFC;\n","import * as React from 'react';\nimport { CompetitionEntityPledge } from '../../userApi';\nimport MarkdownEditor from '../../shared/MarkdownEditor';\nimport { Button } from 'reactstrap';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { patch } from '../../redux/actions/all';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { State } from '../../redux/state';\nimport { connect } from 'react-redux';\nimport actions from '../../redux/actions';\n\ninterface ManualProps {\n competitionEntityPledge: Partial;\n}\n\ninterface Props extends ManualProps {\n save: (cep: CompetitionEntityPledge) => void;\n destroy: () => void;\n cancel: () => void;\n}\n\ninterface CompetitionEntityPledgeFormState {\n form: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: CompetitionEntityPledgeFormState = {\n form: { contentMD: '' },\n dirty: {},\n submitted: false\n};\n\nclass CompetitionEntityPledgeForm extends React.Component, CompetitionEntityPledgeFormState> {\n public state = initialState;\n\n public componentWillMount() {\n const { competitionEntityPledge } = this.props;\n this.setState({\n form: { ...initialState.form, ...competitionEntityPledge }\n });\n }\n\n private update(update: Partial) {\n this.setState(update as CompetitionEntityPledgeFormState);\n }\n\n public render() {\n const { form } = this.state;\n const { t, save, destroy, cancel } = this.props;\n return (\n
\n this.update({ form: { ...form, contentMD: markdown.slice(0, 1000) } })}\n />\n
\n save(form)}\n >{t('Save')}\n {t('Cancel')}\n {form.id !== 0 &&\n \n }\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (_state: State, _ownProps: LProps): Partial => ({});\nconst mapDispatchToProps = (dispatch: Dispatch, ownProps: LProps): Partial => bindActionCreators({\n cancel: () => patch({ editingCompetitionEntityPledgeEntityID: 0 }),\n save: (cep: CompetitionEntityPledge) => actions.saveCompetitionEntityPledge(cep),\n destroy: () => actions.destroyCompetitionEntityPledge(ownProps.competitionEntityPledge)\n}, dispatch);\n\nexport default compose(\n withLocalization('pledge'),\n connect(mapStateToProps, mapDispatchToProps)\n)(CompetitionEntityPledgeForm) as React.SFC;\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { withLocalization, LProps } from '../../utils/wrappers';\nimport { CompetitionPledge } from '../../userApi';\n\ninterface Props {\n pledge: CompetitionPledge;\n completions: number;\n pointsEarned: number;\n}\n\nconst PledgeStats = ({\n t, formatNumber, pledge, completions, pointsEarned\n}: LProps) => (\n
\n
\n
{t('Baseline Points')}
\n
{formatNumber(pledge.points, 0)}
\n
\n {Boolean(pledge.savingsCO2Lbs) &&\n
\n 2 savings')\n }}\n />\n
{formatNumber(pledge.savingsCO2Lbs, 0)}
\n
\n }\n
\n
{t('Completions')}
\n
{formatNumber(completions, 0)} / {pledge.repeats}
\n
\n {Boolean(pointsEarned) &&\n
\n
{t('Points Earned')}
\n
{formatNumber(pointsEarned, 0)}
\n
\n }\n
\n);\n\nexport default compose(\n withLocalization('userStats')\n)(PledgeStats) as React.FunctionComponent;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { UserRead, Competition, Entity, CompetitionUserScore, CompetitionScoreLevel } from '../../userApi';\nimport { State } from '../../redux/state';\nimport * as selectors from '../../redux/selectors';\nimport actions from '../../redux/actions';\nimport { LProps, RouterProps, withLocalization } from '../../utils/wrappers';\nimport UserHeader from '../../shared/UserHeader';\nimport UserStats from '../../shared/UserStats';\nimport UserScoreLevel from '../../shared/UserScoreLevel';\nimport Scoreboard from '../../shared/Scoreboard';\nimport Stories from '../../shared/Stories';\nimport Footer from '../../shared/Footer';\nimport { Routes, getUserParams } from '../../utils/routerHelper';\nimport { withRouter } from 'react-router';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { Button } from 'reactstrap';\n\ninterface Props {\n userID: number;\n user: UserRead;\n competition: Competition;\n university: Entity;\n team: Entity;\n healthFacility: Entity;\n score: CompetitionUserScore;\n universityRank: number;\n pledgeCompletions: number;\n scoreLevel: CompetitionScoreLevel;\n nextScoreLevel: CompetitionScoreLevel;\n initializingUserProfile: boolean;\n highlightable: boolean;\n highlightAHero: (userID: number) => void;\n initializeUserPage: () => void;\n}\n\ninterface UserProfileState {\n mobileSection: number;\n}\n\nenum MobileSection {\n ACCOUNT = 1,\n STORIES = 2,\n STATS = 4\n}\n\nconst initialState: UserProfileState = {\n mobileSection: MobileSection.ACCOUNT\n};\n\nconst didUserIDUpdate = (nextProps: LProps, props: LProps) => nextProps.userID !== props.userID && !isNaN(nextProps.userID);\n\nclass UserProfile extends React.Component, UserProfileState> {\n public state = initialState;\n\n public componentWillMount() {\n const { initializeUserPage } = this.props;\n initializeUserPage();\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n if (didUserIDUpdate(nextProps, this.props)) {\n this.props.initializeUserPage();\n }\n }\n\n public render() {\n const {\n user, competition, university, healthFacility, team, score,\n universityRank, pledgeCompletions, scoreLevel, nextScoreLevel,\n initializingUserProfile, t, highlightAHero, highlightable\n } = this.props;\n return (\n \n
\n
\n {user &&\n
\n \n {highlightable &&\n
\n highlightAHero(user.id)}\n >{t('Highlight as Hero')}\n
\n }\n
\n\n }\n {(!initializingUserProfile && score) &&\n \n }\n {score &&\n \n }\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
this.selectSection(MobileSection.STORIES)}>\n \n
\n
this.selectSection(MobileSection.ACCOUNT)}>\n \n
\n
this.selectSection(MobileSection.STATS)}>\n \n
\n
\n \n );\n }\n private selectSection(index: number) {\n this.setState({\n mobileSection: index\n });\n }\n\n private getActiveClass(index: number) {\n return (index & this.state.mobileSection) === this.state.mobileSection ? 'cc__mobile_show' : 'cc__mobile_hide';\n }\n\n private getSrc(index: number, image: string) {\n const selected = index === this.state.mobileSection ? '-selected' : '';\n return `/assets/dashboard/mobile/${image}${selected}.png`;\n }\n\n private getSrcSet(index: number, image: string) {\n const selected = index === this.state.mobileSection ? '-selected' : '';\n return `/assets/dashboard/mobile/${image}${selected}@2x.png 2x,\n /assets/dashboard/mobile/${image}${selected}@3x.png 3x`;\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps>): Partial => { \n const initializingUserProfile = state.pendingRoute === Routes.User;\n const { userID } = getUserParams(ownProps.history.location, ownProps.i18n);\n let user: UserRead;\n if (!initializingUserProfile && userID) {\n user = selectors.profileUser(state);\n }\n const university = selectors.acceptedUniversity(state, userID);\n const healthFacility = selectors.acceptedHealthFacility(state, userID);\n return {\n userID,\n university,\n team: selectors.acceptedTeam(state, userID),\n healthFacility,\n user,\n competition: state.competition,\n score: state.competitionUserScores[userID],\n scoreLevel: selectors.getScoreLevel(state, userID),\n nextScoreLevel: selectors.getNextScoreLevel(state, userID),\n universityRank: selectors.universityRank(state),// !initializingUserProfile && university && state.profileEntityRanks[university.id],\n pledgeCompletions: !initializingUserProfile && selectors.profileTotalPledges(state),\n initializingUserProfile,\n highlightable: Boolean(state.user) && state.user.id !== userID\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n initializeUserPage: actions.initializeUserPage,\n highlightAHero: actions.highlightHero\n}, dispatch);\n\nexport default asPage({ isGrey: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withRouter,\n withLocalization('userProfile'),\n connect(mapStateToProps, mapDispatchToProps)\n)(UserProfile));\n","import * as React from 'react';\nimport { Switch, Route } from 'react-router';\nimport { Routes, makePathnames } from '../../utils/routerHelper';\nimport UserUpdate from './UserUpdate';\nimport UserEmailForm from './UserEmailForm';\nimport NavBar from '../../shared/NavBar';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { compose } from 'redux';\nimport { withLocalization, LProps } from '../../utils/wrappers';\nimport RouteLink from '../../shared/RouteLink';\n\nconst UpdateUser = ({\n t\n}: LProps<{}>) => {\n const paths = makePathnames(t);\n return (\n
\n \n
\n

{t('Account')}

\n
\n {t('Profile')}\n {t('Email')}\n
\n
\n
\n \n \n \n \n
\n
\n );\n};\n\n// const mapStateToProps = (state: State, _props: {}) => ({});\n// const mapDispatchToProps = (dispatch: Dispatch, _props: Props): Partial => bindActionCreators({}, dispatch);\n\nexport default asPage({ raw: true })(compose(\n withLocalization('account')\n // connect(mapStateToProps, mapDispatchToProps)\n)(UpdateUser));\n","import * as React from 'react';\nimport up from 'updeep';\nimport { compose, Dispatch } from 'redux';\nimport { isEmpty } from 'lodash';\nimport { Input, FormGroup, Button, FormFeedback, Label, Collapse } from 'reactstrap';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { State, Modals } from '../../redux/state';\nimport actions, { bindActionCreators } from '../../redux/actions';\nimport { connect } from 'react-redux';\nimport { UserUpdateErrors, makeUserUpdateErrors, UserUpdateForm, userUpdateVEMessages } from '../../utils/forms';\nimport Radio from '../../shared/Radio';\nimport { UserType, Competition, UserRead, UserWrite, ValidationErrors, ValidationError, removeVEForField, matchesErrorCode } from '../../userApi';\nimport ImageUploader from '../../shared/ImageUploader/ImageUploader';\nimport ConfirmModal from './ConfirmModal';\nimport { validatePassword } from '../../utils/validations';\nimport { userReadToWrite } from '../../utils/userApiHelper';\nimport { Patch } from '../../redux/actions/all';\nimport * as selectors from '../../redux/selectors';\nimport { uuid } from '../../utils/uuid';\nimport Checkbox from '../../shared/Checkbox';\nimport ConfirmDeleteModal from './ConfirmDeleteModal';\n\ninterface Props {\n user: UserRead;\n validationErrors: ValidationErrors;\n competition: Competition;\n modal: Modals;\n savedUserUpdateID: string;\n isUsersDeletePasswordIncorrect: boolean;\n canSetHealthSystemsEmployee: boolean;\n removeUserUpdateVE: (code: ValidationError.CodeEnum) => void;\n removeUserDeleteVE: (code: ValidationError.CodeEnum) => void;\n putUser: (userUpdateForm: UserUpdateForm, inputID: string, userUpdateID: string) => void;\n deleteUser: (password: string) => void;\n setModal: (modal: Modals) => void;\n closeModal: () => void;\n patch: Patch;\n}\n\nconst fileInputID = 'user_update_form__profile_image__input';\n\ninterface UserUpdateState {\n user: Partial;\n newPassword: string;\n confirmNewPassword: string;\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n changingPassword: boolean;\n}\n\nconst initialState: Partial = {\n user: { options: {} },\n errors: {},\n dirty: {},\n submitted: false,\n newPassword: undefined,\n confirmNewPassword: undefined\n};\n\nclass UserUpdate extends React.Component, UserUpdateState> {\n public state = initialState as UserUpdateState;\n private id = uuid();\n\n public componentWillMount() {\n const { user } = this.props;\n this.setState({\n user: { ...initialState.user, ...userReadToWrite(user) }\n });\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { user, t } = this.props;\n if (user.profilePhoto !== nextProps.user.profilePhoto) {\n // In this scenario, the photo was saved and\n // updated user.profilePhoto in state, but the user update failed to save.\n this.setState({\n user: { ...this.state.user, profilePhoto: nextProps.user.profilePhoto }\n });\n }\n const { validationErrors } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const errors = makeUserUpdateErrors(this.state, nextProps.validationErrors, t);\n this.setState({ errors });\n }\n\n if (nextProps.savedUserUpdateID === this.id) {\n this.clear(nextProps);\n this.id = uuid();\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n if (validate) {\n const errors = makeUserUpdateErrors(this.state, validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as UserUpdateState);\n }\n\n private markDirty(field: string) {\n const { validationErrors, t, patch } = this.props;\n const dirty = { ...this.state.dirty, [field]: true };\n if (field === 'newPassword') {\n dirty.confirmNewPassword = true;\n }\n let ve = validationErrors;\n if (userUpdateVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, userUpdateVEMessages);\n patch({ loginVE: up.constant(ve) });\n }\n\n const update: Partial = { dirty };\n const errors = makeUserUpdateErrors({ ...this.state, dirty }, validationErrors, t);\n update.errors = errors;\n this.setState(update as UserUpdateState);\n }\n\n private submit() {\n const { setModal, validationErrors, t } = this.props;\n const submitted = true;\n const errors = makeUserUpdateErrors({ ...this.state, submitted }, validationErrors, t);\n\n this.setState({ errors, submitted });\n if (isEmpty(errors)) {\n setModal(Modals.UserUpdatePassword);\n }\n }\n\n private clear(props: LProps) {\n const { user } = props;\n this.setState({\n ...initialState,\n user: userReadToWrite(user)\n } as UserUpdateState);\n }\n\n private toggleChangePassword() {\n const { changingPassword, errors, dirty } = this.state;\n if (changingPassword) {\n delete dirty.newPassword;\n delete errors.newPassword;\n delete dirty.confirmNewPassword;\n delete errors.confirmNewPassword;\n this.setState({\n changingPassword: false, errors, dirty,\n newPassword: undefined, confirmNewPassword: undefined\n });\n } else {\n this.setState({ changingPassword: true });\n }\n }\n\n public render() {\n const {\n putUser, removeUserUpdateVE, removeUserDeleteVE,\n closeModal, modal, deleteUser, isUsersDeletePasswordIncorrect,\n t, setModal, canSetHealthSystemsEmployee\n } = this.props;\n const { user, errors, newPassword, confirmNewPassword, changingPassword } = this.state;\n const isNewPasswordValid = validatePassword(newPassword) as boolean;\n return (\n
\n {/** The display: 'flex' is to fix an issue on desktop where the .ReactCrop element stretches the width of the container. */}\n
\n this.update({ user: { ...user, profilePhoto: '' } })}\n />\n
\n \n \n this.update({ user: up({ firstName: e.target.value }, this.state.user) })}\n onBlur={() => this.markDirty('firstName')}\n />\n {errors.firstName && {errors.firstName}}\n \n \n \n this.update({ user: up({ lastName: e.target.value }, this.state.user) })}\n onBlur={() => this.markDirty('lastName')}\n />\n {errors.lastName && {errors.lastName}}\n \n
\n this.toggleChangePassword()}\n >{changingPassword ? t('Cancel') : t('Update password')}
\n \n
\n \n \n this.markDirty('newPassword')}\n onChange={(e) => this.update({ newPassword: e.target.value })}\n />\n {errors.newPassword && {errors.newPassword}}\n \n \n \n this.update({ confirmNewPassword: e.target.value }, true)}\n onBlur={() => this.markDirty('confirmNewPassword')}\n autoComplete={'off'}\n />\n {errors.confirmNewPassword && {errors.confirmNewPassword}}\n \n
\n
\n
\n \n
\n this.update({ user: { ...user, type: userType as any } })}\n >{t('Student')}  \n this.update({ user: { ...user, type: userType as any } })}\n >{t('Faculty')}  \n this.update({ user: { ...user, type: userType as any } })}\n >{t('Staff')}  \n \n {canSetHealthSystemsEmployee &&\n \n this.update({ user: { ...user, options: { ...user.options, isHealthFacilityEmployee: checked } } })}\n >\n {t('I am a UC Health System employee')}\n \n \n }\n \n this.update({ user: { ...user, options: { ...user.options, isLabUser: checked } } })}\n >\n {t('I am a lab user')}\n \n \n
\n this.submit()}\n >{t('Update')}\n this.clear(this.props)}\n >{t('Cancel')}\n setModal(Modals.UserDeletePassword)}\n >{t('Delete Account')}\n
\n {modal === Modals.UserUpdatePassword &&\n putUser({ password, ...this.state }, fileInputID, this.id)}\n error={errors.password}\n removeUserUpdateVE={removeUserUpdateVE}\n />\n }\n {modal === Modals.UserDeletePassword &&\n \n }\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, _props: {}): Partial => ({\n competition: state.competition,\n modal: state.modal,\n user: state.user,\n validationErrors: state.userUpdateVE,\n isUsersDeletePasswordIncorrect: state.userDeleteVE && state.userDeleteVE.some(matchesErrorCode(ValidationError.CodeEnum.ErrPasswordIncorrect)),\n savedUserUpdateID: state.savedUserUpdateID,\n canSetHealthSystemsEmployee: selectors.canSetHealthSystemsEmployee(state)\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch, _props: {}): Partial =>\n bindActionCreators({\n putUser: actions.putUser,\n deleteUser: actions.deleteUser,\n setModal: actions.setModal,\n closeModal: actions.closeModal,\n removeUserUpdateVE: actions.removeUserUpdateVE,\n removeUserDeleteVE: actions.removeUserDeleteVE,\n patch: actions.patch\n }, dispatch);\n\nexport default compose(\n withLocalization('updateUser'),\n connect(mapStateToProps, mapDispatchToProps)\n)(UserUpdate);\n","import * as React from 'react';\nimport { Modal, ModalBody, ModalHeader, ModalFooter, Button, Input, FormGroup, FormFeedback } from 'reactstrap';\nimport { TranslationFunction } from 'i18next';\nimport { ValidationError } from '../../userApi';\n\ninterface Props {\n show: boolean;\n t: TranslationFunction;\n error: string;\n removeUserUpdateVE: (code: ValidationError.CodeEnum) => void;\n close: () => void;\n confirm: (password: string) => void;\n}\n\ninterface ConfirmModalState {\n password: string;\n}\n\nclass ConfirmModal extends React.Component {\n public state = { password: '' };\n\n public render() {\n const { password } = this.state;\n const { show, t, error, confirm, close, removeUserUpdateVE } = this.props;\n return (\n \n {t('Please confirm your current password')}\n \n \n this.setState({ password: e.target.value })}\n onBlur={() => removeUserUpdateVE(ValidationError.CodeEnum.ErrPasswordIncorrect)}\n autoComplete={'off'}\n />\n {error && {error}}\n \n \n \n confirm(password)}\n >{t('Confirm')}\n \n \n \n );\n }\n}\n\nexport default (ConfirmModal);\n","import * as React from 'react';\nimport { Modal, ModalBody, ModalHeader, ModalFooter, Button, Input, FormGroup, FormFeedback } from 'reactstrap';\nimport { TranslationFunction } from 'i18next';\nimport { ValidationError } from '../../userApi';\n\ninterface Props {\n show: boolean;\n t: TranslationFunction;\n isPasswordInvalid: boolean;\n removeUserDeleteVE: (code: ValidationError.CodeEnum) => void;\n close: () => void;\n confirm: (password: string) => void;\n}\n\ninterface ConfirmDeleteModalState {\n password: string;\n}\n\nclass ConfirmDeleteModal extends React.Component {\n public state = { password: '' };\n\n public render() {\n const { password } = this.state;\n const { show, t, isPasswordInvalid, confirm, close, removeUserDeleteVE } = this.props;\n return (\n \n {t('Please confirm your password')}\n \n \n this.setState({ password: e.target.value })}\n onBlur={() => removeUserDeleteVE(ValidationError.CodeEnum.ErrPasswordIncorrect)}\n autoComplete={'off'}\n />\n {isPasswordInvalid && {t('Password is incorrect')}}\n \n \n \n confirm(password)}\n >{t('Confirm')}\n \n \n \n );\n }\n}\n\nexport default (ConfirmDeleteModal);\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport up from 'updeep';\nimport { connect } from 'react-redux';\nimport * as moment from 'moment';\nimport { isEmpty, trim } from 'lodash';\nimport { Table, Button, FormText, Input, FormGroup, FormFeedback } from 'reactstrap';\nimport { State, Modals } from '../../redux/state';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport actions from '../../redux/actions';\nimport * as selectors from '../../redux/selectors';\nimport { UserEmail, UserEmails, UserRead, ValidationErrors, removeVEForField } from '../../userApi';\nimport { UserEmailErrors, makeUserEmailErrors, userEmailVEMessages } from '../../utils/forms';\nimport EntityEmailDomains from '../../shared/EntityEmailDomains';\nimport { Patch } from '../../redux/actions/all';\nimport LinkButton from '../../shared/LinkButton';\n\ninterface Props {\n userEmails: UserEmails;\n user: UserRead;\n validationErrors: ValidationErrors;\n onlyVerifiedCompetitionUserEmail: UserEmail;\n getAccountVerification: (userEmail: UserEmail) => void;\n deleteUserEmail: (userEmail: UserEmail) => void;\n makePrimaryUserEmail: (userEmail: UserEmail) => void;\n postUserEmail: (email: string) => void;\n openEntityEmailDomainModal: () => void;\n patch: Patch;\n}\n\nconst canDelete = (user: UserRead, userEmail: UserEmail, onlyVerifiedCompetitionUserEmail: UserEmail) => {\n // Primary email.\n if (userEmail.email === user.email) return false;\n // Multiple email addresses have been verified for competition.\n if (!onlyVerifiedCompetitionUserEmail) return true;\n return onlyVerifiedCompetitionUserEmail.id !== userEmail.id;\n};\n\nconst canResendVerification = (userEmail: UserEmail) =>\n moment(userEmail.verificationSentAt).add(moment.duration(5, 'minutes')).isBefore(moment());\n\ninterface UserEmailState {\n form: { email: string };\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: UserEmailState = {\n form: { email: '' },\n errors: {},\n dirty: {},\n submitted: false\n};\n\nconst newUserEmailSave = (nextProps: Props, props: Props) =>\n nextProps.userEmails.length === props.userEmails.length + 1;\n\nclass UserEmailForm extends React.Component, UserEmailState> {\n public state = initialState;\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { validationErrors, t } = this.props;\n if (nextProps.validationErrors !== validationErrors) {\n const { dirty, submitted, form } = this.state;\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, nextProps.validationErrors, t);\n this.setState({ errors });\n }\n if (newUserEmailSave(nextProps, this.props)) {\n this.setState(initialState);\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n const { dirty, submitted, form } = this.state;\n if (validate) {\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as UserEmailState);\n }\n\n private markDirty(field: string) {\n const { submitted, form } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const { validationErrors, t, patch } = this.props;\n let ve = validationErrors;\n if (userEmailVEMessages[field]) {\n ve = removeVEForField(field, validationErrors, userEmailVEMessages);\n patch({ userEmailVE: up.constant(ve) });\n }\n\n const update: Partial = { dirty };\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, ve, t);\n update.errors = errors;\n this.setState({ errors, dirty });\n }\n\n private submit() {\n const { postUserEmail, validationErrors, t } = this.props;\n const submitted = true;\n const { dirty, form } = this.state;\n const errors = makeUserEmailErrors({ dirty, submitted, ...form }, validationErrors, t);\n if (isEmpty(errors)) {\n postUserEmail(form.email);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const {\n t, getAccountVerification, userEmails,\n deleteUserEmail, makePrimaryUserEmail,\n user, onlyVerifiedCompetitionUserEmail,\n openEntityEmailDomainModal\n } = this.props;\n return (\n
\n \n \n \n \n \n \n \n \n \n \n {userEmails.map((userEmail) => (\n \n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n
{t('Email')}{t('Verified')}{t('Primary')}{t('Action')}
{userEmail.email}\n {userEmail.verified &&\n \n }\n {!userEmail.verified &&\n getAccountVerification(userEmail)}\n >\n }\n \n {\n userEmail.email === user.email ?\n () :\n ( makePrimaryUserEmail(userEmail)}\n >)\n }\n \n deleteUserEmail(userEmail)}\n >\n
\n \n this.update({ form: { ...form, email: trim(e.target.value || '').toLowerCase() } })}\n onBlur={() => this.markDirty('email')}\n />\n {errors.email && {errors.email}}\n \n \n \n this.submit()}\n >\n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: {}): Partial => ({\n userEmails: state.userEmails,\n onlyVerifiedCompetitionUserEmail: selectors.onlyVerifiedCompetitionUserEmail(state),\n user: state.user,\n validationErrors: state.userEmailVE\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n getAccountVerification: actions.getAccountVerification,\n deleteUserEmail: actions.deleteUserEmail,\n makePrimaryUserEmail: actions.makePrimaryUserEmail,\n postUserEmail: actions.postUserEmail,\n openEntityEmailDomainModal: () => actions.setModal(Modals.EntityEmailDomains),\n patch: actions.patch\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('userEmail')\n)(UserEmailForm) as React.ComponentClass;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { State, Modals } from '../redux/state';\nimport StoryComponent from '../shared/StoryComponent';\nimport { RouterProps, withRouter } from 'react-router';\nimport { getStoryParams } from '../utils/routerHelper';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { Story, CompetitionPledge, UserRead } from '../userApi';\nimport { makeStoryTitle } from '../utils/userApiHelper';\nimport actions from '../redux/actions';\nimport * as selectors from '../redux/selectors';\nimport SafeHTMLPageContent from '../shared/SafeHTMLPageContent';\nimport { asPage } from '../utils/wrappers/asPage';\nimport ConfirmDeleteModal from '../shared/ConfirmDeleteModal';\n\ninterface Props {\n story: Story;\n pledge: CompetitionPledge;\n title: string;\n creator: UserRead;\n modal: Modals;\n initializeStoryPage: () => void;\n deleteStory: () => void;\n closeConfirmStoryDelete: () => void;\n}\n\nclass StoryPage extends React.Component {\n\n public componentWillMount() {\n const { initializeStoryPage } = this.props;\n initializeStoryPage();\n }\n\n public render() {\n const {\n story, title, pledge, creator, modal, deleteStory, closeConfirmStoryDelete\n } = this.props;\n if (!story) return '';\n return (\n
\n {(!story.contentHTML || !pledge.canUseMarkdown) &&\n \n }\n {(story.contentHTML && pledge.canUseMarkdown) &&\n \n }\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const { storyID } = getStoryParams(ownProps.history.location, ownProps.i18n);\n if (isNaN(storyID)) return {};\n const story = state.stories.find((s) => s.id === storyID);\n if (!story) return {};\n const taggedUsers = selectors.taggedUsers(state, { story });\n const pledge = state.competitionPledges[story.competitionPledgeID];\n const creator = state.users[story.createdBy];\n return {\n modal: state.modal,\n creator,\n story,\n pledge,\n title: makeStoryTitle(story, pledge, taggedUsers, ownProps.t)\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: LProps) => bindActionCreators({\n initializeStoryPage: actions.initializeStoryPage,\n deleteStory: actions.deleteStory,\n closeConfirmStoryDelete: actions.closeConfirmStoryDelete\n}, dispatch);\n\nexport default asPage({ requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withRouter,\n withLocalization('story'),\n connect(mapStateToProps, mapDispatchToProps)\n)(StoryPage));\n","import * as React from 'react';\nimport EntityForm from '../../shared/EntityForm';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { Entity } from '../../userApi';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\nimport { State } from '../../redux/state';\nimport { Routes } from '../../utils/routerHelper';\nimport * as selectors from '../../redux/selectors';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport actions from '../../redux/actions';\nimport { connect } from 'react-redux';\nimport { Alert } from 'reactstrap';\nimport { LProps, withLocalization } from '../../utils/wrappers';\n\ninterface Props {\n university: Entity;\n initializing: boolean;\n hasCompetitionEnded: boolean;\n initialize: () => void;\n}\n\nconst newTeam: Partial = { id: 0, type: Entity.TypeEnum.Team };\n\nclass TeamsNewPage extends React.Component> {\n\n public componentWillMount() {\n this.props.initialize();\n }\n\n public render() {\n const { initializing, university, hasCompetitionEnded, t } = this.props;\n if (initializing) {\n return ;\n } else if (hasCompetitionEnded) {\n return {t('You cannot create a new team after the competition has ended.')};\n }\n return (\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: {}): Partial => ({\n initializing: state.pendingRoute === Routes.TeamsNew,\n university: selectors.userUniversity(state),\n hasCompetitionEnded: selectors.hasCompetitionEnded(state)\n});\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: {}) => bindActionCreators({\n initialize: actions.initializeTeamsNewPage\n}, dispatch);\n\nexport default asPage({ requiresUniversity: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(\n compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('teams')\n )(TeamsNewPage)\n);\n","import * as React from 'react';\nimport { isEmpty } from 'lodash';\nimport { SocialLinks } from '../userApi';\nimport { InputGroup, InputGroupAddon, Input, FormGroup, FormFeedback } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport SocialLinksBtnGroup from './SocialLinksBtnGroup';\nimport { compose } from 'redux';\nimport { SocialLinkErrors, processSocialLinks } from '../utils/forms/socialLinks';\n\ninterface ManualProps {\n socialLinks: SocialLinks;\n errors: SocialLinkErrors;\n onChange: (socialLinks: SocialLinks) => void;\n}\n\ninterface SocialLinksState {\n form: SocialLinks;\n}\n\nconst initialState: SocialLinksState = {\n form: {}\n};\n\nconst SocialLinkAddOn = ({ icon }: { icon: string }) =>\n;\n\nclass SocialLinksForm extends React.Component, SocialLinksState> {\n public state = initialState;\n\n public componentWillMount() {\n const { socialLinks } = this.props;\n this.setState({ form: (socialLinks || {}) });\n }\n\n private onChange() {\n const { onChange } = this.props;\n const { form } = this.state;\n this.setState({ form: processSocialLinks(form) }, () => {\n onChange(this.state.form);\n });\n }\n\n public render() {\n const { t, errors } = this.props;\n const { form } = this.state;\n return (\n
\n {!isEmpty(form) && }\n \n \n \n this.setState({ form: { ...form, website: e.target.value } })}\n onBlur={() => this.onChange()}\n />\n \n {errors.website && {errors.website}}\n \n \n \n \n this.setState({ form: { ...form, medium: e.target.value } })}\n onBlur={() => this.onChange()}\n />\n \n \n \n \n \n this.setState({ form: { ...form, facebook: e.target.value } })}\n onBlur={() => this.onChange()}\n />\n \n {errors.facebook && {errors.facebook}}\n \n \n \n \n this.setState({ form: { ...form, twitter: e.target.value } })}\n onBlur={() => this.onChange()}\n />\n \n \n \n \n \n this.setState({ form: { ...form, linkedin: e.target.value } })}\n onBlur={() => this.onChange()}\n />\n \n {errors.linkedin && {errors.linkedin}}\n \n \n \n \n this.setState({ form: { ...form, instagram: e.target.value } })}\n onBlur={() => this.onChange()}\n />\n \n \n
\n );\n }\n}\n\nexport default compose(\n withLocalization('socialLinks')\n)(SocialLinksForm) as React.SFC;\n","import * as React from 'react';\nimport EntityForm from '../../shared/EntityForm';\nimport { getEntityEditParams, Routes } from '../../utils/routerHelper';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { State } from '../../redux/state';\nimport { RouterProps, withRouter } from 'react-router';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { Entity } from '../../userApi';\nimport actions from '../../redux/actions';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\n\ninterface Props {\n entity: Entity;\n initializing: boolean;\n initialize: () => void;\n}\n\nclass EntityEditPage extends React.Component {\n\n public componentWillMount() {\n const { initialize } = this.props;\n initialize();\n }\n\n public render() {\n const { initializing, entity } = this.props;\n if (initializing) return ;\n return (\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, props: LProps): Partial => ({\n initializing: state.pendingRoute === Routes.BlogEntryEdit,\n entity: state.entities[getEntityEditParams(props.history.location, props.i18n).entityID]\n});\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: LProps) => bindActionCreators({\n initialize: actions.initializeEntityEditPage\n}, dispatch);\n\nexport default asPage({ authenticated: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withLocalization('editEntity'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(EntityEditPage));\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { RouterProps, withRouter } from 'react-router';\nimport { State } from '../../redux/state';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { Entity, Competition, CompetitionEntityScore } from '../../userApi';\nimport { makeSimpleRoutePath, Routes, makeEntityPath } from '../../utils/routerHelper';\nimport ScoreboardTeams from '../../shared/ScoreboardTeams';\nimport { teamScoresForUserUniversity, userTeam, userUniversity } from '../../redux/selectors';\nimport actions from '../../redux/actions';\nimport { ErrorNoTeamsForUniversity } from '../../shared/Errors';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { Button } from 'reactstrap';\nimport Footer from '../../shared/Footer';\nimport * as selectors from '../../redux/selectors';\n\ninterface Props {\n university: Entity;\n team: Entity;\n competition: Competition;\n teamScores: CompetitionEntityScore[];\n hasCompetitionEnded: boolean;\n initializeTeamsPage: () => void;\n}\n\nclass TeamsPage extends React.Component & RouterProps> {\n\n public componentWillMount() {\n const { initializeTeamsPage } = this.props;\n initializeTeamsPage();\n }\n\n public render() {\n const {\n team, t, competition, teamScores, history, hasCompetitionEnded\n } = this.props;\n return (\n
\n
\n {team &&\n
\n

{t('Your team')}

\n {team.name}\n
\n }\n {(!team && !hasCompetitionEnded) &&\n
\n

{t('No team yet?')}

\n history.push(makeSimpleRoutePath(Routes.TeamsNew, t))}\n >{t('Create a team')}\n

\n {t('Or choose from one of the featured teams or from the entire list to contribute your points.')}\n

\n
\n }\n
\n
\n
\n
\n {teamScores.length === 0 && }\n {teamScores.length > 0 &&\n
\n \n
\n }\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: LProps): Partial => ({\n teamScores: teamScoresForUserUniversity(state),\n competition: state.competition,\n team: userTeam(state),\n university: userUniversity(state),\n hasCompetitionEnded: selectors.hasCompetitionEnded(state)\n});\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: LProps): Partial => bindActionCreators({\n initializeTeamsPage: actions.initializeTeamsPage\n}, dispatch);\n\nexport default asPage({ requiresUniversity: true, isGrey: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withRouter,\n withLocalization('teams'),\n connect(mapStateToProps, mapDispatchToProps)\n)(TeamsPage));\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Entity, Competition, MembershipLevel } from '../../userApi';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport { withRouter, RouterProps } from 'react-router';\nimport actions from '../../redux/actions';\nimport { makeEntityPath, getEntityBlogParams, makeBlogEntryNewPath } from '../../utils/routerHelper';\nimport { atLeastSuperadmin } from '../../utils/userApiHelper';\nimport { Link } from 'react-router-dom';\nimport BlogEntries from '../../shared/BlogEntries';\nimport { Button } from 'reactstrap';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport WaitingPage, { WaitingPageContent } from '../../shared/WaitingPage';\nimport { PageContentWithBanner, PageContent } from '../../shared/Page';\nimport CompetitionAboutText from '../About/CompetitionAboutText';\n\ninterface Props {\n entity: Entity;\n membershipLevel: MembershipLevel;\n competition: Competition;\n initializeEntityBlogPage: () => void;\n}\n\nclass EntityBlogPage extends React.Component & RouterProps> {\n public componentWillMount() {\n const { initializeEntityBlogPage } = this.props;\n initializeEntityBlogPage();\n }\n\n public render() {\n const {\n t, entity, competition, membershipLevel, history\n } = this.props;\n if (!entity) {\n return ();\n }\n const Container = entity.bannerPhoto ? PageContentWithBanner : PageContent;\n const containerProps = { bannerURL: entity.bannerPhoto, alt: entity.name };\n return (\n \n
\n
\n
\n {entity.photo &&\n
\n {entity.name}\n
\n }\n
\n
{entity.name}
\n {t('Home')}
\n {atLeastSuperadmin(membershipLevel) &&\n history.push(makeBlogEntryNewPath(entity.id, t))}\n >{t('New')} \n }\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const params = getEntityBlogParams(ownProps.history.location, ownProps.i18n);\n if (!params.entityID) return {};\n const entity = state.entities[params.entityID];\n const membership = state.userMemberships[entity.id];\n return {\n entity,\n membershipLevel: membership && membership.level,\n competition: state.competition\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializeEntityBlogPage: actions.initializeEntityBlogPage\n}, dispatch);\n\nexport default asPage({ raw: true })(compose(\n withRouter,\n withLocalization('blogEntry'),\n connect(mapStateToProps, mapDispatchToProps)\n)(EntityBlogPage));\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { BlogEntry, Entity, MembershipLevel } from '../../userApi';\nimport { connect } from 'react-redux';\nimport { State, Modals } from '../../redux/state';\nimport { RouterProps, withRouter } from 'react-router';\nimport actions from '../../redux/actions';\nimport { Routes, getBlogEntryParams, makeBlogEntryEditPath, makeEntityBlogPath, makeBlogEntryPath, makeSimpleRoutePath } from '../../utils/routerHelper';\nimport { atLeastAdmin } from '../../utils/userApiHelper';\nimport SafeHTMLPageContent from '../../shared/SafeHTMLPageContent';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\n\ninterface Props {\n blogEntryID: number;\n entity: Entity;\n blogEntry: BlogEntry;\n membershipLevel: MembershipLevel;\n initializingBlogEntryPage: boolean;\n previousURL?: string;\n allURL?: string;\n nextURL?: string;\n modal: Modals;\n initializeBlogEntryPage: () => void;\n deleteBlogEntry: (blogEntry: BlogEntry) => void;\n}\n\nconst didBlogEntryIDChange = (nextProps: LProps, props: LProps) =>\n nextProps.blogEntryID !== props.blogEntryID;\n\nclass BlogEntryPage extends React.Component & RouterProps> {\n public componentDidMount() {\n const { initializeBlogEntryPage } = this.props;\n initializeBlogEntryPage();\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n if (didBlogEntryIDChange(nextProps, this.props)) {\n const { initializeBlogEntryPage} = nextProps;\n initializeBlogEntryPage();\n }\n }\n\n public render() {\n const {\n initializingBlogEntryPage, blogEntry, t, history, membershipLevel,\n previousURL, allURL, nextURL, deleteBlogEntry\n } = this.props;\n if (initializingBlogEntryPage) {\n return ();\n }\n const onEdit = atLeastAdmin(membershipLevel) ? () => history.push(makeBlogEntryEditPath(blogEntry.id, t)) : undefined;\n const onDelete = atLeastAdmin(membershipLevel) ? () => deleteBlogEntry(blogEntry) : undefined;\n return (\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const { blogEntryID } = getBlogEntryParams(ownProps.history.location, ownProps.i18n);\n const { blogEntries } = state;\n const blogEntryIndex = state.blogEntries.findIndex((be) => be.id === blogEntryID);\n const blogEntry = blogEntries[blogEntryIndex];\n if (!blogEntry) return { blogEntryID, initializingBlogEntryPage: true };\n\n const entity = state.entities[blogEntry.entityID];\n const previousEntry = blogEntries[blogEntryIndex - 1];\n const nextEntry = blogEntries[blogEntryIndex + 1];\n const membership = state.userMemberships && state.userMemberships[blogEntry.entityID];\n const allURL = state.blogEntryQuery.entityID !== 0 ?\n makeEntityBlogPath(entity.id, ownProps.t) :\n makeSimpleRoutePath(Routes.Blog, ownProps.t);\n return {\n blogEntryID,\n membershipLevel: membership && membership.level,\n entity,\n initializingBlogEntryPage: state.pendingRoute === Routes.BlogEntry,\n blogEntry,\n allURL,\n previousURL: previousEntry && makeBlogEntryPath(previousEntry.id, ownProps.t),\n nextURL: nextEntry && makeBlogEntryPath(nextEntry.id, ownProps.t)\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializeBlogEntryPage: actions.initializeBlogEntryPage,\n deleteBlogEntry: actions.deleteBlogEntry\n}, dispatch);\n\nexport default asPage({})(compose(\n withRouter,\n withLocalization('blogEntry'),\n connect(mapStateToProps, mapDispatchToProps)\n)(BlogEntryPage) as React.ComponentClass);\n","import * as React from 'react';\nimport BlogEntryForm from '../../shared/BlogEntryForm';\nimport { getBlogEntryEditParams, Routes } from '../../utils/routerHelper';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { State } from '../../redux/state';\nimport { RouterProps, withRouter } from 'react-router';\nimport { compose, bindActionCreators, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport actions from '../../redux/actions';\nimport { BlogEntry } from '../../userApi';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\n\ninterface Props {\n blogEntry: BlogEntry;\n initializing: boolean;\n blogEntryID: number;\n initializeBlogEntryForm: (blogEntryID: number) => void;\n}\n\nclass BlogEntryEditPage extends React.Component {\n\n public componentDidMount() {\n const { initializeBlogEntryForm, blogEntryID } = this.props;\n initializeBlogEntryForm(blogEntryID);\n }\n\n public render() {\n const { blogEntry, initializing } = this.props;\n if (initializing) {\n return ;\n }\n return ();\n }\n}\n\nconst mapStateToProps = (state: State, props: LProps): Partial => {\n const { pendingRoute, blogEntries } = state;\n const { blogEntryID } = getBlogEntryEditParams(props.history.location, props.i18n);\n if (pendingRoute === Routes.BlogEntryEdit) return { blogEntryID, initializing: true };\n const blogEntry = blogEntries.find((be) => be.id === blogEntryID);\n return ({\n blogEntry,\n initializing: false\n });\n};\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: LProps) => bindActionCreators({\n initializeBlogEntryForm: actions.initializeBlogEntryForm\n}, dispatch);\n\nexport default asPage({})(compose(\n withLocalization('editBlogEntry'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(BlogEntryEditPage) as React.SFC);\n","import * as React from 'react';\nimport BlogEntryForm from '../../shared/BlogEntryForm';\nimport { RouterProps, withRouter } from 'react-router';\nimport { getBlogEntryNewParams, Routes } from '../../utils/routerHelper';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { State } from '../../redux/state';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport actions from '../../redux/actions';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\n\ninterface Props {\n entityID: number;\n initializing: boolean;\n initializeBlogEntryForm: (blogEntryID: number) => void;\n}\n\nclass BlogEntryNewPage extends React.Component {\n\n public componentWillMount() {\n const { initializeBlogEntryForm } = this.props;\n initializeBlogEntryForm(0);\n }\n\n public render() {\n const { entityID, initializing } = this.props;\n if (initializing) return ();\n return ();\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const { pendingRoute } = state;\n if (pendingRoute === Routes.BlogEntryNew) return { initializing: true };\n const { entityID } = getBlogEntryNewParams(ownProps.history.location, ownProps.i18n);\n return ({ entityID, initializing: false });\n};\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: LProps) => bindActionCreators({\n initializeBlogEntryForm: actions.initializeBlogEntryForm\n}, dispatch);\n\nexport default asPage({})(compose(\n withRouter,\n withLocalization('routes'),\n connect(mapStateToProps, mapDispatchToProps)\n)(BlogEntryNewPage) as React.ComponentClass);\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport { RouterProps, withRouter } from 'react-router';\nimport actions from '../../redux/actions';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport Pledges from '../../shared/PledgesTable';\n\ninterface Props {\n initializePledgesPage: () => void;\n}\n\nclass PledgeCategoryPage extends React.Component & RouterProps> {\n public componentWillMount() {\n const { initializePledgesPage } = this.props;\n initializePledgesPage();\n }\n\n public render() {\n return (\n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => ({});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializePledgesPage: actions.initializePledgesPage\n}, dispatch);\n\nexport default asPage({ requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withLocalization('blog'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(PledgeCategoryPage) as React.SFC);\n","import * as React from 'react';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\n\ninterface Props {\n isOpen: boolean;\n toggle: () => void;\n}\n\nconst PledgesTableHelp = ({\n t, isOpen, toggle\n}: LProps) => (\n \n \n {t('How is my score calculated?')}\n \n \n

{t('Each action is worth a number of baseline points and can be completed a limited number of times for points, as indicated in the table on this page. Each completion after the first is worth 50 points.')}

\n

{t('You will earn an additional 50 points for including a photo when you complete an action.')}

\n
\n \n \n \n \n);\n\nexport default withLocalization('pledges')(PledgesTableHelp) as React.SFC;\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport { RouterProps, withRouter } from 'react-router';\nimport actions from '../../redux/actions';\nimport { getPledgeCategoryParams } from '../../utils/routerHelper';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport Pledges from '../../shared/PledgesTable';\n\ninterface Props {\n pledgeCategoryID: number;\n initializePledgeCategoryPage: () => void;\n}\n\nclass PledgeCategoryPage extends React.Component & RouterProps> {\n public componentWillMount() {\n const { initializePledgeCategoryPage } = this.props;\n initializePledgeCategoryPage();\n }\n\n public render() {\n const {\n pledgeCategoryID\n } = this.props;\n return (\n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => ({\n pledgeCategoryID: getPledgeCategoryParams(ownProps.history.location, ownProps.i18n).competitionPledgeCategoryID\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializePledgeCategoryPage: actions.initializePledgeCategoryPage\n}, dispatch);\n\nexport default asPage({ requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n withLocalization('blog'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(PledgeCategoryPage) as React.SFC);\n","// @ts-nocheck\nimport * as React from 'react';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport actions from '../../redux/actions';\nimport { connect } from 'react-redux';\nimport { Alert } from 'reactstrap';\nimport { StyleState } from '../../utils/styles';\nimport logger from '../../utils/logger';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { WaitingPageContent } from '../../shared/WaitingPage';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport { State } from '../../redux/state';\nimport { isProduction } from '../../utils/environment';\nimport { calculatorAvailablePoints } from '../../redux/selectors';\nimport StoryPoints from '../../shared/StoryPoints';\n\ninterface Props {\n token: string;\n availablePoints: number;\n createCalculatorPledgePoints: () => void;\n updateFootprint: (footprint:number) => void;\n}\n\nconst containerID = 'cc__calculator';\n\nconst waitForCalculator = (maxWait: number) => new Promise((resolve, fail) => {\n if (typeof (window as any).Widget !== 'undefined') {\n resolve();\n return;\n }\n const start = Date.now();\n const wait = setInterval(() => {\n if (typeof (window as any).Widget !== 'undefined') {\n resolve();\n clearInterval(wait);\n return;\n } else if (Date.now() - start > maxWait) {\n fail(new Error('Calculator failed to initialize.'));\n clearInterval(wait);\n return;\n }\n }, 500);\n});\n\ninterface CalculatorPageState {\n isCalculatorReady: boolean;\n error: boolean;\n availablePoints: number;\n}\n\nconst initialState: CalculatorPageState = { isCalculatorReady: false, error: false, availablePoints: 500 };\n\nclass CalculatorPage extends React.Component> {\n private widget: calculatorWidget.Widget = null;\n public state = initialState;\n\n public async componentDidMount() {\n try {\n await waitForCalculator(4000);\n this.setState({ isCalculatorReady: true });\n } catch (err) {\n logger.error(err);\n this.setState({ error: true });\n return;\n }\n\n const { createCalculatorPledgePoints, availablePoints,updateFootprint } = this.props;\n const callbacks: calculatorWidget.CallBacks = {\n 'page:visited': (update) => {\n if (update.allPagesVisited && availablePoints !== 0) createCalculatorPledgePoints();\n },\n onChange:function(ev:any){\n //localStorage.setItem(\"footprint\",ev.value)\n updateFootprint(ev.value)\n //console.log(\"Widget change\", ev)\n },\n };\n const options: calculatorWidget.Options = {\n container_id: containerID,\n source: 'coolcampuschallenge2019',\n campaign: 'carboncalculator',\n hideUserPlatform: true,\n url: 'https://coolclimate-calculator-ui.firebaseapp.com',\n callbacks\n };\n if (this.props.token && isProduction) {\n // currently, widget only points to production.\n options.token = this.props.token;\n }\n\n this.widget = new (window as any).Widget(options) as calculatorWidget.Widget;\n }\n\n public componentWillUnmount() {\n // we should kill event call backs here, but since this is a page,\n // we should be OK.\n }\n\n public render() {\n const { error, isCalculatorReady } = this.state;\n const { t, availablePoints, formatNumber } = this.props;\n if (error) {\n return (\n {t('It appears we had an issue loading the calculator. Please try again later.')}\n );\n } else if (!isCalculatorReady) {\n return ;\n }\n return (\n
\n \n {availablePoints !== 0 &&

{formatNumber(availablePoints, 0)} {t('points')}

}\n {availablePoints === 0 &&\n

\n {t('action \n {t('Complete')}\n

}\n
\n
);\n }\n}\n\nconst mapStateToProps = (state: State): Partial => ({\n token: state.token,\n availablePoints: calculatorAvailablePoints(state)\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n createCalculatorPledgePoints: actions.createCalculatorPledgePoints,\n updateFootprint: actions.updateFootprint\n}, dispatch);\n\nexport default asPage({})(compose(\n withLocalization('calculator'),\n connect(mapStateToProps, mapDispatchToProps)\n)(CalculatorPage) as React.SFC);\n","// @ts-nocheck\nimport * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { State } from '../redux/state';\nimport actions from '../redux/actions';\nimport TopUserScores from '../shared/TopUserScores';\nimport { Routes } from '../utils/routerHelper';\nimport { WaitingPageContent } from '../shared/WaitingPage';\nimport { asPage } from '../utils/wrappers/asPage';\n\ninterface Props {\n initializing: boolean;\n initializeTopUserScoresPage: (entityID: number, term?:string) => void;\n}\ninterface CompetitionTopUserScoresState{\n term:string\n}\n\nclass CompetitionTopUserScores extends React.Component, CompetitionTopUserScoresState> {\n constructor(props:LProps){\n super(props)\n this.state = {\n term: \"\"\n }\n }\n public componentWillMount() {\n const { initializeTopUserScoresPage } = this.props;\n initializeTopUserScoresPage(0);\n\n }\n\n public render() {\n const { initializing, initializeTopUserScoresPage } = this.props;\n const { term } = this.state\n if (initializing) {\n return ;\n }\n return (\n <>\n {this.setState({term: ev.target.value});}} />\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state: State): Partial => ({\n initializing: state.pendingRoute === Routes.CompetitionUserScores\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n initializeTopUserScoresPage: actions.initializeTopUserScoresPage\n}, dispatch);\n\nexport default asPage({})(compose(\n withLocalization('topUserScores'),\n connect(mapStateToProps, mapDispatchToProps)\n)(CompetitionTopUserScores) as React.SFC);\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { CompetitionUserScore, UserRead, Entity } from '../../userApi';\nimport { State } from '../../redux/state';\nimport { makeUserPath, makeEntityPath } from '../../utils/routerHelper';\nimport { displayFullName } from '../../utils/userApiHelper';\nimport * as selectors from '../../redux/selectors';\nimport { Link } from 'react-router-dom';\n\ninterface ManualProps {\n score: CompetitionUserScore;\n rank: number;\n}\n\ninterface Props extends ManualProps {\n user: UserRead;\n campus: Entity;\n competitionID: number;\n}\n\nconst CompetitionUserScoreRow_ = ({\n rank, user, score, campus, formatNumber, competitionID, t\n}: LProps) => (\n \n {rank}\n {displayFullName(user)}\n {campus && {campus.name}}\n {formatNumber(score.points)}\n {formatNumber(score.savingsCO2Lbs)}\n \n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps) => ({\n user: state.users[ownProps.score.userID],\n campus: selectors.acceptedUniversity(state, ownProps.score.userID),\n campusID: state.competition.id\n});\n\nexport default compose(\n connect(mapStateToProps),\n withLocalization('topUserScores')\n)(CompetitionUserScoreRow_) as React.ComponentClass;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { range, last } from 'lodash';\nimport { connect } from 'react-redux';\nimport {\n Pagination, PaginationItem, PaginationLink, FormGroup,\n InputGroup, InputGroupAddon, Input, Spinner, InputGroupText\n} from 'reactstrap';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport { State } from '../redux/state';\n\nconst paginationSpan = 5;\n\nconst calculatePaginationLinks = (page: number, totalPages: number): number[] => {\n const pad = (paginationSpan - 1) / 2;\n let min = page - pad;\n let max = page + pad;\n if (min < 1) {\n max += (1 - min);\n min = 1;\n }\n max = Math.min(totalPages, max);\n return range(min, max + 1);\n};\n\ninterface ManualProps {\n page: number;\n totalPages: number;\n showPage: (page: number) => void;\n}\n\ninterface Props extends ManualProps {\n spannedPages: number[];\n}\n\ninterface PaginatorState {\n inputPage: string;\n hasInputDebounce: boolean;\n}\n\nconst initialState: PaginatorState = {\n inputPage: '',\n hasInputDebounce: false\n};\n\nclass Paginator extends React.Component, PaginatorState> {\n public state = initialState;\n private inputDebounce: number;\n\n private debounceShowPage() {\n if (this.inputDebounce) {\n clearTimeout(this.inputDebounce);\n }\n this.setState({ hasInputDebounce: true });\n this.inputDebounce = window.setTimeout(() => {\n this.setState({ hasInputDebounce: false });\n const { showPage } = this.props;\n const page = parseInt(this.state.inputPage, 10);\n if (!isNaN(page)) {\n showPage(page);\n }\n }, 2500);\n }\n\n public componentWillUnmount() {\n if (this.inputDebounce) {\n clearTimeout(this.inputDebounce);\n }\n }\n\n private setInputPage(value: string) {\n const valueI = parseInt(value.replace(/\\D/g, ''), 10);\n let inputPage = valueI.toString();\n const { totalPages } = this.props;\n if (isNaN(valueI)) {\n inputPage = '';\n } else if (valueI < 1) {\n inputPage = '1';\n } else if (valueI > totalPages) {\n inputPage = totalPages.toString();\n }\n this.setState({ inputPage });\n if (!isNaN(valueI)) {\n this.debounceShowPage();\n }\n }\n\n public render() {\n const {\n page, showPage, t, spannedPages, totalPages\n } = this.props;\n const { inputPage, hasInputDebounce } = this.state;\n return (\n
\n
\n \n {(spannedPages[0] !== 1) &&\n \n showPage(1)}\n >1\n \n }\n {(spannedPages[0] - 1 > 1) &&\n \n ...\n \n }\n {spannedPages.map((n) => (\n \n n !== page && showPage(n)}>{n}\n \n ))}\n {(last(spannedPages) + 1 < totalPages) &&\n \n ...\n \n }\n {(last(spannedPages) !== totalPages) &&\n \n showPage(totalPages)}\n >{totalPages}\n \n }\n \n\n {(totalPages > paginationSpan) &&\n \n \n \n {t('Go to page')}\n \n this.setInputPage(e.target.value)}\n />\n \n {hasInputDebounce && }\n {!hasInputDebounce &&    }\n \n \n \n }\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: {}): Partial => ({\n page: state.topCompetitionUserScoreQuery.pagination.page,\n totalPages: state.topCompetitionUserScoreQuery.pagination.totalPages,\n spannedPages: calculatePaginationLinks(\n state.topCompetitionUserScoreQuery.pagination.page,\n state.topCompetitionUserScoreQuery.pagination.totalPages\n )\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default compose(\n withLocalization('paginator'),\n connect(mapStateToProps, mapDispatchToProps)\n)(Paginator) as React.SFC;\n","// @ts-nocheck\nimport * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { State } from '../redux/state';\nimport actions from '../redux/actions';\nimport TopUserScores from '../shared/TopUserScores';\nimport { Routes, getCompetitionUserScoresForEntityParams } from '../utils/routerHelper';\nimport { WaitingPageContent } from '../shared/WaitingPage';\nimport { RouterProps, withRouter } from 'react-router';\nimport { asPage } from '../utils/wrappers/asPage';\n\ninterface Props {\n entityID: number;\n initializing: boolean;\n initializeTopUserScoresPage: (entityID: number) => void;\n}\n\nconst didEntityIDChange = (nextProps: Props, props: Props) =>\n !isNaN(nextProps.entityID) && props.entityID !== nextProps.entityID;\n\nclass EntityTopUserScores extends React.Component> {\n public componentWillMount() {\n const { initializeTopUserScoresPage, entityID } = this.props;\n initializeTopUserScoresPage(entityID);\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n if (didEntityIDChange(nextProps, this.props)) {\n const { initializeTopUserScoresPage, entityID } = nextProps;\n initializeTopUserScoresPage(entityID);\n }\n }\n\n public render() {\n const { entityID, initializing } = this.props;\n if (isNaN(entityID) || initializing) {\n return ;\n }\n return (\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => ({\n entityID: getCompetitionUserScoresForEntityParams(ownProps.history.location, ownProps.i18n).entityID,\n initializing: state.pendingRoute === Routes.CompetitionUserScoresForEntity\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n initializeTopUserScoresPage: actions.initializeTopUserScoresPage\n}, dispatch);\n\nexport default asPage({})(compose(\n withLocalization('topUserScores'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(EntityTopUserScores) as React.SFC);\n","import * as React from 'react';\nimport { withLocalization } from '../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { asPage } from '../utils/wrappers/asPage';\nimport actions from '../redux/actions';\nimport { connect } from 'react-redux';\nimport { State } from '../redux/state';\nimport { Routes } from '../utils/routerHelper';\nimport { WaitingPageContent } from '../shared/WaitingPage';\n\ninterface Props {\n initializing: boolean;\n qualtricsID: string;\n initializeSurveyPage: () => void;\n createSurveyStory: () => void;\n}\n\nconst qualtricsSurveyURL = 'https://berkeley.qualtrics.com/jfe/form/SV_3dAPNj1unLElOy9';\n\nclass Survey extends React.Component {\n private iframe: React.RefObject;\n private messageReceive: (event: MessageEvent) => void;\n\n constructor(props: Props) {\n super(props);\n this.iframe = React.createRef();\n }\n\n public componentWillMount() {\n const { initializeSurveyPage } = this.props;\n initializeSurveyPage();\n\n // NOTE: See assets/survey_complete.html for the page that is loaded within the iframe\n // after survey completion.\n this.messageReceive = (event) => {\n if (event.origin.search(window.location.host) < 0) {\n // something from an unknown domain, let's ignore it\n return;\n }\n const qualtricsID = event.data;\n if (event.data === qualtricsID) {\n const { createSurveyStory } = this.props;\n createSurveyStory();\n }\n };\n window.addEventListener('message', this.messageReceive);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('message', this.messageReceive);\n }\n\n public render() {\n const { initializing, qualtricsID } = this.props;\n if (initializing) return ;\n return (\n \n );\n }\n}\n\nconst mapStateToProps = (state: State): Partial => ({\n initializing: state.pendingRoute === Routes.Survey,\n qualtricsID: state.competitionUser.qualtricsID\n});\n\nconst mapDipatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n initializeSurveyPage: actions.initializeSurveyPage,\n createSurveyStory: actions.createSurveyStory\n}, dispatch);\n\nexport default asPage({ authenticated: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(\n compose(\n withLocalization('survey'),\n connect(mapStateToProps, mapDipatchToProps)\n )(Survey)\n) as React.SFC;\n","import * as React from 'react';\nimport { Alert } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { compose } from 'redux';\nimport { StyleState } from '../utils/styles';\nimport { asPage } from '../utils/wrappers/asPage';\n\nconst Missing = ({ t }: LProps<{}>) => (\n \n

{t(\"You haven't specify a competition\")}

\n \n);\n\nexport default asPage({})(compose(\n withLocalization('common')\n)(Missing));\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport { asPage } from '../../utils/wrappers/asPage';\nimport Footer from '../../shared/Footer';\nimport { Link } from 'react-router-dom';\nimport { makeSimpleRoutePath, Routes } from '../../utils/routerHelper';\nimport CompetitionAboutText from './CompetitionAboutText';\nconst About = ({ t }: LProps<{}>) => (\n
\n
\n \n

{t('Cool Campus Challenge Team')}

\n

\n UCOP (Ryan Bell, Emma Finn & the Marketing and Communications Team)
\n CoolClimate Network (Chris Jones, Eric Hulburd & Daniel Kammen)
\n UCSB (Jewel Persad)
\n Center for Sustainable Energy (Katherine Beaulieu, Jack Ulrich & Ally Senturk)
\n

\n
\n
\n
\n
\n

{t('What is the Cool Campus Challenge?')}

\n

{t('The Cool Campus Challenge is a friendly challenge designed to educate and motivate the University of California community to take simple energy-saving, waste reducing and sustainability-focused actions to lower their carbon footprint and help the UC system reach carbon neutrality by 2025.')}

\n

{t('It\\'s a big, daring goal, but we can get there if we all work together as a community to make it happen.')}

\n
\n
\n

{t('How does the Cool Campus Challenge work?')}

\n

{t('Once you sign up you will be given a variety of ways to learn about your carbon footprint and take actions that have a direct impact on reducing it, and living a more sustainable lifestyle. These activities could be as simple as turning off the lights when you leave the room, or taking public transportation…things you may already be doing! Show us, your friends, and your colleagues your progress by uploading photos and stories to your personal Challenge page.')}

\n

{t('For every action you take, you’ll earn valuable points within your locally hosted competition and track of your personal progress.')}

\n
\n
\n

{t('Who runs the Cool Campus Challenge?')}

\n

\n {t('The Cool Campus Challenge is a collaboration between the University of California and the CoolClimate Network at U.C. Berkeley, with funding from UC’s Carbon Neutrality Initiative. It was developed by contributions from the University of California, the Center for Sustainable Energy, and your local, friendly Cool Campus Team.')}\n

\n
\n
\n
\n);\n\nexport default asPage({})(compose(\n withLocalization('about')\n)(About));\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport ExternalLink from '../../shared/ExternalLink';\n\nconst CompetitionAboutText = ({ t }: LProps<{}>) => (\n

\n \n {t('The Cool Campus Challenge is a partnership between the University of California, the CoolClimate Network and the Center for Sustainable Energy. For questions or comments, please contact us at')} \n \n contact@coolcampuschallenge.org.\n

\n);\n\nexport default compose(\n withLocalization('competitionAboutText')\n)(CompetitionAboutText) as React.SFC;\n","\ninterface Config {\n SENTRY_PUBLIC_DSN: string;\n SENTRY_RELEASE: string;\n FORCE_REPORT_TO_SENTRY: string;\n SUPPORT_EMAIL: string;\n}\n\nconst config: Config = {\n FORCE_REPORT_TO_SENTRY: process.env.FORCE_REPORT_TO_SENTRY,\n SENTRY_PUBLIC_DSN: process.env.SENTRY_PUBLIC_DSN,\n SENTRY_RELEASE: process.env.SENTRY_RELEASE,\n SUPPORT_EMAIL: process.env.SUPPORT_EMAIL\n};\n\nexport const isDevelopment = window.location.hostname.search('localhost') === 0 ||\n window.location.hostname.search('127.0.0.1') === 0 ||\n window.location.hostname.search('nginx') === 0 ||\n window.location.hostname.search('ngrok') === 0;\n\nexport const isProduction = window.location.hostname === 'www.coolcampuschallenge.org' ||\n window.location.hostname === 'prd.coolcampuschallenge.org';\nexport const isStaging = window.location.hostname === 'stg.coolcampuschallenge.org';\n\nexport const isIOS = Boolean(navigator.platform) && /iPad|iPhone|iPod/.test(navigator.platform);\n\nexport default {\n config,\n isDevelopment\n};\n","export const uuid = () => {\n let dt = new Date().getTime();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n};\n","import * as React from 'react';\nimport { trackEvent } from '../utils/googleAnalytics';\n\ninterface Props {\n href: string;\n children: React.ReactNode;\n}\n\nconst ExternalLink = ({ href, children }: Props) => (\n trackEvent('link', 'click', href)}\n >{children}\n);\n\nexport default ExternalLink;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { Link, LinkProps } from 'react-router-dom';\nimport { Routes, makeSimpleRoutePath } from '../utils/routerHelper';\nimport { LProps, withLocalization, withRouterAndHelpers, RouterProps } from '../utils/wrappers';\nimport { compose } from 'redux';\n\ninterface Props {\n activable?: boolean;\n route?: Routes;\n to?: string;\n children: React.ReactNode;\n linkProps?: Partial;\n onClick?: () => void;\n}\n\nconst RouteLink = ({\n to, route, t, activable = false, currentRoute, onClick,\n children, linkProps = {}\n}: RouterProps<{}> & LProps) => (\n \n {children}\n \n);\n\nexport default compose(\n withLocalization('routes', ['formatNumber']),\n withRouterAndHelpers\n)(RouteLink) as React.SFC;\n","import { matchPath } from 'react-router';\nimport { I18next } from './i18nextShim';\nimport { Location, History } from 'history';\nimport { TranslationFunction } from 'i18next';\nimport { Entity, UserRead, CompetitionPledge } from '../userApi';\nimport { CompetitionPledges } from './userApiHelper';\nimport { Route } from 'react-router-dom';\n\nexport enum Routes {\n GlobalAbout = 'globalAbout',\n About = 'about',\n Faq = 'faq',\n Blog = 'blog',\n BlogEntry = 'blog_entry',\n BlogEntryEdit = 'blog_entry_edit',\n BlogEntryNew = 'blog_entry_new',\n Share = 'share',\n CompetitionUserScores = 'competition_scores',\n CompetitionUserScoresForEntity = 'competition_scores_entity',\n Calculator = 'calculator',\n Dashboard = '',\n Entity = 'entity',\n EntityBlog = 'entity_blog',\n EntityEdit = 'entity_edit',\n Join = 'join',\n Pledge = 'pledge',\n Pledges = 'pledges',\n PledgeCategory = 'pledge_category',\n Story = 'story',\n Login = 'login',\n User = 'user',\n Account = 'account',\n Teams = 'teams',\n TeamsNew = 'new_team',\n Signup = 'signup',\n Survey = 'survey',\n ForgotPassword = 'forgot_password',\n PasswordReset = 'password_reset',\n Email = 'email',\n NotFound = 'not_found' \n}\n\ninterface RoutePaths {\n [key: string]: string;\n}\n\nexport const makePathnames = (translate: TranslationFunction): RoutePaths => {\n return {\n [Routes.Dashboard]: '/:competitionName',\n [Routes.About]: `/:competitionName/${translate(Routes.About)}`,\n [Routes.Faq]: `/${translate(Routes.Faq)}/:section`,\n [Routes.Blog]: `/:competitionName/${translate(Routes.Blog)}`,\n [Routes.BlogEntry]: `/:competitionName/${translate(Routes.BlogEntry)}/:blogEntryID`,\n [Routes.BlogEntryEdit]: `/:competitionName/${translate(Routes.BlogEntry)}/:blogEntryID/${translate('edit')}`,\n [Routes.BlogEntryNew]: `/:competitionName/${translate(Routes.Entity)}/:entityID/${Routes.BlogEntry}/${translate('new')}`,\n [Routes.Share]: `/:competitionName/${translate(Routes.Share)}`,\n [Routes.CompetitionUserScores]: `/:competitionName/${translate('competition')}/:competitionID/${translate('user_scores')}`,\n [Routes.CompetitionUserScoresForEntity]: `/:competitionName/${translate('competition')}/:competitionID/${translate(Routes.Entity)}/:entityID/${translate('user_scores')}`,\n [Routes.Calculator]: `/:competitionName/${translate(Routes.Calculator)}`,\n [Routes.Entity]: `/:competitionName/${translate('competition')}/:competitionID/${translate(Routes.Entity)}/:entityID`,\n [Routes.EntityEdit]: `/:competitionName/${translate(Routes.Entity)}/:entityID/${translate('edit')}`,\n [Routes.EntityBlog]: `/:competitionName/${translate(Routes.Entity)}/:entityID/${translate('blog')}`,\n [Routes.Join]: `/:competitionName/${translate(Routes.Join)}`,\n [Routes.Pledge]: `/:competitionName/${translate(Routes.Pledge)}/:competitionPledgeID`,\n [Routes.Pledges]: `/:competitionName/${translate(Routes.Pledges)}`,\n [Routes.PledgeCategory]: `/:competitionName/${translate(Routes.Pledges)}/:competitionPledgeCategoryID`,\n [Routes.Story]: `/:competitionName/${translate(Routes.Story)}/:storyID`,\n [Routes.User]: `/:competitionName/${translate('competition')}/:competitionID/${translate(Routes.User)}/:userID`,\n [Routes.Teams]: `/:competitionName/${translate(Routes.Teams)}`,\n [Routes.TeamsNew]: `/:competitionName/${translate(Routes.TeamsNew)}`,\n [Routes.Login]: `/:competitionName/${translate(Routes.Login)}`,\n [Routes.Account]: `/:competitionName/${translate(Routes.Account)}`,\n [Routes.Signup]: `/:competitionName/${translate(Routes.Signup)}`,\n [Routes.Survey]: `/:competitionName/${translate(Routes.Survey)}`,\n [Routes.ForgotPassword]: `/:competitionName/${translate(Routes.ForgotPassword)}`,\n [Routes.PasswordReset]: `/:competitionName/${translate(Routes.PasswordReset)}`,\n [Routes.Email]: `/:compeftitionName/${translate(Routes.Email)}`,\n [Routes.GlobalAbout]: `/about`\n }\n};\n\nexport const makeSimpleRoutePath = (route: Routes, translate: TranslationFunction) => {\n if(route == Routes.GlobalAbout){\n return '/about'; \n }\n return `/${localStorage.competitionName}/${translate(route, { ns: 'routes' })}`;\n}\n\nexport const makeEntityPath = (competitionID: number, entity: Entity, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate('competition', { ns: 'routes' })}/${competitionID}/${translate(Routes.Entity, { ns: 'routes' })}/${entity.id}`;\n\nexport const makeEntityEditPath = (entity: Entity, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.Entity, { ns: 'routes' })}/${entity.id}/${translate('edit')}`;\n\nexport const makeEntityBlogPath = (entityID: number, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.Entity, { ns: 'routes' })}/${entityID}/${translate('blog')}`;\n\nexport const makeBlogEntryPath = (blogEntryID: number, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.BlogEntry, { ns: 'routes' })}/${blogEntryID}`;\n\nexport const makeBlogEntryEditPath = (blogEntryID: number, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.BlogEntry, { ns: 'routes' })}/${blogEntryID}/${translate('edit')}`;\n\nexport const makeBlogEntryNewPath = (entityID: number, translate: TranslationFunction) =>\n `/${translate(Routes.Entity, { ns: 'routes' })}/${entityID}/${translate(Routes.BlogEntry, { ns: 'routes' })}/${translate('new')}`;\n\nexport const makePledgePath = (pledge: CompetitionPledge, translate: TranslationFunction) => {\n if (pledge.uuid === CompetitionPledges.TakeCalculator) return makeSimpleRoutePath(Routes.Calculator, translate);\n if (pledge.uuid === CompetitionPledges.TakeSurvey) return makeSimpleRoutePath(Routes.Survey, translate);\n if (pledge.uuid === CompetitionPledges.InviteAFriend) return `/${localStorage.competitionName}/`;\n return makePledgePathLiteral(pledge, translate);\n};\n\nexport const makePledgePathLiteral = (pledge: CompetitionPledge, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.Pledge, { ns: 'routes' })}/${pledge.id}`;\n\nexport const makeUserPath = (competitionID: number, user: UserRead, translationFunction: TranslationFunction) =>\n `/${localStorage.competitionName}/${translationFunction('competition', { ns: 'routes' })}/${competitionID}/${translationFunction(Routes.User, { ns: 'routes' })}/${user.id}`;\n\nexport const makeStoryPath = (storyID: number, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.Story, { ns: 'routes' })}/${storyID}`;\n\nexport const makePledgeCategoryPath = (competitionPledgeCategoryID: number, translate: TranslationFunction) =>\n `/${localStorage.competitionName}/${translate(Routes.Pledges, { ns: 'routes' })}/${competitionPledgeCategoryID}`;\n\nexport const makeCompetitionUserScoresPath = (competitionID: number, translate: TranslationFunction) =>\n`/${localStorage.competitionName}/${translate('competition')}/${competitionID}/${translate('user_scores')}`;\n\nexport const makeCompetitionUserScoresForEntityPath = (competitionID: number, entityID: number, translate: TranslationFunction) =>\n`/${localStorage.competitionName}/${translate('competition')}/${competitionID}/${translate(Routes.Entity)}/${entityID}/${translate('user_scores')}`;\n\nexport enum FaqSection {\n General = 'general',\n SpreadTheWord = 'spread_the_word',\n Help = 'help'\n}\n\nexport const makeFaqPath = (section: FaqSection, translate: TranslationFunction) =>\n `/${translate(Routes.Faq, { ns: 'routes' })}/${section}`;\n\nconst getParams = (location: Location, i18n: I18next, route: Routes) => {\n const t = i18n.getFixedT(i18n.language, 'routes');\n const matchingPath = makePathnames(t)[route];\n const m = matchPath<{ [key: string]: string }>(location.pathname, {\n path: matchingPath,\n exact: true,\n strict: false\n });\n return m ? m.params : {};\n};\n\nexport const getEntityParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.Entity);\n return {\n competitionID: Number(params.competitionID),\n entityID: Number(params.entityID)\n };\n};\n\nexport const getEntityEditParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.EntityEdit);\n return {\n entityID: Number(params.entityID)\n };\n};\n\nexport const getEntityBlogParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.EntityBlog);\n return {\n entityID: Number(params.entityID)\n };\n};\n\nexport const getBlogEntryParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.BlogEntry);\n return {\n blogEntryID: Number(params.blogEntryID)\n };\n};\n\nexport const getBlogEntryEditParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.BlogEntryEdit);\n return {\n blogEntryID: Number(params.blogEntryID)\n };\n};\n\nexport const getBlogEntryNewParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.BlogEntryNew);\n return {\n entityID: Number(params.entityID)\n };\n};\n\nexport const getPledgeParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.Pledge);\n return {\n competitionPledgeID: Number(params.competitionPledgeID)\n };\n};\n\nexport const getPledgeCategoryParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.PledgeCategory);\n return {\n competitionPledgeCategoryID: Number(params.competitionPledgeCategoryID)\n };\n};\n\nexport const getUserParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.User);\n return {\n competitionID: Number(params.competitionID),\n userID: Number(params.userID)\n };\n};\n\nexport const getStoryParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.Story);\n return {\n storyID: Number(params.storyID)\n };\n};\n\n\nexport const getCompetitionNameParams = (location: Location, i18n: I18next) => {\n const t = i18n.getFixedT(i18n.language, 'routes');\n console.log(location.pathname)\n if(location.pathname =='/about' || \n location.pathname.indexOf('/faq')==0 ){\n return 'GLOBAL'\n }\n const matchingPath = makePathnames(t)[Routes.Dashboard];\n const m = matchPath<{ [key: string]: string }>(location.pathname, {\n path: matchingPath,\n exact: false,\n strict: false\n });\n const params = m ? m.params : {};\n return { \n competitionName: params.competitionName\n };\n};\n\n\nexport const getFaqParams = (location: Location, i18n: I18next): { section: FaqSection } => {\n const params = getParams(location, i18n, Routes.Faq);\n const section = params.section as FaqSection \n return {\n section\n }; \n};\n\nexport const getCompetitionUserScoresForEntityParams = (location: Location, i18n: I18next) => {\n const params = getParams(location, i18n, Routes.CompetitionUserScoresForEntity);\n return {\n competitionID: parseInt(params.competitionID, 10),\n entityID: parseInt(params.entityID, 10)\n };\n};\n\nexport const getCurrentRoute = (location: Location, i18n: I18next) => { \n const t = i18n.getFixedT(i18n.language, 'routes');\n const pathnames = makePathnames(t);\n const routeName = Object.values(Routes).find((route) => { \n return Boolean(matchPath(location.pathname, {\n path: pathnames[route],\n exact: true,\n strict: false\n }));\n });\n return routeName || Routes.NotFound;\n};\n\nexport const goToRouteByName = (route: Routes, h: History, i18n: I18next) => {\n const translate = i18n.getFixedT(null, 'routes');\n h.push(`/${translate(route)}`);\n};\n","import { Dispatch } from 'redux';\nimport up from 'updeep';\nimport { throttle, values } from 'lodash';\nimport * as selectors from '../selectors';\nimport { State, StoryQuery, defaultState, Modals } from '../state';\nimport { Story, Stories, ImageResponse, TaggedUserIDs, CompetitionPledge } from '../../userApi';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { ActionType } from './types';\nimport { postImage } from './image';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { ExtraArguments } from '../extraArguments';\nimport logger from '../../utils/logger';\nimport { getStoryParams, makePledgePath } from '../../utils/routerHelper';\nimport { addUserPoints } from './score';\nimport { trackEvent } from '../../utils/googleAnalytics';\nimport { CompetitionPledges } from '../../utils/userApiHelper';\n\nexport const openConfirmStoryDelete = (story: Story) => async (dispatch: Dispatch, getState: () => State) => {\n dispatch(patch({\n modal: Modals.ConfirmStoryDelete,\n storyToDelete: story\n }));\n};\n\nexport const closeConfirmStoryDelete = () => async (dispatch: Dispatch, getState: () => State) => {\n dispatch(patch({\n modal: Modals.None,\n storyToDelete: null\n }));\n};\n\n// WARN: We are updating the whole array of stories - is there a performance concern here?\nexport const toggleStoryLike = (story: Story) => async (dispatch: Dispatch, getState: () => State) => {\n const { storyLikes, stories } = getState();\n let likes = story.likes;\n if (storyLikes[story.id]) {\n likes--;\n } else {\n likes++;\n }\n\n const storyIndex = stories.findIndex((s) => s.id === story.id);\n const storiesUpdate = { [storyIndex]: { ...story, likes } } as Stories;\n dispatch(patch({\n storyLikes: { [story.id]: !storyLikes[story.id] },\n stories: storiesUpdate\n }));\n\n const api = selectors.userApi(getState());\n try {\n if (!storyLikes[story.id]) {\n await api.postLike(story.id, 'story');\n trackEvent('like', 'create', story.id.toString());\n } else {\n await api.deleteLike(story.id, 'story');\n trackEvent('like', 'delete', story.id.toString());\n }\n } catch (err) {\n dispatch(patch({\n storyLikes: { [story.id]: storyLikes[story.id] },\n stories: up.updateIn(`${storyIndex}`, story, stories)\n }));\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('like', 'unhandledError');\n }\n return;\n};\n\nexport const toggleStoryFlag = (story: Story) => async (dispatch: Dispatch, getState: () => State) => {\n const { storyFlags, stories } = getState();\n let flags = story.flags;\n if (storyFlags[story.id]) {\n flags--;\n } else {\n flags++;\n }\n\n const storyIndex = stories.findIndex((s) => s.id === story.id);\n const storiesUpdate = { [storyIndex]: { ...story, flags } } as Stories;\n dispatch(patch({\n storyFlags: { [story.id]: !storyFlags[story.id] },\n stories: storiesUpdate\n }));\n\n const api = selectors.userApi(getState());\n try {\n if (!storyFlags[story.id]) {\n await api.postFlag(story.id, 'story', { flag: {} });\n trackEvent('flag', 'create', story.id.toString());\n } else {\n await api.deleteFlag(story.id, 'story');\n trackEvent('flag', 'delete', story.id.toString());\n }\n } catch (err) {\n storiesUpdate[storyIndex] = story;\n dispatch(patch({\n storyFlags: { [story.id]: storyFlags[story.id] },\n stories: storiesUpdate\n }));\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('flag', 'unhandledError');\n }\n return;\n};\n\nconst pageStories = (page: number, term?:string) => async (dispatch: Dispatch, getState: () => State) => {\n const state = getState();\n const { storyPagination, stories, storyQuery, competition, token,storyTerm } = state;\n const api = selectors.userApi(state);\n try {\n const { userID, entityID, competitionPledgeID, storyID } = storyQuery;\n const res = await api.getCompetitionStories(competition.id, userID, entityID, competitionPledgeID, storyID, page == 0?0:storyPagination.nextPage, term|| storyTerm, token);\n const storyIDs: { [storyID: number]: boolean } = stories.reduce((previous, story) => ({ ...previous, [story.id]: true }), {});\n const newStories = res.stories.filter((story) => !storyIDs[story.id]);\n const update = {\n ...res,\n storyTerm: term,\n stories: [\n ...stories,\n ...newStories\n ]\n };\n dispatch(patch(update, ActionType.GetCompetitionStories));\n } catch (err) {\n dispatch(patch({\n storyPagination: { nextPage: -1 }\n }, ActionType.GetCompetitionStories));\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n\nexport const pageStoriesThrottle = throttle(pageStories, 500);\n\nexport const setStoryQuery = (storyQuery: StoryQuery) => async (dispatch: Dispatch, _getState: () => State) => dispatch(patch({\n storyQuery,\n stories: up.constant(defaultState.stories),\n storyPagination: up.constant({ nextPage: -1 }),\n storyComments: up.constant({}),\n storyCommentPagination: up.constant({}),\n storyCommentsFlags: up.constant({}),\n storyCommentsLikes: up.constant({}),\n storyLikes: up.constant({}),\n storyFlags: up.constant({})\n}, ActionType.SetStoryQuery));\n\nexport const postCompetitionStories = (newStory: Story, taggedUserIDs: TaggedUserIDs, fileInputID: string, savedStoryFormID: string) =>\n async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { competitionPledges } = getState();\n const { i18n, getImage } = extra;\n const t = i18n.getFixedT(i18n.language, 'story');\n dispatch(patch({ spinner: true }));\n\n let imageResponse: ImageResponse;\n if (getImage(fileInputID)) {\n imageResponse = await postImage(fileInputID)(dispatch, getState, extra);\n if (!imageResponse) return;\n }\n\n try {\n const story = {\n ...newStory\n } as Story;\n delete story.id;\n if (imageResponse) {\n story.photo = imageResponse.url;\n } else if (!story.photo) {\n delete story.photo;\n }\n let pledge: CompetitionPledge;\n if (story.competitionPledgeID !== 0) {\n pledge = competitionPledges[story.competitionPledgeID];\n if (pledge.canUseMarkdown) {\n const { converter } = await import('../../utils/markdown');\n story.contentHTML = converter.makeHtml(story.contentMD);\n }\n }\n const state = getState();\n const api = selectors.userApi(state);\n const res = await api.postCompetitionStories(state.competition.id, { story, taggedUserIDs });\n trackEvent('story', 'create', pledge && pledge.shortTitle);\n const update: Partial = {\n spinner: false,\n savedStoryFormID,\n stories: [\n res.story,\n ...state.stories\n ],\n storyTaggedUserIDs: {\n 0: [],\n ...res.storyTaggedUserIDs\n },\n users: res.users\n };\n if (story.competitionPledgeID !== 0) {\n let latestToPledge = state.latestToPledge[story.competitionPledgeID] || [];\n if (!latestToPledge.some((userID) => userID === state.user.id)) {\n latestToPledge = [\n state.user.id,\n ...latestToPledge\n ];\n update.latestToPledge = { [story.competitionPledgeID]: up.constant(latestToPledge) };\n }\n }\n dispatch(patch(update));\n const { points } = res;\n if (points && points.points > 0) {\n try {\n addUserPoints(points, story.competitionPledgeID)(dispatch, getState, extra);\n } catch (err) {\n logger.error(err);\n }\n } else {\n toast({\n message: extra.i18n.t('Your story was saved successfully!', { ns: 'story' }),\n style: StyleState.Success\n })(dispatch, getState);\n }\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('story', 'unhandledError', 'create');\n }\n};\n\nexport const editStory = (storyID: number) => patch({ editingStoryID: storyID });\nexport const cancelStoryEdit = () => patch({\n editingStoryID: null\n});\n\nexport const highlightHero = (userID: number) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n dispatch(patch({ storyTaggedUserIDs: { [0]: [userID] } }));\n const { history, i18n } = extra;\n const { competitionPledges } = getState();\n const highlightAHero = values(competitionPledges).find((pledge) => pledge.uuid === CompetitionPledges.HighlightAHero);\n if (!highlightAHero) {\n handleUnexpectedError(new Error('Could not find HighlightAHero pledge.'))(dispatch, getState);\n return;\n }\n history.push(makePledgePath(highlightAHero, i18n.t));\n};\n\nexport const clearNewStoryTaggedUserIDs = () => patch({ storyTaggedUserIDs: { [0]: up.constant([]) }});\n\nexport const putStory = (storyForm: Story, taggedUserIDs: TaggedUserIDs, fileInputID: string, savedStoryFormID: string) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const t = extra.i18n.getFixedT(extra.i18n.language, 'story');\n dispatch(patch({ spinner: true }));\n\n let imageResponse: ImageResponse;\n try {\n imageResponse = await postImage(fileInputID)(dispatch, getState, extra);\n } catch (err) {\n logger.error(err);\n }\n\n const story = {\n ...storyForm\n } as Story;\n if (imageResponse) {\n story.photo = imageResponse.url;\n } else if (!story.photo) {\n delete story.photo;\n }\n story.links = story.links || [];\n if (!story.locationQualifier) delete story.locationQualifier;\n\n const { stories } = getState();\n const api = selectors.userApi(getState());\n try {\n const res = await api.putStory(story.id, { story, taggedUserIDs });\n trackEvent('story', 'update');\n const storyIndex = stories.findIndex((s) => s.id === story.id);\n dispatch(patch({\n spinner: false,\n savedStoryFormID,\n stories: up.updateIn(`${storyIndex}`, res.story, stories),\n editingStoryID: null,\n storyTaggedUserIDs: { [story.id] : up.constant(res.storyTaggedUserIDs[story.id]) },\n users: res.users\n }));\n\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('story', 'unhandledError', 'update');\n }\n};\n\nexport const deleteStory = () => async (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n const { stories, storyToDelete } = getState();\n dispatch(patch({\n stories: up.reject((s) => s.id === storyToDelete.id)\n }));\n const api = selectors.userApi(getState());\n try {\n dispatch(patch({ modal: null }));\n const { competitionUserScores } = await api.deleteStory(storyToDelete.id);\n trackEvent('story', 'delete');\n dispatch(patch({ competitionUserScores }));\n } catch (err) {\n dispatch(patch({ stories }));\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('story', 'unhandledError', 'delete');\n }\n};\n\nexport const initializeStoryPage = (term?:string) => async (dispatch: Dispatch, getState: () => State, { history, i18n }: ExtraArguments) => {\n const { storyID } = getStoryParams(history.location, i18n);\n const state = getState();\n if (state.stories.some((s) => s.id === storyID)) return;\n\n dispatch(patch({ spinner: true }));\n const api = selectors.userApi(state);\n try {\n const { token } = state;\n const res = await api.getCompetitionStories(state.competition.id, 0, 0, 0, storyID, 1, term,token);\n dispatch(patch({\n ...res,\n spinner: false\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n","import { Dispatch } from 'redux';\nimport up from 'updeep';\nimport * as selectors from '../selectors';\nimport { State } from '../state';\nimport { ImageResponse, ImageMutation } from '../../userApi';\nimport { ExtraArguments } from '../extraArguments';\nimport { postFormData } from '../../utils/userApiHelper';\nimport { patch } from './patch';\nimport {\n dataURLToBlob, DataURLFromFile, setDataURLDimensions, getExtensionForMimeType, blobToDataURL\n} from '../../utils/image';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const clearPostedImage = (inputID: string) => {\n return patch({ postedImages: up.omitBy((_value: string, k: string) => k === inputID) });\n};\n\n// If postImage does not return an ImageResponse, but getImage(imageID) exists,\n// you can assume that saving the image failed.\nexport const postImage = (imageID: string) =>\n async (dispatch: Dispatch, getState: () => State, { i18n, getImage, delImage }: ExtraArguments): Promise => {\n const t = i18n.getFixedT(i18n.language, 'image');\n const dataURLFromFile = getImage(imageID);\n if (!dataURLFromFile) return;\n\n const blob = await dataURLToBlob(dataURLFromFile);\n const formData = new FormData();\n formData.append('image', blob, dataURLFromFile.filename);\n const state = getState();\n const basePath = selectors.userApiBasePath(state);\n try {\n const imgResponse = await postFormData(`${basePath}/image`, formData, state.token);\n trackEvent('image', 'create');\n delImage(imageID);\n dispatch(patch({\n postedImages: { [imageID]: imgResponse.url }\n }));\n return imgResponse;\n } catch (err) {\n handleUnexpectedError(err, {\n message: t('We failed to save your photo. Please contact support.')\n })(dispatch, getState);\n trackEvent('image', 'unhandledError', 'create');\n }\n };\n\nexport const postImageMutation = (dataURLFromFile: DataURLFromFile, mutation: ImageMutation) =>\nasync (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { i18n } = extra;\n const t = i18n.getFixedT(i18n.language, 'image');\n dispatch(patch({ spinner: true }));\n try {\n const state = getState();\n const { token } = state;\n const blob = await dataURLToBlob(dataURLFromFile);\n const formData = new FormData();\n formData.append('image', blob, dataURLFromFile.filename);\n formData.append('mutation', JSON.stringify(mutation));\n\n const options = {\n body: formData,\n headers: { Authorization: token, Accept: mutation.contentType.toString() || dataURLFromFile.mimeType },\n method: 'POST'\n };\n const basePath = selectors.userApiBasePath(state);\n\n const response = await fetch(`${basePath}/image_mutation`, options);\n trackEvent('image', 'mutate');\n const blob2 = await response.blob();\n const mimeType = response.headers.get('Content-type');\n const dataURL = await blobToDataURL(blob2);\n const newDataURL = await setDataURLDimensions({\n filename: dataURLFromFile.filename.replace(/\\.\\w+$/, getExtensionForMimeType(mimeType)),\n width: 0, height: 0,\n dataURL,\n mimeType\n });\n dispatch(patch({ spinner: false }));\n return newDataURL;\n } catch (err) {\n dispatch(patch({ spinner: false }));\n toast({\n style: StyleState.Warning,\n message: t('We had trouble editing your photo. Try cropping this photo or using another.')\n })(dispatch, getState);\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('image', 'unhandledError', 'mutate');\n }\n};\n","import * as React from 'react';\n\ninterface ManualProps {\n contentHTML: string;\n textOnly?: boolean;\n limit?: number;\n}\n\ninterface SafeHTMLState {\n safeContentHTML: string;\n}\n\nconst stripTags = (html: string): string => {\n const div = document.createElement('div');\n div.innerHTML = html;\n return div.textContent || div.innerText || '';\n};\n\nclass SafeHTML extends React.Component {\n public state: SafeHTMLState = { safeContentHTML: '' };\n\n public async componentWillMount() {\n const { filterHTML } = await import('../utils/markdown');\n this.setState({\n safeContentHTML: filterHTML(this.props.contentHTML)\n });\n }\n\n public render() {\n const { safeContentHTML } = this.state;\n const { textOnly, limit } = this.props;\n let content = safeContentHTML;\n if (textOnly) content = stripTags(safeContentHTML);\n if (limit && content.length > limit) content = `${content.slice(0, limit)}...`;\n return (\n
\n );\n }\n}\n\nexport default SafeHTML;\n","import * as React from 'react';\nimport { Table, Modal, ModalBody } from 'reactstrap';\nimport { Entity } from '../userApi';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { State, Modals } from '../redux/state';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { patch } from '../redux/actions/all';\nimport { connect } from 'react-redux';\n\ninterface Props {\n entities: Entity[];\n isOpen: boolean;\n toggle: (isOpen: boolean) => void;\n}\n\nconst EntityEmailDomains = ({\n isOpen, toggle, entities, t\n}: LProps) => (\n toggle(isOpen)}\n >\n \n \n \n \n \n \n \n \n \n {entities.map((entity) => (\n \n \n \n \n ))}\n \n
{t('University')}{t('Permitted domains')}
{entity.name}{entity.permittedDomains.join(', ')}
\n
\n \n);\n\nconst mapStateToProps = (state: State): Partial => ({\n isOpen: state.modal === Modals.EntityEmailDomains,\n entities: state.competitionEntityScores.university ? state.competitionEntityScores.university.map((score) => state.entities[score.entityID]) : []\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n toggle: (isOpen) => patch({ modal: isOpen ? null : Modals.EntityEmailDomains })\n}, dispatch);\n\nexport default compose(\n withLocalization('email'),\n connect(mapStateToProps, mapDispatchToProps)\n)(EntityEmailDomains) as React.SFC;\n","export * from './auth';\nexport * from './competition';\nexport * from './userApi';\nexport * from './entities';\nexport * from './pledges';\nexport * from './scores';\nexport * from './user';\nexport * from './comment';\nexport * from './search';\nexport * from './stories';\n","import * as React from 'react';\nimport * as InfiniteScroll from 'react-infinite-scroller';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport StoryComponent from './StoryComponent';\nimport { Stories, Pagination, CompetitionPledge, Story } from '../userApi';\nimport { State, Modals } from '../redux/state';\nimport actions from '../redux/actions';\nimport { connect } from 'react-redux';\nimport * as selectors from '../redux/selectors';\nimport StoryCreator from './StoryCreator';\nimport ConfirmDeleteModal from './ConfirmDeleteModal';\nimport UserIneligibleForPledge from './UserIneligibleForPledge';\nimport StoryPoints from './StoryPoints';\nimport { Alert } from 'reactstrap';\nimport { StyleState } from '../utils/styles';\n\ninterface ManualProps {\n showPrompt?: boolean;\n}\n\ninterface Props extends ManualProps {\n stories: Stories;\n pagination: Pagination;\n pledge: CompetitionPledge;\n eligible: boolean;\n modal: Modals;\n canUseMarkdown: boolean;\n deleteStory: () => void;\n pageStories: (page: number) => void;\n closeConfirmStoryDelete: () => void;\n}\ninterface StoriesState {\n term: string\n searched: string\n}\nclass StoriesComponent extends React.Component,StoriesState> {\n constructor(props:LProps){\n super(props)\n this.state = {\n term: \"\",\n searched: \"\"\n }\n }\n render(){\n const {term, searched} = this.state\n const {\n t, stories, pagination, pageStories, pledge, canUseMarkdown,\n closeConfirmStoryDelete, eligible, modal, deleteStory, showPrompt = false} = this.props;\n return (\n
\n {/*}\n
\n this.setState({term:ev.target.value})}/>\n \n
*/}\n \n {(showPrompt && canUseMarkdown && eligible) &&\n \n }\n {(showPrompt && !eligible && pledge) &&\n \n }\n {!stories || stories.length == 0 ?\n \n \n
\n

\n {t(\"This user hasn't publish any stories yet\")}\n

\n
\n
\n :null}\n {t('Loading')} ...
}\n threshold={250}\n >\n {(showPrompt && !canUseMarkdown && eligible) &&\n \n }\n {stories.map((story:Story) =>\n \n )}\n \n \n
)\n }\n}\n\nconst mapStateToProps = (state: State): Partial => {\n const pledge = state.competitionPledges[state.storyQuery.competitionPledgeID];\n const canUseMarkdown = pledge && pledge.canUseMarkdown;\n return {\n stories: state.stories || [],\n pledge,\n eligible: selectors.isUserEligibleForStoryQueryPledge(state),\n canUseMarkdown,\n modal: state.modal,\n pagination: state.storyPagination\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n pageStories: actions.pageStoriesThrottle,\n deleteStory: actions.deleteStory,\n closeConfirmStoryDelete: actions.closeConfirmStoryDelete\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('story')\n)(StoriesComponent) as React.ComponentClass;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { Button } from 'reactstrap';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { State } from '../../redux/state';\nimport { connect } from 'react-redux';\nimport ImageUploadTrigger from './ImageUploadTrigger';\nimport ImageInput from './ImageInput';\nimport { DataURLFromFile, clearFileInput } from '../../utils/image';\nimport ImageEditor from './ImageEditor';\nimport FormTextAspectRatio from './FormTextAspectRatio';\nimport { ImageStoreProps, withImages } from '../../redux/imageStore';\nimport { imageMutationToServerIM } from '../../utils/userApiHelper';\nimport { ImageMutation } from '../../userApi';\nimport actions from '../../redux/actions';\n\ntype MediaType ='picture'|'video';\ninterface ManualProps {\n id: string;\n disabled?: boolean;\n currentImage: string;\n prompt?: string;\n photoClassName?: string;\n readyPhotoClassName?: string;\n aspectRatio?: string;\n onDelete?: () => void;\n banner?: boolean;\n \n}\n\ninterface Props extends ManualProps, ImageStoreProps {\n postedImage: string;\n postImageMutation: (dataURLFromFile: DataURLFromFile, mutation: Partial) => Promise;\n}\n\ninterface ImageUploaderState {\n dataURLFromFile: DataURLFromFile;\n editing: boolean;\n type: MediaType;\n}\nconst initialState: ImageUploaderState = {\n dataURLFromFile: null,\n editing: false,\n type: 'picture'\n};\nconst wasImagePostedOrCleared = (nextProps: Props, actualProps: Props) =>\n nextProps.postedImage !== actualProps.postedImage;\n\nclass ImageUploader extends React.Component, ImageUploaderState> {\n public state = initialState;\n\n private open() {\n if (this.props.disabled) return;\n document.getElementById(this.props.id).click();\n }\n\n private delete() {\n const { onDelete } = this.props;\n const { dataURLFromFile } = this.state;\n if (dataURLFromFile) {\n this.clearDataURL();\n } else if (onDelete) {\n onDelete();\n }\n }\n\n // Once the photo has been uploaded, display the uploaded photo,\n // clear the file input, and dataURL preview so it is not present\n // once the form has been saved.\n public async componentWillReceiveProps(nextProps: LProps) {\n if (wasImagePostedOrCleared(nextProps, this.props)) {\n this.clearDataURL();\n }\n }\n\n public componentWillUnmount() {\n const { delImage, id } = this.props;\n delImage(id);\n }\n\n private clearDataURL() {\n const { id, delImage } = this.props;\n this.setState({ dataURLFromFile: null, editing: false });\n delImage(id);\n clearFileInput(id);\n }\n\n private async setEditedDataURLFromFile(dataURLFromFile: DataURLFromFile, initialize: boolean = false) {\n const { id, setImage, postImageMutation } = this.props;\n let type:MediaType = 'picture'\n let editing = this.state.editing;\n let readyImage = dataURLFromFile; \n if (initialize && dataURLFromFile.mimeType.indexOf('video')== -1) {\n // By default this will compress the image so that further compression is not necessary\n // on client.\n const mutation = imageMutationToServerIM({ backgroundColor: '' }, 1, ImageMutation.ContentTypeEnum.Png);\n readyImage = await postImageMutation(dataURLFromFile, mutation);\n }else if(initialize){\n readyImage = dataURLFromFile\n type= 'video'\n }\n if (!readyImage) editing = false;\n this.setState({ dataURLFromFile: readyImage, editing, type });\n setImage(id, dataURLFromFile);\n clearFileInput(id);\n }\n\n public render() {\n const { dataURLFromFile, editing, type } = this.state;\n const {\n id, t, currentImage, prompt, onDelete, aspectRatio,\n readyPhotoClassName = '', photoClassName = '', disabled = false\n } = this.props;\n const anyImage = Boolean(dataURLFromFile || currentImage);\n return (\n \n this.setEditedDataURLFromFile(newFile, true)}\n />\n {!anyImage &&\n \n }\n
\n {anyImage && type =='picture' &&\n (() => {\n if (editing) {\n return (\n this.setEditedDataURLFromFile(update)}\n />\n );\n } else if (dataURLFromFile) {\n return ({dataURLFromFile.filename);\n } else if (currentImage) {\n return ({t('image')});\n }\n }\n )()\n }\n {anyImage && type =='video' && \n
\n {anyImage &&\n
\n this.open()}\n >\n {dataURLFromFile && type=='picture' &&\n this.setState({ editing: !this.state.editing })}\n >\n }\n {(dataURLFromFile || onDelete) &&\n this.delete()}\n >}\n
\n }\n {aspectRatio && }\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: Partial): Partial => ({\n postedImage: state.postedImages[ownProps.id]\n});\nconst mapDispatchToProps = (dispatch: Dispatch, ownProps: Partial) => bindActionCreators({\n postImageMutation: actions.postImageMutation\n}, dispatch);\n\nexport default compose(\n withLocalization('imageUploader'),\n connect(mapStateToProps, mapDispatchToProps),\n withImages([])\n)(ImageUploader) as React.SFC;\n","import * as React from 'react';\nimport ReactMde from 'react-mde';\n\ninterface Props {\n value: string;\n textAreaProps?: React.TextareaHTMLAttributes;\n onChange: (markdown: string) => void;\n}\n\ninterface MarkdownEditorState {\n converter: showdown.Converter;\n html: string;\n preview: boolean;\n}\n\nclass MarkdownEditor extends React.Component {\n public state: MarkdownEditorState = { converter: null, html: '', preview: false };\n\n public async componentWillMount() {\n const { converter } = await import('../utils/markdown');\n this.setState({ converter });\n }\n\n public render() {\n const { converter } = this.state;\n if (converter === null) return '';\n\n const { onChange, value, textAreaProps = {} } = this.props;\n return (\n this.setState({ preview: !this.state.preview })}\n generateMarkdownPreview={(markdown) =>\n Promise.resolve(converter.makeHtml(markdown))\n }\n />\n );\n }\n}\n\nexport default MarkdownEditor;\n","import { pick } from 'lodash';\nimport { bindActionCreators } from 'redux';\nimport * as actions from './all';\n\n// helpers\nexport * from './types';\nexport { bindActionCreators, pick };\n\nexport default actions;\n","import * as React from 'react';\nimport { template, templateSettings } from 'lodash';\nimport { TranslationFunction, TranslationOptions } from 'i18next';\n\nexport interface I18next {\n getFixedT: (language: string, namespace: string) => TranslationFunction;\n t: (key: string, options?: TranslationOptions) => string;\n language: string;\n}\n\ntemplateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\nconst t = (key: string, options: TranslationOptions = {}) => {\n if (Object.keys(options).length > 0) {\n return template(key)(options);\n }\n return key;\n};\nconst shim = {\n getFixedT: (_language: string, _namespace: string) => t,\n t,\n language: 'en-US'\n};\n\nexport const i18nextContext = React.createContext(shim);\n\nexport interface I18nContext {\n i18n: I18next;\n}\n\nexport default shim;\n","import { compact, pick, last } from 'lodash';\nimport {\n ValidationErrors, ValidationError, CompetitionScoreLevel, UserRead, Comment,\n Story, UserWrite, CompetitionPledge, MembershipLevel, UserType, PledgeCompletions, CompetitionUserScore, CompetitionScoreLevels, CompetitionPledgeUserType, Competition, RGBA,\n ImageMutation as ServerImageMutation,\n Entity\n} from '../userApi';\nimport { TranslationFunction } from 'i18next';\nimport { joinAnd } from './joinAnd';\nimport { I18next } from './i18nextShim';\nimport moment = require('moment');\nimport { ImageMutation } from './image';\nimport logger from './logger';\n\nexport enum CompetitionPledges {\n HighlightAHero = 'd38c64a1-e216-4f91-b66f-e17c50c9e25a',\n InviteAFriend = '34b4e1c4-5217-426e-a966-4c1ff0ea2d71',\n AddAnAction = '71b4fb8d-f5e2-4bc8-8aef-dfac92d8baae',\n AttendAnEvent = '41dcbd5c-90fd-49a6-8f46-fa9ab0039156',\n TakeCalculator = 'cdcb0d93-53af-4c7c-8750-27f389fb8e92',\n TakeSurvey = 'e13cd5b6-351a-4c48-83d9-051428e4a626'\n}\n\n//export const competitionName = 'coolcampuschallenge2019';\n\nexport const isValidationErrors = (err: any): err is ValidationErrors => {\n return err instanceof Array &&\n (err as ValidationError[]).some((validationError) => validationError.code !== undefined);\n};\n\nexport const isResponse = (err: any): err is Response =>\n err.json instanceof Function && err.text instanceof Function;\n\nexport const getValidationErrors = async (err: any) => {\n if (!isResponse(err)) {\n return;\n }\n const res = err.clone();\n try {\n const payload = await res.json();\n if (isValidationErrors(payload)) { \n return payload;\n }\n } catch (readErr) {\n // Not validation error response. Pass.\n }\n return;\n};\n\nexport const getScoreLevelColor = (scoreLevel: CompetitionScoreLevel) => {\n switch (scoreLevel.name) {\n case 'Champion':\n return '#e44c9a';\n case 'Ambassador':\n return '#ff8f28';\n case 'Apprentice':\n return '#ffd200';\n case 'Novice':\n return '#47A4D6';\n default:\n return '#808080';\n }\n};\n\nexport const getScoreLevelPhoto = (scoreLevel: CompetitionScoreLevel, size: '' | '@2x' | '@3x' = '') => {\n switch (scoreLevel.name) {\n case 'Champion':\n return `/assets/score_levels/champion-icon-large${size}.png`;\n case 'Ambassador':\n return `/assets/score_levels/ambassador-icon-large${size}.png`;\n case 'Apprentice':\n return `/assets/score_levels/apprentice-icon-large${size}.png`;\n case 'Novice':\n return `/assets/score_levels/novice-icon-large${size}.png`;\n default:\n return null;\n }\n};\n\nexport const displayFullName = (user: UserRead) =>\n compact([user.firstName, user.lastName]).join(' ');\n\nexport const commentableTypeToString = (commentableType: Comment.CommentableTypeEnum) => {\n switch (commentableType) {\n case Comment.CommentableTypeEnum.Story:\n return 'story';\n case Comment.CommentableTypeEnum.BlogEntry:\n return 'blog_entry';\n default:\n throw new Error(`Unsupported commentableType: ${commentableType}.`);\n }\n};\n\nconst { LocationQualifierEnum } = Story;\n\nexport const toLocationQualifierEnum = (value: string): Story.LocationQualifierEnum => {\n switch (value) {\n case 'home':\n return LocationQualifierEnum.Home;\n case 'work':\n return LocationQualifierEnum.Work;\n case 'both':\n return LocationQualifierEnum.Both;\n default:\n if (value !== '') logger.error(new Error(`Unsupported Story.LocationQualifierEnum ${value}.`));\n return LocationQualifierEnum.Empty;\n }\n};\nconst { StatusEnum } = Story;\n\nexport const toStoryStatusEnum = (value: string): Story.StatusEnum => {\n switch (value) {\n case 'already_do':\n return StatusEnum.AlreadyDo;\n case 'new':\n return StatusEnum.New;\n default:\n if (value !== '') logger.error(new Error(`Unsupported Story.StatusEnum ${value}.`));\n return StatusEnum.Empty;\n }\n};\n\n// Autogenerated code does not support multi-part form data.\n// It is fixed in a future release: https://github.com/OpenAPITools/openapi-generator/pull/569\nexport const postFormData = async (url: string, body: FormData, token?: string): Promise => {\n const options = {\n body,\n headers: { Authorization: token },\n method: 'POST'\n };\n const response = await fetch(url, options);\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n};\n\nexport const userReadToWrite = (user: UserRead): UserWrite =>\n pick(user, [\n 'type', 'email', 'firstName', 'lastName', 'profilePhoto', 'descriptionMD',\n 'descriptionHTML', 'public', 'socialLinks', 'options'\n ]) as UserWrite;\n\nexport const makeCampusHeroTitle = (taggedUsers: UserRead[], t: TranslationFunction) => {\n let title = '';\n if (taggedUsers.length > 1) {\n title = t('Cool Campus Heroes', { ns: 'story' });\n } else {\n title = t('Cool Campus Hero', { ns: 'story' });\n }\n const userNames = taggedUsers.map((user) => displayFullName(user));\n return `${title}: ${joinAnd(userNames, t)}`;\n};\n\nexport const makeStoryTitle = (story: Story, pledge: CompetitionPledge, taggedUsers: UserRead[], t: TranslationFunction) => {\n if (!pledge) return '';\n if (pledge.uuid === CompetitionPledges.HighlightAHero) {\n return makeCampusHeroTitle(taggedUsers, t);\n }\n return pledge.shortTitle;\n};\n\nexport const atLeastAdmin = (level: MembershipLevel) =>\n (level === MembershipLevel.Admin || level === MembershipLevel.Superadmin);\n\nexport const atLeastSuperadmin = (level: MembershipLevel) =>\n (level === MembershipLevel.Superadmin);\n\nexport const displayUserType = (userType: UserType, i18n: I18next) => {\n const t = i18n.getFixedT(i18n.language, 'userType');\n switch (userType) {\n case UserType.Student:\n return t('Student');\n case UserType.Faculty:\n return t('Faculty');\n case UserType.Staff:\n return t('Staff');\n default:\n return '';\n }\n};\n\nexport const displayCompetitionPledgeUserType = (userType: CompetitionPledgeUserType, i18n: I18next) => {\n const t = i18n.getFixedT(i18n.language, 'userType');\n switch (userType) {\n case CompetitionPledgeUserType.Staff:\n return t('staff');\n case CompetitionPledgeUserType.Labs:\n return t('labs');\n default:\n logger.error(new Error(`Unexpect CompetitionPledgeUserType ${userType}.`));\n return '';\n }\n};\n\nexport const userTypeFromString = (userTypeS: string): UserType =>\n UserType[Object.keys(UserType).find((userType) => UserType[userType as any].toString() === userTypeS) as any] as any;\n\nexport const pointsPerPhoto = 50;\nexport const pointsPerStoryRepeat = 50;\n\nexport const calculatePointsForNextStory = (pledgeCompletions: PledgeCompletions, pledge: CompetitionPledge) => {\n if (!pledge) return 0;\n if (!pledgeCompletions) return pledge.points;\n const completions = pledgeCompletions[pledge.id] || 0;\n if (completions === 0) return pledge.points;\n if (completions >= pledge.repeats) return 0;\n return Math.min(pledge.points, pointsPerStoryRepeat);\n};\n\nexport const estimatePointsAvailable = (pledgeCompletions: PledgeCompletions, pledge: CompetitionPledge) => {\n if (!pledge || !pledgeCompletions) return 0;\n const repeatPoints = Math.min(pledge.points, pointsPerStoryRepeat);\n const totalPointsAvailable = pledge.points + repeatPoints * Math.max(0, pledge.repeats - 1);\n const completions = pledgeCompletions[pledge.id];\n if (completions >= pledge.repeats) return 0;\n if (completions === undefined || completions === 0) return totalPointsAvailable;\n if (completions === 1) return totalPointsAvailable - pledge.points;\n return totalPointsAvailable - repeatPoints * (completions - 1);\n};\n\nexport const someMatchingEmailDomain = (email: string, permittedDomains: string[]) =>\n permittedDomains.some((domain) => last(email.split('@')).search(domain) >= 0);\n\n// IMPORTANT: These must coincide with validations in app/operations/validate_pledge_eligibility.go.\nexport const isUserScoreEligibleForPledge = (score: CompetitionUserScore, scoreLevels: CompetitionScoreLevels, pledge: CompetitionPledge) => {\n if (!pledge || !pledge.scoreLevelUUID || !scoreLevels) return true;\n const thresholdLevel = scoreLevels.find((scoreLevel) => scoreLevel.uuid === pledge.scoreLevelUUID);\n if (!thresholdLevel) return true;\n return score.points >= thresholdLevel.threshold;\n};\n\nexport const isUserTypeEligibleForPledge = (user: UserRead, pledge: CompetitionPledge) => {\n if (!pledge.userTypes || pledge.userTypes.length === 0) return true;\n if (user.options.isLabUser && pledge.userTypes.some((userType) => userType === CompetitionPledgeUserType.Labs)) {\n return true;\n } else if (user.options.isHealthFacilityEmployee && pledge.userTypes.some((userType) => userType === CompetitionPledgeUserType.Staff)) {\n return true;\n }\n return false;\n};\n\nexport const isDateEligibleForPledge = (pledge: CompetitionPledge, competition: Competition) => {\n if (!pledge.releaseWeek || pledge.releaseWeek === 1) return true;\n return moment(competition.startsAt).add(pledge.releaseWeek - 1, 'weeks').isBefore(Date.now());\n};\n\nexport const savingsCO2LbsToCars = (savingsCO2Lbs: number): number => savingsCO2Lbs * 96.3 / Math.pow(10, 6);\n\nexport const maxImageSizeBytes = 1 * Math.pow(10, 6);\n\nconst hexToRgba = (hex: string): RGBA => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n a: 1\n } : { r: 0, g: 0, b: 0, a: 0 };\n};\n\nexport const roundTo = (value:number, decimals:number)=>{\n\n let round = Math.round(value) \n return round\n}\n\nexport const imageMutationToServerIM = (mutation: Partial, maxMB: number, contentType: ServerImageMutation.ContentTypeEnum): ServerImageMutation => {\n const crop = { x: roundTo(mutation.pixelCrop?.x||0,3), y: roundTo(mutation.pixelCrop?.y||0,3), width: mutation.pixelCrop?.width||0, height: mutation.pixelCrop?.height||0 }\n if(mutation.image){ \n const imageWidth = mutation.image.width\n const imageHeight = mutation.image.height\n const imageFullWidth = mutation.image.naturalWidth\n const imageFullHeight = mutation.image.naturalHeight \n crop.x = Math.round(crop.x * imageFullWidth / imageWidth)\n crop.y = Math.round(crop.y * imageFullHeight / imageHeight)\n crop.width = Math.round(crop.width * imageFullWidth / imageWidth)\n crop.height = Math.round(crop.height * imageFullHeight / imageHeight)\n }\n\n return {\n rotation: -mutation.rotation || 0,\n bgColor: hexToRgba(mutation.backgroundColor),\n crop,\n contentType,\n maxMB \n }\n};\n\nexport const entityCanBlog = (entity: Entity) => entity.type === Entity.TypeEnum.University;\n","// tslint:disable\n/**\n * Cool Climate Competition API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n\nexport * from \"./api\";\nexport * from \"./configuration\";\nexport * from \"./errors\";\n","import { UiError } from '../state';\nimport { ActionType, ApplicationAction } from './types';\nimport { patch } from './patch';\n\nexport const setError = (err: UiError): ApplicationAction => patch(\n { error: err }, ActionType.SetError\n);\n","import * as ReactCrop from 'react-image-crop';\nimport { last } from 'lodash';\nimport { maxImageSizeBytes } from './userApiHelper';\nimport logger from './logger';\n\nexport interface ImageMutation {\n rotation: number;\n backgroundColor: string;\n pixelCrop: ReactCrop.Crop;\n image: HTMLImageElement\n}\n\nexport interface DataURLFromFile {\n dataURL: string;\n mimeType?: string;\n width: number;\n height: number;\n filename?: string;\n}\n\nexport const clearFileInput = (inputID: string) => {\n const input = document.getElementById(inputID) as HTMLInputElement;\n if (!input) {\n logger.error(`clearFileInput: Failed to find file input element ${inputID}.`);\n return;\n }\n input.value = '';\n};\n\n// https://stackoverflow.com/a/17412387/1149459\nexport const applyRotation = async (canvas: HTMLCanvasElement, dataURLFromFile: DataURLFromFile, degrees: number, invertDimensions: boolean = false): Promise => {\n clearCanvas(canvas);\n const context = canvas.getContext('2d');\n\n // save the unrotated context of the canvas so we can restore it later\n // the alternative is to untranslate & unrotate after drawing\n if (invertDimensions) {\n const { width, height } = canvas;\n canvas.width = height;\n canvas.height = width;\n }\n context.save();\n\n // move to the center of the canvas\n context.translate(canvas.width / 2, canvas.height / 2);\n\n // rotate the canvas to the specified degrees\n context.rotate(degrees * Math.PI / 180);\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n // draw the image\n // since the context is rotated, the image will be rotated also\n context.drawImage(image, -image.width / 2, -image.height / 2);\n\n // we’re done with the rotating so restore the unrotated context\n context.restore();\n const updatedDataURLFromFile: DataURLFromFile = {\n filename: dataURLFromFile.filename,\n mimeType: dataURLFromFile.mimeType,\n width: canvas.width,\n height: canvas.height,\n dataURL: canvas.toDataURL(dataURLFromFile.mimeType)\n };\n resolve(updatedDataURLFromFile);\n };\n image.onerror = reject;\n image.src = dataURLFromFile.dataURL;\n });\n};\n\nexport const applyBackgroundColor = async (canvas: HTMLCanvasElement, dataURLFromFile: DataURLFromFile, color: string): Promise => {\n clearCanvas(canvas);\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n const updatedDataURLFromFile: DataURLFromFile = {\n filename: dataURLFromFile.filename,\n mimeType: dataURLFromFile.mimeType,\n width: image.width,\n height: image.height,\n dataURL: canvas.toDataURL(dataURLFromFile.mimeType)\n };\n resolve(updatedDataURLFromFile);\n };\n image.onerror = reject;\n image.src = dataURLFromFile.dataURL;\n });\n};\n\nexport const applyCrop = async (canvas: HTMLCanvasElement, dataURLFromFile: DataURLFromFile, pixelCrop: ReactCrop.Crop): Promise => {\n clearCanvas(canvas);\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n const ctx = canvas.getContext('2d');\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n ctx.drawImage(\n image,\n pixelCrop.x,\n pixelCrop.y,\n pixelCrop.width,\n pixelCrop.height,\n 0,\n 0,\n pixelCrop.width,\n pixelCrop.height\n );\n const updatedDataURLFromFile: DataURLFromFile = {\n filename: dataURLFromFile.filename,\n mimeType: dataURLFromFile.mimeType,\n width: pixelCrop.width,\n height: pixelCrop.height,\n dataURL: canvas.toDataURL(dataURLFromFile.mimeType)\n };\n resolve(updatedDataURLFromFile);\n };\n image.onerror = reject;\n image.src = dataURLFromFile.dataURL;\n });\n};\n\nexport const clearCanvas = (canvas: HTMLCanvasElement) => {\n const ctx = canvas.getContext('2d');\n // Store the current transformation matrix\n ctx.save();\n\n // Use the identity matrix while clearing the canvas\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n // Restore the transform\n ctx.restore();\n};\n\nexport const getDataURLFromFileInput = async (inputID: string): Promise => {\n const input = document.getElementById(inputID) as HTMLInputElement;\n if (!input) {\n throw new Error(`Failed to find file input element ${inputID}.`);\n }\n const file = input.files && input.files[0];\n if (file) {\n const reader = new FileReader();\n\n return new Promise((resolve, reject) => {\n reader.onload = () => {\n const result = reader.result;\n let dataURL: string;\n if (result instanceof ArrayBuffer) {\n dataURL = String.fromCharCode.apply(null, new Uint16Array(result));\n } else {\n dataURL = result;\n }\n if(file.type.indexOf('video') ==-1){\n const img = new Image();\n img.onload = async () => {\n const dataURLFromFile = { dataURL, mimeType: file.type, width: img.width, height: img.height, filename: file.name };\n resolve(dataURLFromFile);\n };\n img.onerror = reject;\n img.src = dataURL;\n }else{\n const dataURLFromFile = { dataURL, mimeType: file.type, width: 0, height: 0, filename: file.name };\n resolve(dataURLFromFile);\n }\n };\n reader.onerror = reject;\n\n reader.readAsDataURL(file);\n });\n }\n return;\n};\n\n/*export const drawDataURLToCanvas = (canvas: HTMLCanvasElement, dataURLFromFile: DataURLFromFile) => {\n clearCanvas(canvas);\n const ctx = canvas.getContext('2d');\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n canvas.width = dataURLFromFile.width;\n canvas.height = dataURLFromFile.height;\n ctx.drawImage(\n image, 0, 0, dataURLFromFile.width, dataURLFromFile.height\n );\n resolve(canvas.toDataURL(dataURLFromFile.mimeType));\n };\n image.onerror = reject;\n image.src = dataURLFromFile.dataURL;\n });\n};*/\n\nconst minimumAcceptableWidth = 100;\n\nexport const ErrCouldNotCompressFile = new Error('Could not compress file to acceptable size while maintaining minimum width.');\n\n/*export const lossyCompressUntilAcceptable = async (canvas: HTMLCanvasElement, dataURLFromFile: DataURLFromFile) => {\n let fileSize = dataURLBytes(dataURLFromFile);\n let compressedDataURL = dataURLFromFile;\n while (fileSize > maxImageSizeBytes) {\n if (compressedDataURL.width < minimumAcceptableWidth) {\n throw ErrCouldNotCompressFile;\n }\n const compressionRatio = 1 / (fileSize / maxImageSizeBytes);\n compressedDataURL = await lossyCompressDataURL(canvas, compressedDataURL, compressionRatio);\n fileSize = await dataURLBytes(compressedDataURL);\n }\n return compressedDataURL;\n};*/\n\n// This essentially shrinks the dimensions of the photos in order to reduce the file size.\n/*export const lossyCompressDataURL = async (canvas: HTMLCanvasElement, dataURLFromFile: DataURLFromFile, areaRatio: number): Promise => {\n const oneDRatio = Math.sqrt(areaRatio);\n const targetWidth = dataURLFromFile.width * oneDRatio;\n const targetHeight = dataURLFromFile.height * oneDRatio;\n const ctx = canvas.getContext('2d');\n const img = new Image();\n return new Promise((resolve, reject) => {\n img.onload = () => {\n // set size proportional to image\n canvas.height = targetHeight;\n canvas.width = targetWidth;\n\n // step 1 - resize to 50%\n const oc = document.createElement('canvas');\n const octx = oc.getContext('2d');\n\n oc.width = targetWidth;\n oc.height = targetHeight;\n octx.drawImage(img, 0, 0, oc.width, oc.height);\n // step 2\n octx.drawImage(oc, 0, 0, targetWidth, targetHeight);\n\n // step 3, resize to final size\n ctx.drawImage(oc, 0, 0, targetWidth, targetHeight, 0, 0, targetWidth, targetHeight);\n\n const updatedDataURLFromFile: DataURLFromFile = {\n ...dataURLFromFile,\n width: targetWidth,\n height: targetHeight,\n dataURL: canvas.toDataURL(dataURLFromFile.mimeType)\n };\n resolve(updatedDataURLFromFile);\n };\n img.onerror = reject;\n img.src = dataURLFromFile.dataURL;\n });\n};*/\n\n// See https://stackoverflow.com/a/7261048/1149459\nexport const dataURLToBlob = (dataURLFromFile: DataURLFromFile): Blob => {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n const byteString = atob(dataURLFromFile.dataURL.split(',')[1]);\n\n // separate out the mime component\n\n // write the bytes of the string to an ArrayBuffer\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ab], {type: dataURLFromFile.mimeType});\n};\n\nexport const blobToDataURL = (blob: Blob): Promise => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result.toString());\n };\n reader.onerror = reject;\n reader.onabort = reject;\n reader.readAsDataURL(blob);\n });\n};\n\nexport const dataURLBytes = (dataURLFromFile: DataURLFromFile): number => dataURLToBlob(dataURLFromFile).size;\n\nexport const isJPG = (mimeType: string) => mimeType.search(/(jpg|jpeg)/i) >= 0;\n\n/*const getMimeTypeFromFromSrc = (src: string) => {\n switch (true) {\n case src.search(/\\.(jpg|jpeg)$/) >= 0:\n return 'image/jpeg';\n case src.search(/\\.png$/) >= 0:\n return 'image/png';\n case src.search(/\\.png$/) >= 0:\n return 'image/gif';\n default:\n return 'text/plain';\n }\n};*/\nexport const getExtensionForMimeType = (mimeType: string) => {\n switch (mimeType) {\n case 'image/jpeg':\n return '.jpg';\n case 'image/png':\n return '.png';\n case 'image/gif':\n return '.fig';\n default:\n logger.error(new Error(`Unexpected image mimetype ${mimeType}.`));\n return 'text/plain';\n }\n};\n\n/*export const imageSrcToDataURL = (canvas: HTMLCanvasElement, src: string): Promise => {\n return new Promise((resolve, fail) => {\n const image = new Image();\n\n image.onload = () => {\n canvas.width = image.naturalWidth; // or 'width' if you want a special/scaled size\n canvas.height = image.naturalHeight; // or 'height' if you want a special/scaled size\n\n canvas.getContext('2d').drawImage(image, 0, 0);\n const mimeType = getMimeTypeFromFromSrc(src);\n\n resolve({\n dataURL: canvas.toDataURL(mimeType),\n width: image.width,\n height: image.height,\n filename: last(src.split('/')),\n mimeType\n });\n };\n image.src = src;\n image.onabort = fail;\n image.onerror = fail;\n });\n};*/\n\nexport const setDataURLDimensions = (dataURLFromFile: DataURLFromFile): Promise => {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n dataURLFromFile.width = image.width;\n dataURLFromFile.height = image.height;\n resolve(dataURLFromFile);\n };\n image.onerror = reject;\n image.src = dataURLFromFile.dataURL; \n });\n};\n","import { ExtraArguments } from '../extraArguments';\nimport { State, Modals } from '../state';\nimport up from 'updeep';\nimport { Dispatch } from 'redux';\nimport { patch } from './patch';\nimport { Entity, PledgeCompletions, PledgePoints, CompetitionUserPoint } from '../../userApi';\nimport logger from '../../utils/logger';\n\ninterface Pointable {\n points?: number;\n savingsCO2Lbs?: number;\n savingsWaterOz?: number;\n savingsGasGallons?: number;\n savingsElectricityKwh?: number;\n}\n\nconst addPointsToScore = (points: Pointable, score: Pointable) => ({\n points: score.points + points.points,\n savingsCO2Lbs: score.savingsCO2Lbs + points.savingsCO2Lbs,\n savingsWaterOz: score.savingsWaterOz + points.savingsWaterOz,\n savingsGasGallons: score.savingsGasGallons + points.savingsGasGallons,\n savingsElectricityKwh: score.savingsElectricityKwh + points.savingsElectricityKwh\n});\n\nexport const dismissStoryPointsModal = () => patch({\n modal: Modals.None,\n lastPointsEarned: null\n});\n\nexport const addUserPoints = (points: CompetitionUserPoint, pledgeID?: number, carbon?: number) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const {\n user, userPledgeCompletions, userPledgePoints, entities, competition,\n competitionEntityScores, competitionUserScores, competitionScore, competitionPledges\n } = getState();\n const competitionUserScore = competitionUserScores[user.id];\n const completionUpdates: PledgeCompletions = {};\n const pledgePointsUpdates: PledgePoints = {};\n if (pledgeID) {\n completionUpdates[pledgeID] = (userPledgeCompletions[pledgeID] || 0) + 1;\n pledgePointsUpdates[pledgeID] = (userPledgePoints[pledgeID] || 0) + points.points;\n }\n\n dispatch(patch({\n competitionScore: {\n ...competitionScore,\n ...addPointsToScore(points, competitionScore)\n },\n competitionUserScores: {\n [user.id]: {\n ...competitionUserScore,\n ...addPointsToScore(points, competitionUserScore)\n }\n },\n userPledgeCompletions: completionUpdates,\n userPledgePoints: pledgePointsUpdates,\n lastPointsEarned: points,\n lastPointsCanEarnMore: completionUpdates[pledgeID] < competitionPledges[pledgeID].repeats,\n modal: Modals.StoryPoints\n }));\n\n // Update user's entity scores\n const entityIDs = Object.keys(user.acceptedCompetitionEntityMemberships[competition.id]);\n entityIDs.forEach((entityID) => {\n const entity = entities[entityID as any];\n if (!entity) return;\n const entityType = entity.type;\n if (entityType === Entity.TypeEnum.Team) {\n const index = competitionEntityScores.team.findIndex((ces) => ces.entityID === Number(entityID));\n if (index === -1) {\n logger.error(`addUserPoints: Could not find team CompetitionEntityScore for entityID: ${entityID}.`);\n return;\n }\n dispatch(patch({\n competitionEntityScores: { team: up.updateIn(`${index}`, addPointsToScore(points, competitionEntityScores.team[index]), competitionEntityScores.team) }\n }));\n } else if (entityType === Entity.TypeEnum.University) {\n const index = competitionEntityScores.university.findIndex((ces) => ces.entityID === Number(entityID));\n if (index === -1) {\n logger.error(`addUserPoints: Could not find university CompetitionEntityScore for entityID: ${entityID}.`);\n return;\n }\n dispatch(patch({\n competitionEntityScores: { university: up.updateIn(`${index}`, addPointsToScore(points, competitionEntityScores.university[index]), competitionEntityScores.university) }\n }));\n } else if (entityType === Entity.TypeEnum.HealthFacility) {\n const index = competitionEntityScores.healthFacility.findIndex((ces) => ces.entityID === Number(entityID));\n if (index === -1) {\n logger.error(`addUserPoints: Could not find healthFacility CompetitionEntityScore for entityID: ${entityID}.`);\n return;\n }\n dispatch(patch({\n competitionEntityScores: { healthFacility: up.updateIn(`${index}`, addPointsToScore(points, competitionEntityScores.healthFacility[index]), competitionEntityScores.healthFacility) }\n }));\n } else {\n logger.error(`Unexpected entity type when adding user points: ${entityType}`);\n }\n });\n};\n","import { UserRead, CompetitionUser, Entity } from '../userApi';\nimport { displayFullName } from './userApiHelper';\nimport { isDevelopment } from './environment';\nimport logger from './logger';\n\nconst INTERCOM_APP_ID = 'khhafx5u';\n\ntype Operation = 'boot' | 'update' | 'shutdown';\n\ninterface IntercomOptions {\n user?: UserRead;\n competitionUser?: CompetitionUser;\n university?: Entity;\n force?: boolean;\n}\n\nexport const openIntercom = () => {\n if (!(window as any).Intercom) return;\n (window as any).Intercom('showMessages');\n};\n\ninterface IntercomData {\n app_id: string;\n name?: string;\n email?: string;\n created_at?: string;\n verified?: boolean;\n user_id?: number | string;\n campus_id?: number;\n campus_name?: string;\n}\n\nexport const intercom = (op: Operation, { user, competitionUser, university }: IntercomOptions = {}) => {\n if (isDevelopment) return;\n if (!(window as any).Intercom) {\n logger.warn('Intercom unavailable');\n return;\n }\n\n const data: IntercomData = {\n app_id: INTERCOM_APP_ID\n };\n if (user) {\n data.user_id = user.id;\n data.name = displayFullName(user);\n data.email = user.email;\n data.created_at = user.createdAt;\n }\n if (competitionUser) {\n data.verified = competitionUser.verified;\n }\n if (university) {\n data.campus_id = university.id;\n data.campus_name = university.name;\n }\n // We had an issue where all users were initialized with user_id=0.\n // We need to delete the Intercom cookie associated with that user\n // and reinitialize Intercom fresh.\n if (!data.user_id && !localStorage.getItem('intercomCookieResetv01')) {\n deleteIntercomCookie();\n localStorage.setItem('intercomCookieResetv01', '1');\n }\n\n (window as any).Intercom(op, data);\n};\n\nconst deleteIntercomCookie = () => {\n document.cookie = 'intercom-session-khhafx5u=;max-age=0; expires=Thu, 01 Jan 1970 00:00:00 UTC;domain=.coolcampuschallenge.org; path=/;';\n};\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport cx from 'classnames';\nimport { withLocalization, LProps } from '../utils/wrappers';\n\ninterface Props {\n profilePhoto?: string;\n alt?: string;\n outerStyle?: React.CSSProperties;\n rounded?: boolean;\n imgProps?: React.ImgHTMLAttributes;\n}\n\nconst ProfilePhoto = ({\n profilePhoto, t, alt, rounded = true, outerStyle = {}, imgProps = {}\n}: LProps) => (\n
\n
\n {Boolean(profilePhoto) ?\n {alt :\n }\n
\n
\n);\n\nexport default compose(\n withLocalization('profilePhoto')\n)(ProfilePhoto) as React.SFC;\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { State } from '../redux/state';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport { CompetitionEntityScore, Entity, CompetitionEntity } from '../userApi';\nimport { Link } from 'react-router-dom';\nimport { makeEntityPath } from '../utils/routerHelper';\n\ninterface ManualTeamScoreProps {\n score: CompetitionEntityScore;\n rank: number;\n}\n\ninterface TeamScoreProps extends ManualTeamScoreProps {\n competitionEntity: CompetitionEntity;\n team: Entity;\n}\n\nconst TeamScore = ({\n rank, score, team, competitionEntity, t, formatNumber\n}: LProps) => (\n \n #{rank}\n \n {team.abbreviation || (team.name || '').slice(0, 20)}\n \n {formatNumber(score.points, 0)}\n \n);\n\nconst ConnectedTeamScore = compose(\n connect((state: State, ownProps: ManualTeamScoreProps) => ({\n competitionEntity: state.competitionEntities[ownProps.score.entityID],\n team: state.entities[ownProps.score.entityID]\n })),\n withLocalization('scoreboard')\n)(TeamScore) as React.ComponentClass;\n\ninterface ManualProps {\n teamScores: CompetitionEntityScore[];\n limit?: number;\n}\n\nconst ScoreboardTeams = ({\n t, teamScores, limit\n}: LProps) => (\n \n \n \n \n \n \n \n {((limit ?teamScores&& teamScores.slice(0, limit) : teamScores) || []).map((teamScore, i) => (\n \n ))}\n \n
\n \n {t('Points')}
\n);\n\nexport default compose(\n withLocalization('scoreboard')\n)(ScoreboardTeams) as React.SFC;\n","import * as React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { State } from '../redux/state';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport { CompetitionUserScore, UserRead } from '../userApi';\nimport { Link } from 'react-router-dom';\nimport * as selectors from '../redux/selectors';\nimport { makeUserPath } from '../utils/routerHelper';\nimport { displayFullName } from '../utils/userApiHelper';\n\ninterface ManualUserScoreProps {\n score: CompetitionUserScore;\n rank: number;\n showRank: boolean;\n}\n\ninterface UserScoreProps extends ManualUserScoreProps {\n user: UserRead;\n}\n\nconst UserScore = ({\n rank, score, user, formatNumber, showRank, i18n\n}: LProps) => user ? (\n \n {showRank && #{rank}}\n \n {displayFullName(user)}\n \n {formatNumber(score.points, 0)}\n \n):null;\n\nconst ConnectedUserScore = compose(\n withLocalization('scoreboard'),\n connect((state: State, ownProps: ManualUserScoreProps) => ({\n user: selectors.someUser(state, ownProps.score.userID)\n }))\n)(UserScore) as React.SFC;\n\ninterface ManualProps {\n userScores: CompetitionUserScore[];\n showRank?: boolean;\n viewAll?: string;\n}\n\nconst ScoreboardParticipants = ({\n t, userScores, showRank = true, viewAll = ''\n}: LProps) => (\n
\n {viewAll && {t('View all >')}}\n \n \n \n {showRank && \n \n \n \n {userScores?.map((userScore, i) => (\n \n ))}\n \n
}\n \n {t('Points')}
\n
\n);\n\nexport default compose(\n withLocalization('scoreboard')\n)(ScoreboardParticipants) as React.SFC;\n","import { trim } from 'lodash';\nimport { I18next } from './i18nextShim';\n\nexport const orJoin = (strings: string[], i18n: I18next) => {\n const t = i18n.getFixedT(i18n.language, 'common');\n if (strings.length === 0) return '';\n if (strings.length === 1) return strings[0];\n if (strings.length === 2) return strings.join(` ${t('or')} `);\n return `${strings.slice(0, strings.length - 2).join(', ')} ${t('or')} ${strings[strings.length - 1]}`;\n};\n\nconst urlRegExpS = 'https?:[-a-zA-Z0-9@%_\\\\+.~#?&//=]{2,256}\\\\.[a-z]{2,4}\\\\b(\\\\/[-a-zA-Z0-9@:%_\\\\+.~#?&//=]*)?(\\\\?[-a-zA-Z0-9@:%_\\\\+.~#?&//=]*)?';\nconst urlRegExpSearch = new RegExp(urlRegExpS, 'gi');\nconst urlRegExp = new RegExp(`^${urlRegExpS}$`, 'i');\n\nconst localURLRegExpS = 'https?:\\\\/\\\\/(localhost|127\\\\.0\\\\.0\\\\.1|nginx)(:\\\\d{2,4})?\\\\b(\\\\/[-a-zA-Z0-9@:%_\\\\+.~#?&//=]*)?';\nconst localURLRegExpSearch = new RegExp(localURLRegExpS, 'gi');\nconst localURLRegExp = new RegExp(`^${localURLRegExpS}$`, 'gi');\n\nexport const hasURL = (s: string) => urlRegExpSearch.test(s) || localURLRegExpSearch.test(s);\nexport const isURL = (s: string) => urlRegExp.test(s) || localURLRegExp.test(s);\n\nexport const getURLs = (text: string) => {\n const externalMatches = text.match(urlRegExpSearch) || [];\n const localMatches = text.match(localURLRegExpSearch) || [];\n const matches = externalMatches.concat(localMatches);\n return matches.map((url) => trim(url));\n};\n","import * as React from 'react';\nimport { Modal, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport { compose } from 'redux';\n\ninterface ManualProps {\n isOpen: boolean;\n cancel: () => void;\n confirm: () => void;\n}\n\nconst ConfirmDeleteModal = ({\n isOpen, t, confirm, cancel\n}: LProps) => (\n \n {t('By confirming below you will permanently delete this content.')}\n \n \n \n \n \n);\n\nexport default compose(\n withLocalization('confirmDelete')\n)(ConfirmDeleteModal) as React.SFC;\n","import * as React from 'react';\nimport AuthButtons from './AuthButtons';\nimport { Link, Switch, Route, withRouter } from 'react-router-dom';\nimport { compose, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { RouterProps } from 'react-router';\nimport ReactPageScroller from 'react-page-scroller';\nimport { withLocalization, LProps } from '../../utils/wrappers';\nimport StatIcon, { StatType } from './StatIcon';\nimport Indicators from '../../shared/Indicator';\nimport { State } from '../../redux/state';\nimport a, { bindActionCreators } from '../../redux/actions';\nimport * as selectors from '../../redux/selectors';\nimport { Routes, makePathnames } from '../../utils/routerHelper';\nimport RouteLink from '../../shared/RouteLink';\nimport Login from './Login';\nimport Signup from './Signup';\nimport ForgotPassword from './ForgotPassword';\nimport PasswordReset from './PasswordReset';\nimport Overlay from '../../shared/Overlay';\nimport { TranslationFunction } from 'i18next';\nimport { CompetitionScore } from '../../userApi';\nimport { savingsCO2LbsToCars } from '../../utils/userApiHelper';\nimport Join from './Join';\n\ninterface PageScrollerComponentProps {\n backgroundImage: string;\n backgroundSet?: string;\n children?: React.ReactNode;\n className?: string;\n alt: string \n}\n\nconst PageScrollerComponent = ({\n backgroundImage,\n backgroundSet,\n className,\n children,\n alt\n}: PageScrollerComponentProps) => (\n
\n
\n \n {children}\n
\n
\n);\n\ninterface ManualProps {\n children?: React.ReactNode;\n readOnly?: boolean\n}\n\ninterface Props extends ManualProps {\n landingPagePosition: number;\n setLandingPagePosition: a.SetLandingPagePosition;\n canViewCompetitionContent: boolean;\n competitionScore: CompetitionScore;\n hasJoined: boolean;\n isLoggedIn: boolean;\n}\n\nconst HomeWeb = ({\n t, landingPagePosition, setLandingPagePosition, history, competitionScore, hasJoined, isLoggedIn, readOnly\n}: LProps & RouterProps) => {\n const paths = makePathnames(t);\n const path = history.location.pathname.split(\"/\") \n return (\n
\n \n
\n \n {t('Cool\n \n \n
\n {!readOnly ?\n {t('About')}\n :\n {t('About')}\n }\n
\n
\n
\n \n {sliders(t, competitionScore)}\n \n \n
\n \n
\n setLandingPagePosition(oneBasedPosition - 1)}\n >\n {sliders(t, competitionScore)}\n \n \n {path.length >= 2 && path[2] !='' && !readOnly &&\n
\n \n \n \n \n \n \n {!hasJoined && isLoggedIn && }\n \n \n
}\n \n)};\n\nexport const scrollToLoginForm = () => {\n setTimeout(() => {\n const cmpnt0 = document.querySelector('.cc__home__page_scroller_cmpnt0');\n if (cmpnt0) {\n cmpnt0.scrollIntoView({behavior: 'smooth'});\n }\n }, 800);\n};\n\nfunction sliders(t: TranslationFunction, competitionScore: CompetitionScore) {\n return [\n ,\n \n
\n
\n 2 saved')}\n />\n \n
\n
\n \n \n
\n
\n ,\n \n
\n {t('What is the Cool Campus Challenge?')}
\n {t('A friendly competition to reduce UC\\'s carbon footprint and create a culture of sustainability across the campuses.')}\n \n ,\n \n
\n {t('How does it work?')}
\n
\n
1
\n
{t('Sign up')}
\n
\n
\n
2
\n
{t('Take sustainable actions')}
\n
\n
\n
3
\n
{t('See your impact')}
\n
\n \n ,\n \n
\n
\n
{t('Ten campuses.')}
\n
{t('One goal.')}
\n
{t('Carbon neutral')}
\n
{t('by 2025.')}
\n
\n {t('Join today and reduce your impact to help create a cleaner, healthier future.')}
\n \n ];\n}\n\nconst mapStateToProps = (state: State, _props: Props) => ({\n landingPagePosition: state.landingPagePosition,\n canViewCompetitionContent: selectors.canViewCompetitionContent(state),\n competitionScore: state.competitionScore,\n hasJoined: selectors.hasJoined(state),\n isLoggedIn: selectors.isLoggedIn(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch, _props: Props) =>\n bindActionCreators({\n setLandingPagePosition: a.setLandingPagePostion\n }, dispatch);\n\nexport default compose(\n withLocalization('home'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(HomeWeb) as React.SFC;\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport ExternalLink from '../../shared/ExternalLink';\n\nconst CompetitionAboutText = ({ t }: LProps<{}>) => (\n

\n \n {t('The Cool Campus Challenge is a partnership between the University of California, the CoolClimate Network and the Center for Sustainable Energy. For questions or comments, please contact us at')} \n \n contact@coolcampuschallenge.org.\n

\n);\n\nexport default compose(\n withLocalization('competitionAboutText')\n)(CompetitionAboutText) as React.SFC;\n","import * as React from 'react';\nimport Page, { PageProps } from '../../shared/Page';\n\nexport const asPage = (props: Partial) => {\n return (component: React.ComponentClass | React.SFC) => () => React.createElement(\n Page,\n {\n component,\n ...props\n }\n );\n};\n","export enum StyleState {\n Success = 'success',\n Danger = 'danger',\n Warning = 'warning',\n Info = 'info'\n}\n","import { State } from '../state';\nimport { ActionType, ApplicationAction } from './types';\n\nexport type Patch = (update: Partial) => void;\nexport const patch = (payload: Partial, type: ActionType = ActionType.Patch): ApplicationAction => ({\n type, payload\n});\n","import { throttle, pick } from 'lodash';\nimport { Middleware, Store } from 'redux';\nimport { State } from '../state';\n\nconst reduxStateKey = 'redux';\n\nexport const parseLocalStorageState = (): Partial => {\n const stateString = window.localStorage.getItem(reduxStateKey);\n if (stateString === null) return {};\n try {\n return JSON.parse(stateString);\n } catch (_err) {\n return {};\n }\n};\n\nconst saveLocalStorageThrottle = throttle((store: Store) => {\n const savableState = pick(store.getState(), ['token', 'user']);\n window.localStorage.setItem(reduxStateKey, JSON.stringify(savableState));\n}, 500);\n\nconst saveLocalStorageMiddleware: Middleware = (store: Store) => (next) => (action) => {\n setTimeout(() => {\n // save localStorage in background - do not block!\n saveLocalStorageThrottle(store);\n }, 0);\n return next(action);\n};\n\nexport default saveLocalStorageMiddleware;\n","import { Dispatch } from 'redux';\nimport { History } from 'history';\nimport { values } from 'lodash';\nimport { State, StoryQuery } from '../state';\nimport * as selectors from '../selectors';\nimport { Routes, getCompetitionNameParams} from '../../utils/routerHelper';\nimport { patch } from './patch';\nimport { ActionType } from './types';\n//import { competitionName } from '../../utils/userApiHelper';\nimport { handleUserApiError, handleUnexpectedError } from './handleUnexpectedError';\nimport { ExtraArguments } from '../extraArguments';\nimport { setStoryQuery } from './story';\nimport { postAccountVerification } from './userEmail';\nimport { CompetitionPledges } from '../../userApi';\nimport { sleep } from '../../utils/sleep';\nimport { intercom } from '../../utils/intercom';\nimport { trackEvent, setAttribute } from '../../utils/googleAnalytics';\nimport logger from '../../utils/logger';\n\nconst indexPledgeIDsByUUID = (pledges: CompetitionPledges) =>\n values(pledges).reduce((previous, pledge) => ({ ...previous, [pledge.uuid]: pledge.id }), {});\n\nexport const initialize = () => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const state = getState();\n const api = selectors.userApi(state);\n const {i18n, history} = extra;\n const params = getCompetitionNameParams(history.location, i18n);\n if(params == 'GLOBAL'){\n dispatch(patch({ \n spinner: false,\n initialized: true\n }, ActionType.Initialize));\n return\n }\n let competitionName = params.competitionName as string; \n localStorage.setItem('competitionName', params.competitionName);\n dispatch(patch({ spinner: true, initialQuery: { competitionName: params.competitionName } }));\n\n if (state.initialQuery.verificationToken) {\n await postAccountVerification()(dispatch, getState, extra);\n await sleep(1000);\n }\n let mockCompetition = false;\n if(!competitionName){\n //return handleUnexpectedError({}, {message:\"Joining a campus competition? Enter the url in this format https://www.coolcampuschallenge.org/<competitionName>/
If you are looking for more info please visit https://www.coolcampuschallenge.org/about\", persistent:true})(dispatch, getState);\n competitionName = 'coolcampuschallenge2019'\n mockCompetition= true\n }\n\n try {\n if (selectors.isLoggedIn(state)) { \n\n const userDashboard = await api.getMe(undefined, competitionName);\n const newState = {\n ...userDashboard,\n competitionPledgeIDsByUUID: indexPledgeIDsByUUID(userDashboard.competitionPledges),\n spinner: false,\n initialized: true\n } \n if(mockCompetition){\n newState['competition'] = undefined\n console.log(newState)\n }\n dispatch(patch(newState, ActionType.Initialize));\n trackEvent('app', 'initialize', 'loggedIn');\n const initializedState = getState();\n setAnalyticsAttributes(initializedState);\n logger.configure(initializedState);\n } else {\n\n\n const competitionDashboard = await api.getCompetitionDashboard(competitionName);\n trackEvent('app', 'initialize', 'loggedOut');\n const newState = {\n ...competitionDashboard,\n competitionPledgeIDsByUUID: indexPledgeIDsByUUID(competitionDashboard.competitionPledges),\n spinner: false,\n initialized: true\n }\n if(mockCompetition){\n newState['competition'] = undefined\n console.log(newState)\n }\n dispatch(patch(newState, ActionType.Initialize));\n }\n await sleep(3000);\n const loggedInState = getState();\n const university = selectors.userUniversity(loggedInState);\n const { user, competitionUser } = loggedInState;\n intercom('boot', { user, university, competitionUser });\n } catch (err) {\n handleUserApiError(err)(dispatch, getState);\n await sleep(3000);\n intercom('boot');\n }\n};\n\nexport const reinitializeDashboardIfNecessary = () => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const { competition, storyQuery } = getState();\n if (values(storyQuery).every((value) => value === 0)) {\n const { pendingRoute } = getState();\n dispatch(patch({\n pendingRoute: pendingRoute === Routes.Dashboard ? null : pendingRoute\n }));\n return;\n }\n\n const competitionStoryQuery: StoryQuery = {\n competitionPledgeID: 0,\n entityID: 0,\n userID: 0,\n storyID: 0\n };\n\n dispatch(patch({ spinner: true }));\n const t = i18n.getFixedT(i18n.language, 'pledge');\n setStoryQuery(competitionStoryQuery)(dispatch, getState);\n\n try {\n const state = getState();\n const api = selectors.userApi(state);\n const res = await api.getCompetitionStories(competition.id);\n const { pendingRoute } = getState();\n dispatch(patch({\n ...res,\n spinner: false,\n pendingRoute: pendingRoute === Routes.Dashboard ? null : pendingRoute\n }));\n } catch (err) {\n const { pendingRoute } = getState();\n dispatch(patch({\n storyPagination: { nextPage: -1 },\n pendingRoute: pendingRoute === Routes.Dashboard ? null : pendingRoute\n }));\n handleUnexpectedError(err, {\n title: t('Oops!'),\n message: t('We experienced an error retrieving stories.')\n })(dispatch, getState);\n }\n};\n\nexport const setAnalyticsAttributes = (state: State) => {\n const { user } = state;\n if (user) {\n setAttribute('userType', user.type.toString());\n }\n const campus = selectors.userUniversity(state);\n if (campus) {\n setAttribute('campus', campus.name);\n }\n const team = selectors.userTeam(state);\n if (team) {\n setAttribute('team', team.name);\n }\n};\n","import * as moment from 'moment';\nimport { State } from '../state';\n\nexport const competitionName = (state: State) => { \n return state.initialQuery.competitionName\n}\n\nexport const hasCompetitionStarted = (state: State) => {\n if (!state.competition) return false;\n return moment(state.competition.startsAt).isBefore(Date.now());\n};\n\nexport const hasCompetitionEnded = (state: State) => {\n if (!state.competition) return false;\n return moment(state.competition.endsAt).isBefore(Date.now());\n};\n\nexport const competitionDescription = (state: State) => {\n if (!state.competition) return '';\n return state.competition.description\n};\n","import {\n UserRead, ValidationError, Stories, UsersByID, EntityMemberships, Likes, Comments, Flags,\n BlogEntries, Pagination, CommentPagination, LatestToPledge, CompetitionUserScores,\n Entities, CompetitionPledges, CompetitionScoreLevels, CompetitionPledgeCategories,\n CompetitionEntityScores, CompetitionScore, UserEmails, CompetitionUser, PledgeCompletions, EntityRanks,\n EntityTopUserScoresPagination, EntityTopSubentityScores, CompetitionEntities, Competition, TopUserScores, Story, StoryTaggedUserIDs, ValidationErrors, CompetitionEntityPledges, PledgePoints, CompetitionUserPoint, CompetitionUserScore, CompetitionUserScoreQuery\n} from '../userApi';\nimport { StyleState } from '../utils/styles';\nimport { parseLocalStorageState } from './middleware/storage';\nimport { Routes } from '../utils/routerHelper';\nimport { lodashQueryString } from '../utils/lodashQueryString';\n\nexport enum UiErrorType {\n FRONTEND = 'frontend',\n BACKEND = 'backend'\n}\n\nexport interface UiError {\n uiMessage?: string;\n code?: UiErrorType;\n}\n\nexport interface Toast {\n error?: Error | string;\n message: string;\n title?: string;\n on: boolean;\n style: StyleState; \n persistent?: boolean;\n}\n\nexport interface Notification {\n level: StyleState;\n header: string;\n body: React.ReactChild;\n}\n\nexport enum Modals {\n CompetitionScoreLevels = 'competitionScoreLevels',\n UserUpdatePassword = 'userUpdatePassword',\n UserDeletePassword = 'userDeletePassword',\n EntityEmailDomains = 'entityEmailDomains',\n ConfirmStoryDelete = 'confirmStoryDelete',\n StoryPoints = 'storyPoints',\n None = ''\n}\n\nexport interface InitialQuery {\n [key: string]: string;\n userApiBase?: string;\n storeCompleteState?: string;\n qualtricsID?: string;\n competitionName?: string;\n passwordResetToken?: string;\n verificationToken?: string;\n invitationToken?: string;\n}\n\nexport interface StoryQuery {\n entityID: number;\n userID: number;\n storyID: number;\n competitionPledgeID: number;\n}\n\nexport interface BlogEntryQuery {\n entityID: number;\n blogEntryID: number;\n competitionID: number;\n}\n\nexport interface State {\n token?: string;\n storyTerm?: string,\n initialQuery: InitialQuery;\n\n initialized: boolean;\n spinner?: boolean;\n toast?: Partial;\n\n pathname: string;\n pendingRoute?: Routes;\n\n modal: Modals;\n storyToDelete?: Story;\n\n landingPagePosition?: number;\n user?: UserRead;\n error?: UiError;\n\n // Any component that uploads a photo should use ImageUploader.\n // ImageUploader will preview the photo using a data URL. When\n // the form is submitted, first call userApi.postImage. This will\n // save the image in GCS and return its URL, which will be stored\n // in postImages by the input[type=\"file\"].id.\n // IMPORTANT: form components are responsible for detecting when their\n // the URL has been updated in postedImages. At this point they should\n // update their form value and clear the URL from postedImage. In\n // actions/image.ts, postImage action will clear the file input of its\n // contents.\n postedImages?: { [key: string]: string };\n\n editingStoryID?: number;\n editingCompetitionEntityPledgeEntityID?: number;\n\n savedCommentPromptID?: string;\n savedUserUpdateID?: string;\n savedStoryFormID?: string;\n savedInviteAFriendFormID?: string;\n\n competitionEmailVerificationSent?: string;\n\n loginVE?: ValidationError[];\n joinVE?: ValidationError[];\n signupVE?: ValidationError[];\n userEmailVE?: ValidationError[];\n forgotPasswordVE?: ValidationError[];\n userUpdateVE?: ValidationError[];\n userDeleteVE?: ValidationError[];\n inviteAFriendVE: ValidationErrors;\n\n searchResults: { [key: string]: number[] };\n isSearching: { [key: string]: boolean };\n\n storyQuery: StoryQuery;\n blogEntryQuery: BlogEntryQuery;\n\n competitionPledgeIDsByUUID: { [key: string]: number };\n\n competition?: Competition;\n entities?: Entities;\n competitionEntities?: CompetitionEntities;\n competitionPledges?: CompetitionPledges;\n competitionEntityPledges?: CompetitionEntityPledges;\n competitionScoreLevels?: CompetitionScoreLevels;\n competitionPledgeCategories?: CompetitionPledgeCategories;\n competitionTopUserScores?: TopUserScores;\n competitionEntityScores?: CompetitionEntityScores;\n competitionScore?: CompetitionScore;\n\n lastPointsEarned?: CompetitionUserPoint;\n lastPointsCanEarnMore?: boolean;\n\n userEmails?: UserEmails;\n userMemberships?: EntityMemberships;\n competitionUser?: CompetitionUser;\n userPledgeCompletions?: PledgeCompletions;\n userPledgePoints?: PledgePoints;\n userEntityRanks?: EntityRanks;\n\n profileMemberships?: EntityMemberships;\n profilePledgeCompletions?: PledgeCompletions;\n profileEntityRanks?: EntityRanks;\n\n stories?: Stories;\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n storyLikes?: Likes;\n storyFlags?: Flags;\n storyPagination?: Pagination;\n storyComments?: Comments;\n storyCommentsLikes?: Likes;\n storyCommentsFlags?: Flags;\n storyCommentPagination?: CommentPagination;\n blogEntries?: BlogEntries;\n blogEntryLikes?: Likes;\n blogEntryPagination?: Pagination;\n blogEntryCommentPagination?: CommentPagination;\n blogEntryComments?: Comments;\n blogEntryCommentsLikes?: Likes;\n blogEntryCommentsFlags?: Flags;\n\n entityTopUserScores?: { [key: string]: TopUserScores };\n entityTopUserScoresPagination?: EntityTopUserScoresPagination;\n entityTopSubentityScores?: EntityTopSubentityScores;\n\n latestToPledge?: LatestToPledge;\n competitionUserScores?: CompetitionUserScores;\n\n topCompetitionUserScores?: CompetitionUserScore[];\n topCompetitionUserScoreQuery?: CompetitionUserScoreQuery;\n\n users?: UsersByID;\n}\n\nconst initialQuery: InitialQuery = {};\nif (window.URLSearchParams) {\n const initialParams = new URLSearchParams(window.location.search.replace(/^\\?/, ''));\n initialParams.forEach((value, key) => initialQuery[key] = value);\n} else {\n // shim for IE.\n const initialParams = lodashQueryString(window.location.search);\n Object.keys(initialParams).forEach((key) => initialQuery[key] = initialParams[key][0]);\n}\n\nexport const defaultState: State = {\n initialized: false,\n pendingRoute: null,\n pathname: '',\n\n initialQuery,\n modal: Modals.None,\n spinner: false,\n savedCommentPromptID: '',\n savedUserUpdateID: '',\n savedStoryFormID: '',\n savedInviteAFriendFormID: '',\n competitionEmailVerificationSent: '',\n toast: { on: false, title: '', message: '', style: StyleState.Info },\n landingPagePosition: 0,\n error: null,\n token: '',\n storyQuery: {\n storyID: 0,\n entityID: 0,\n userID: 0,\n competitionPledgeID: 0\n },\n blogEntries: [],\n blogEntryQuery: {\n entityID: 0,\n blogEntryID: 0,\n competitionID: 0\n },\n\n postedImages: {},\n editingCompetitionEntityPledgeEntityID: 0,\n\n userEmailVE: [],\n loginVE: [],\n signupVE: [],\n joinVE: [],\n forgotPasswordVE: [],\n userUpdateVE: [],\n inviteAFriendVE: [],\n\n searchResults: {},\n isSearching: {},\n\n competitionPledgeIDsByUUID: {},\n\n stories: [],\n storyTaggedUserIDs: {},\n\n topCompetitionUserScores: [],\n topCompetitionUserScoreQuery: {\n entityID: 0,\n competitionID: 0,\n pagination: {\n page: 1,\n pageSize: 50,\n nextPage: -1,\n totalPages: 0\n }\n }\n};\n\nconst initialState: State = Object.assign(defaultState, parseLocalStorageState());\n\nexport default initialState;\n","import { captureException, configureScope, init } from '@sentry/browser';\nimport * as mapStackTrace from 'sourcemapped-stacktrace';\nimport { isEmpty } from 'lodash';\nimport environment, { isProduction, isStaging } from './environment';\nimport { State } from '../redux/state';\n\nconst reportToSentry = !environment.isDevelopment || environment.config.FORCE_REPORT_TO_SENTRY === 'true';\nconst silenceAlerts = window.location.search.search('silence') >= 0;\n\nconst sentryEnvironment = () => {\n switch (true) {\n case isProduction:\n return 'prd';\n case isStaging:\n return 'stg';\n default:\n return 'dev';\n }\n};\n\nif (reportToSentry) setupJSRemoteTrackError();\nfunction setupJSRemoteTrackError() {\n init({\n dsn: environment.config.SENTRY_PUBLIC_DSN,\n environment: sentryEnvironment()\n });\n}\n\nexport const getMappedStack = async (err: Error): Promise => {\n return new Promise((done) => {\n if (err.stack) {\n mapStackTrace.mapStackTrace(err.stack, done);\n } else {\n done([]);\n }\n });\n};\n\ninterface Logger {\n log(...args: T[]): void;\n debug(...args: T[]): void;\n warn(...args: T[]): void;\n info(...args: T[]): void;\n error(arg: string | Error, ...data: any[]): void;\n configure(state: State): void;\n}\n\nconst configure = (state: State) => {\n const { user } = state;\n if (user) {\n try {\n configureScope((scope) => {\n scope.setUser({ id: user.id.toString(), email: user.email });\n });\n } catch (err) {\n // tslint:disable no-console\n console.error(err);\n }\n }\n};\n\nasync function error(arg: string | Error, ...data: any[]) {\n // tslint:disable no-console\n console.error(arg);\n\n let err: Error;\n if (arg instanceof String) {\n err = new Error(arg as string);\n } else {\n err = arg as Error;\n }\n\n let mappedStack = await getMappedStack(err);\n if (!mappedStack) {\n mappedStack = [];\n }\n\n if (reportToSentry) {\n try {\n if (data) {\n configureScope((scope) => {\n scope.setExtra('data', data);\n });\n }\n captureException(err);\n } catch (_err) {\n // tslint:disable-next-line\n console.error('Failed to notify Sentry.');\n }\n }\n\n if (environment.isDevelopment && !silenceAlerts) {\n const alertInfo = {\n mappedStack,\n message: err.message || arg,\n data\n };\n if (!isEmpty(alertInfo.message)) {\n alert(JSON.stringify(alertInfo));\n }\n }\n}\n\nconst logger: Logger = {\n // tslint:disable no-console\n debug: console.debug,\n error,\n info: console.info,\n log: console.log,\n warn: console.warn,\n // tslint:enable no-console\n configure\n};\n\nexport default logger;\n","import { toast } from './toast';\nimport { patch } from './patch';\nimport logger from '../../utils/logger';\nimport { Dispatch } from 'redux';\nimport { State, Toast } from '../state';\nimport { StyleState } from '../../utils/styles';\nimport { ValidationErrors } from '../../userApi';\nimport { isResponse, getValidationErrors } from '../../utils/userApiHelper';\n\nconst genericErrorToast = {\n style: StyleState.Danger,\n message: 'Sorry, we\\'ve experienced an unexpected error. We\\'re looking into it. If the error persists, please let our staff know at contact@coolcampuschallenge.org.'\n};\n\nexport const handleUnexpectedError = (err: any, toastData: Partial = genericErrorToast) => async (dispatch: Dispatch, getState: () => State) => {\n if (isResponse(err)) {\n // Token expired. Logout.\n if (err.status === 401) {\n localStorage.clear(); \n window.location.pathname = '/';\n return;\n }\n logUnexpectedResponse(err);\n }\n\n dispatch(patch({ spinner: false }));\n logger.error(err);\n toast(toastData)(dispatch, getState);\n};\n\nexport const handleUserApiError = (err: any, fnValidationErrors?: (ve: ValidationErrors) => void, toastData: Partial = genericErrorToast) =>\nasync (dispatch: Dispatch, getState: () => State) => {\n const validationErrors = await getValidationErrors(err);\n if (typeof validationErrors === 'function') {\n fnValidationErrors(validationErrors);\n return;\n }\n\n handleUnexpectedError(err, toastData)(dispatch, getState);\n return;\n};\n\nconst logUnexpectedResponse = async (res: Response) => {\n const ve = await getValidationErrors(res);\n if (ve) {\n logger.error(new Error(`Unhandled API response: ${JSON.stringify({ validationErrors: ve, url: res.url, status: res.status })}`));\n } else {\n const text = await res.text();\n logger.error(new Error(`Unhandled API response: ${JSON.stringify({ text, url: res.url, status: res.status })}`));\n }\n};\n","import { isDevelopment } from './environment';\nimport logger from './logger';\n\ntype GAEventCategory = 'session' | 'account' | 'story' | 'comment' | 'like' | 'flag' | 'blogEntry' | 'view' | 'invite' | 'link' | 'calculator' | 'entityPledge' |\n 'entity' | 'entityMembership' | 'image' | 'email' | 'app';\ntype GAEventAction = 'unhandledError' | 'create' | 'delete' | 'update' | 'sent' | 'click' | 'mutate' | 'verify' | 'initialize' | 'join';\n\nconst waitForGoogleAnalytics = () => new Promise((resolve, reject) => {\n const start = Date.now();\n const interval = setInterval(() => {\n if ((window as any).ga) {\n resolve();\n clearInterval(interval);\n return;\n } else if (Date.now() - start > (10 * 1000)) {\n reject(new Error('Failed to resolve google analytics after 10 seconds.'));\n clearInterval(interval);\n return;\n }\n }, 500);\n});\n\n// execute this without blocking.\nexport const trackEvent = async (category: GAEventCategory, action: GAEventAction, label?: string, value?: number) => {\n if (isDevelopment) return;\n try {\n await waitForGoogleAnalytics();\n if (value !== undefined) {\n (window as any).ga(\n 'send',\n 'event',\n category,\n action,\n label,\n value\n );\n } else if (label !== undefined) {\n (window as any).ga(\n 'send',\n 'event',\n category,\n action,\n label\n );\n } else {\n (window as any).ga(\n 'send',\n 'event',\n category,\n action\n );\n }\n } catch (_err) {\n logger.warn('Google Analytics unavailable');\n }\n};\n\ntype GAAttributeField = 'campus' | 'team' | 'userType';\n\nexport const setAttribute = async (field: GAAttributeField, value: string) => {\n if (isDevelopment) return;\n await waitForGoogleAnalytics();\n (window as any).ga('set', field, value);\n};\n","import up from 'updeep';\nimport * as moment from 'moment';\nimport { patch } from './patch';\nimport { UserEmail, UserRead, someMessageForValidationErrors } from '../../userApi';\nimport initialState, { State, Toast } from '../state';\nimport { Dispatch } from 'redux';\nimport { userEmailVEMessages } from '../../utils/forms';\nimport { handleUserApiError, handleUnexpectedError } from './handleUnexpectedError';\nimport * as selectors from '../selectors';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport logger from '../../utils/logger';\nimport { ExtraArguments } from '../extraArguments';\nimport { getValidationErrors } from '../../utils/userApiHelper';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const getAccountVerification = (userEmail: UserEmail, verifyingCompeition: boolean = false) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const state = getState();\n const api = selectors.userApi(state);\n dispatch(patch({ spinner: true }));\n try {\n await api.getAccountVerification(userEmail.id, state.competition.name);\n const { userEmails } = state;\n const userEmailIndex = userEmails.findIndex((ue) => ue.id === userEmail.id);\n dispatch(patch({\n spinner: false,\n userEmails: up.updateIn(`${userEmailIndex}`, { verificationSentAt: moment().format() }, userEmails),\n competitionEmailVerificationSent: verifyingCompeition ? userEmail.email : ''\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n\nexport const postAccountVerification = () => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const state = getState();\n const { initialQuery } = state;\n if (!initialQuery.verificationToken) return;\n\n const api = selectors.userApi(state);\n const t = i18n.getFixedT(i18n.language, 'verifyEmail');\n try {\n const headers = { 'Content-Type': 'text/plain' };\n await api.postAccountVerification(initialQuery.verificationToken, { headers });\n trackEvent('email', 'verify');\n toast({\n style: StyleState.Success,\n title: t('Success!'),\n message: t('Your email has been verified.')\n })(dispatch, getState);\n } catch (err) {\n logger.error(err);\n toast({\n style: StyleState.Danger,\n title: t('Ooops!'),\n message: t('We experienced an error verifying your email address.')\n })(dispatch, getState);\n trackEvent('email', 'unhandledError', 'verify');\n }\n};\n\nexport const postUserEmail = (email: string, mustVerifyCompetition: boolean = false) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const t = extra.i18n.getFixedT(extra.i18n.language, 'userEmail');\n const state = getState();\n const { user, competition } = state;\n\n if (mustVerifyCompetition && !competition.permittedDomains.some((domain) => email.search(domain) >= 0)) {\n toast({\n style: StyleState.Danger,\n message: t('Please use a competition verifiable email.')\n })(dispatch, getState);\n return;\n }\n dispatch(patch({ spinner: true }));\n try {\n const params = { email };\n const api = selectors.userApi(state);\n const res = await api.postUserEmail(user.id, params);\n trackEvent('email', 'create');\n const { userEmails } = getState();\n dispatch(patch({\n user: up.constant(res.user),\n userEmails: up.constant([ ...userEmails, res.userEmail ]),\n userEmailVE: up.constant(initialState.userEmailVE),\n competitionEmailVerificationSent: mustVerifyCompetition ? email : '',\n spinner: false\n }));\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors && someMessageForValidationErrors(validationErrors, userEmailVEMessages)) {\n dispatch(patch({\n userEmailVE: up.constant(validationErrors),\n spinner: false\n }));\n return;\n }\n handleUserApiError(err)(dispatch, getState);\n trackEvent('email', 'unhandledError', 'create');\n }\n};\n\nexport const makePrimaryUserEmail = (userEmail: UserEmail) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'userEmail');\n dispatch(patch({ spinner: true }));\n const state = getState();\n const api = selectors.userApi(state);\n try {\n await api.putUserEmail(userEmail.userID, userEmail.id, { primary: true });\n trackEvent('email', 'update');\n const { userEmails } = getState();\n const currentPrimaryI = userEmails.findIndex((ue) => ue.email);\n dispatch(patch({\n userEmails: up.updateIn(`${currentPrimaryI}`, { primary: false }, userEmails)\n }));\n const i = userEmails.findIndex((ue) => ue.id === userEmail.id);\n dispatch(patch({\n user: { id: userEmail.userID, email: userEmail.email } as UserRead,\n userEmails: up.updateIn(`${i}`, { primary: true }, userEmails),\n spinner: false\n }));\n } catch (err) {\n const toastData: Toast = {\n on: true,\n style: StyleState.Danger,\n title: t('Oops!'),\n message: t('Failed to change your primary email address. Please contact us if this recurs.')\n };\n handleUnexpectedError(err, toastData)(dispatch, getState);\n trackEvent('email', 'unhandledError', 'update');\n }\n};\n\nexport const deleteUserEmail = (userEmail: UserEmail) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'userEmail');\n dispatch(patch({ spinner: true }));\n const state = getState();\n const api = selectors.userApi(state);\n try {\n await api.deleteUserEmail(userEmail.userID, userEmail.id);\n trackEvent('email', 'delete');\n dispatch(patch({\n userEmails: up.reject((ue) => ue.id === userEmail.id),\n spinner: false\n }));\n } catch (err) {\n const toastData: Toast = {\n on: true,\n style: StyleState.Danger,\n title: t('Oops!'),\n message: t('Failed to delete email address. Please contact us if this recurs.')\n };\n handleUnexpectedError(err, toastData)(dispatch, getState);\n trackEvent('email', 'unhandledError', 'delete');\n }\n};\n","import { SocialLinks } from '../../userApi';\nimport { isValidURL } from '../validations';\nimport { TranslationFunction } from 'i18next';\nimport { isEmpty } from 'lodash';\n\nexport interface SocialLinkErrors {\n website?: string;\n facebook?: string;\n linkedin?: string;\n}\n\nconst invalidURLError = 'Must be a valid URL';\nconst hasHttp = (s: string) => /^https?:\\/\\//i.test(s);\n\nexport const processSocialLinks = (socialLinks: SocialLinks) => {\n const processed = { ...socialLinks };\n if (processed.facebook && !hasHttp(processed.facebook)) {\n processed.facebook = `https://${processed.facebook}`;\n }\n if (processed.website && !hasHttp(processed.website)) {\n processed.website = `https://${processed.website}`;\n }\n if (processed.linkedin && !hasHttp(processed.linkedin)) {\n processed.linkedin = `https://${processed.linkedin}`;\n }\n return processed;\n};\n\nexport const validateSocialLinks = (socialLinks: SocialLinks, t: TranslationFunction) => {\n const errors: SocialLinkErrors = {};\n if (socialLinks.facebook && !isValidURL(socialLinks.facebook)) {\n errors.facebook = t(invalidURLError);\n }\n if (socialLinks.linkedin && !isValidURL(socialLinks.linkedin)) {\n errors.linkedin = t(invalidURLError);\n }\n if (socialLinks.website && !isValidURL(socialLinks.website)) {\n errors.website = t(invalidURLError);\n }\n return isEmpty(errors) ? undefined : errors;\n};\n","export const sleep = (ms: number) => new Promise((resolve, _reject) => {\n setTimeout(resolve, ms);\n});\n","import * as React from 'react';\nimport { compose, bindActionCreators, Dispatch } from 'redux';\nimport { UserRead, Entity, Competition } from '../userApi';\nimport { Link } from 'react-router-dom';\nimport { makeEntityPath, makeUserPath } from '../utils/routerHelper';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport ProfilePhoto from './ProfilePhoto';\nimport { displayFullName, displayUserType } from '../utils/userApiHelper';\nimport { State } from '../redux/state';\nimport { connect } from 'react-redux';\nimport { Button } from 'reactstrap';\nimport actions from '../redux/actions';\n\ninterface Props {\n user: UserRead;\n competition: Competition;\n university: Entity;\n team: Entity;\n healthFacility?: Entity;\n linkToProfile?: boolean;\n}\n\nconst UserHeader = ({\n user, university, team, healthFacility, competition, t, i18n, linkToProfile = false\n}: LProps) => (\n
\n
\n \n
\n
\n {!linkToProfile &&

{displayFullName(user)}

}\n {linkToProfile &&

{displayFullName(user)}

}\n {displayUserType(user.type, i18n) &&
{displayUserType(user.type, i18n)}
}\n {university &&\n
{university.name}
\n }\n {healthFacility &&\n
{healthFacility.name}
\n }\n {team &&\n
{team.name}
\n }\n
\n
\n);\n\nconst mapStateToProps = (state: State) => ({});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default compose(\n withLocalization('userHeader'),\n connect(mapStateToProps, mapDispatchToProps)\n)(UserHeader) as React.FunctionComponent;\n","// @ts-nocheck\nimport * as React from 'react';\nimport { compose } from 'redux';\nimport { CompetitionUserScore } from '../userApi';\nimport { withLocalization, LProps } from '../utils/wrappers';\n\ninterface Props {\n score: CompetitionUserScore;\n userUniversityRank?: number;\n pledgeCompletions: number;\n footprint: number;\n}\n\nconst UserStats = ({\n t, formatNumber, score, userUniversityRank, pledgeCompletions, footprint\n}: LProps) => (\n
\n
\n
{t('Points')}
\n
{formatNumber(score.points, 0)}
\n
\n
\n
{t('Actions')}
\n
{formatNumber(pledgeCompletions, 0)}
\n
\n
\n \n
{formatNumber(footprint)}
\n
\n
\n 2e saved')\n }}\n />\n \n
\n
\n \n
{formatNumber(score.savingsCO2Lbs, 0)}
\n
\n
\n \n
{formatNumber(score.takenCO2Lbs, 0)}
\n
\n
\n);\n\nexport default compose(\n withLocalization('userStats')\n)(UserStats) as React.FunctionComponent;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { CompetitionUserScore, CompetitionScoreLevel } from '../userApi';\nimport { State, Modals } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport ProgressBar from './ProgressBar';\nimport { getScoreLevelColor, getScoreLevelPhoto } from '../utils/userApiHelper';\nimport actions from '../redux/actions';\nimport ScoreLevelModal from './ScoreLevelModal';\nimport { withPreventDefault } from '../utils/withPreventDefault';\nimport LinkButton from './LinkButton';\n\ninterface ManualProps {\n scoreLevel: CompetitionScoreLevel;\n nextScoreLevel: CompetitionScoreLevel;\n score: CompetitionUserScore;\n}\n\ninterface Props extends ManualProps {\n percentToNextLevel: number;\n openScoreLevelModal: () => void;\n}\n\nconst UserScoreLevel = ({\n t, formatNumber, score, scoreLevel,\n nextScoreLevel, openScoreLevelModal, percentToNextLevel\n}: LProps) => (\n
\n
\n {scoreLevel.name}\n {getScoreLevelPhoto(scoreLevel) && {scoreLevel.name}}\n
\n {(nextScoreLevel === scoreLevel) &&\n
{t('You\\'ve done it!')}
\n }\n {(nextScoreLevel !== scoreLevel) &&\n
\n
\n {(nextScoreLevel.threshold - score.points > 0) &&\n t('{{points}} points to {{nextLevel}}',\n { points: formatNumber(nextScoreLevel.threshold - score.points), nextLevel: nextScoreLevel.name })\n }\n
\n \n
\n }\n \n {t('Learn more')} >\n \n \n
\n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n percentToNextLevel: selectors.percentToNextLevel(state, ownProps)\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n openScoreLevelModal: withPreventDefault(() => actions.setModal(Modals.CompetitionScoreLevels))\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('scoreLevels')\n)(UserScoreLevel) as React.ComponentClass;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport ScoreboardCampuses from '../shared/ScoreboardCampuses';\nimport ScoreboardTeams from '../shared/ScoreboardTeams';\nimport ScoreboardParticipants from '../shared/ScoreboardParticipants';\nimport { CompetitionEntityScore, CompetitionUserScore } from '../userApi';\nimport ScoreboardHealthSystems from './ScoreboardHealthSystems';\nimport { makeCompetitionUserScoresPath } from '../utils/routerHelper';\n\ninterface Props {\n topTeamScores: CompetitionEntityScore[];\n topUserScores: CompetitionUserScore[];\n competitionID: number;\n}\n\nenum ScoreboardView {\n Campuses = 'campuses',\n Participants = 'participants',\n Teams = 'teams',\n HealthSystems = 'healthSystems'\n}\n\ninterface ScoreboardState {\n scoreboardView: ScoreboardView;\n}\n\nclass Scoreboard extends React.Component, ScoreboardState> {\n public state = { scoreboardView: ScoreboardView.Participants };\n\n public render() {\n const { scoreboardView } = this.state;\n const { t, topTeamScores, topUserScores, competitionID } = this.props;\n return (\n
\n
\n
{t('Scoreboard')}
\n
\n this.setState({ scoreboardView: ScoreboardView.Participants })}\n >{t('Participants')}
\n \n this.setState({ scoreboardView: ScoreboardView.Teams })}\n >{t('Teams')}
\n this.setState({ scoreboardView: ScoreboardView.Campuses })}\n >{t('UC Location')}
\n \n \n {scoreboardView === ScoreboardView.Campuses && } \n {scoreboardView === ScoreboardView.Teams &&\n \n }\n {scoreboardView === ScoreboardView.Participants &&\n \n }\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Props => ({\n topTeamScores: state.competitionEntityScores.team,\n topUserScores: state.competitionTopUserScores,\n competitionID: state.competition.id\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('scoreboard')\n)(Scoreboard) as React.ComponentClass;\n","import up from 'updeep';\nimport { patch } from './patch';\nimport { Toast, State } from '../state';\nimport { Dispatch } from 'redux';\nimport { StyleState } from '../../utils/styles';\n\nconst closedToast: Toast = up.constant({ on: false, title: '', message: '', style: StyleState.Info });\n\nexport const closeToast = () => patch({\n toast: closedToast\n});\n\nexport const toast = (toastData: Partial, duration: number = 10000) => (dispatch: Dispatch, _getState: () => State) => {\n dispatch(patch({ toast: { on: true, ...toastData } }));\n if(!toastData.persistent){\n setTimeout(() => {\n dispatch(patch({ toast: closedToast }));\n }, duration);\n }\n};\n","import * as React from 'react';\nimport { Dispatch, compose, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { Link , withRouter} from 'react-router-dom';\nimport { Button, ButtonGroup } from 'reactstrap';\nimport { LProps, RouterProps, withLocalization } from '../utils/wrappers';\nimport { Story, CompetitionPledge, UserRead, Entity, Comment, TaggedUserIDs } from '../userApi';\nimport { makePledgePath, makeUserPath, makeEntityPath, makeStoryPath } from '../utils/routerHelper';\nimport CommentComponent from './Comment';\nimport CommentPrompt from './CommentPrompt';\nimport { State, Toast } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport actions from '../redux/actions';\nimport ProfilePhoto from './ProfilePhoto';\nimport { displayFullName, CompetitionPledges, makeCampusHeroTitle } from '../utils/userApiHelper';\nimport StoryEditor from './StoryEditor';\nimport * as moment from 'moment';\nimport LinkButton from './LinkButton';\nimport SafeHTML from './SafeHtml';\nimport { TranslationFunction } from 'i18next';\nimport OpenGraphCarousel from './OpenGraphCarousel';\nimport displayContent from './displayContent';\nimport StoryControls from './StoryControl';\n\nconst StoryContent = ({ story, pledge, taggedUsers, t }: { story: Story, pledge: CompetitionPledge, taggedUsers: UserRead[], t: TranslationFunction }) => {\n if (pledge && pledge.uuid === CompetitionPledges.HighlightAHero) {\n return (\n
\n {makeCampusHeroTitle(taggedUsers, t)}\n \n {story.contentMD.length > 1000 && {t('Read more')} >}\n {(story.links && story.links.length > 0) &&\n \n }\n
\n );\n }\n return (\n
\n {displayContent(story.contentMD)}\n
\n );\n};\n\nconst StoryTitle = ({ pledge, t }: { pledge: CompetitionPledge, t: TranslationFunction }) =>\n (
{pledge.shortTitle}
);\n\ninterface ManualProps {\n story: Story;\n}\n\ninterface Props extends ManualProps {\n pledge: CompetitionPledge;\n creator: UserRead;\n university: Entity;\n userCompletionsLTPledgeRepeats: boolean;\n isUserEligibleForPledge: boolean;\n liked: boolean;\n flagged: boolean;\n comments: Comment[];\n isVerifiedCompetitionUser: boolean;\n isCreator: boolean;\n taggedUsers: UserRead[];\n toggleLike: (story: Story) => void;\n toggleFlag: (story: Story) => void;\n editStory: () => void;\n openConfirmStoryDelete: () => void;\n toast: (toastData: Partial, duration?: number) => void;\n editing: boolean;\n}\n\nconst isVideo =(img:string) =>{\n const imgParts = img.split('.')\n const ext = imgParts[imgParts.length - 1] \n if(ext=='mp4'){\n return true;\n }\n}\n\nclass StoryComponent extends React.Component & RouterProps<{}>> {\n render(){ \n const {\n t, formatNumber, story, pledge, creator,\n toggleLike, toggleFlag, liked, flagged, comments,\n university, userCompletionsLTPledgeRepeats, history, isVerifiedCompetitionUser,\n isCreator, editStory, openConfirmStoryDelete, editing, taggedUsers, isUserEligibleForPledge\n } = this.props;\n \n if (editing) return ();\n return (\n
\n {pledge ? :
 
}\n
\n
\n
\n
\n
\n \n
\n
\n {displayFullName(creator)}\n
\n {moment(story.createdAt).fromNow()}\n
\n
\n
\n {university && {university.name}}\n
\n
\n {story.photo &&\n
\n {isVideo(story.photo) ?\n
\n }\n {story.contentMD && }\n {(story.links && story.links.length > 0) &&\n \n }\n {story.competitionUserPointID !== 0 && pledge &&\n
\n
\n
\n {t('Points')} \n {formatNumber(story.pointsEarned, 0)}\n
\n
\n 2')\n }}\n /> \n {Boolean(pledge.savingsCO2Lbs) && {formatNumber(pledge.savingsCO2Lbs, 0)}}\n
\n
\n {isVerifiedCompetitionUser &&\n
\n {!userCompletionsLTPledgeRepeats &&\n {t('action\n }\n {(isUserEligibleForPledge && userCompletionsLTPledgeRepeats) &&\n history.push(makePledgePath(pledge, t))}\n >{t('Take action')}\n }\n
\n }\n
\n }\n
\n {isVerifiedCompetitionUser &&\n
\n
\n toggleLike(story)}\n >{t('like')}\n toggleFlag(story)}\n >{t('like')}\n
\n \n
\n }\n
{story.likes} {story.likes === 1 ? t('like') : t('likes')}
\n
\n {comments.map((comment) =>\n )}\n
\n {isVerifiedCompetitionUser &&\n
\n
\n \n
\n }\n
)\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: ManualProps) => {\n const pledge = ownProps.story.competitionPledgeID !== 0 ? state.competitionPledges[ownProps.story.competitionPledgeID] : null;\n return {\n pledge,\n taggedUsers: selectors.taggedUsers(state, ownProps),\n creator: selectors.storyCreator(state, ownProps),\n isCreator: state.user && state.user.id === ownProps.story.createdBy,\n university: selectors.acceptedUniversity(state, ownProps.story.createdBy),\n userCompletionsLTPledgeRepeats: selectors.userCompletionsLTPledgeRepeats(state, ownProps),\n isUserEligibleForPledge: Boolean(pledge) && selectors.isUserEligibleForPledge(state, pledge),\n liked: state.storyLikes[ownProps.story.id],\n flagged: state.storyFlags[ownProps.story.id],\n comments: state.storyComments[ownProps.story.id] || [],\n isVerifiedCompetitionUser: selectors.isVerifiedCompetitionUser(state),\n editing: state.editingStoryID === ownProps.story.id\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch, ownProps: ManualProps) => bindActionCreators({\n toggleLike: actions.toggleStoryLike,\n toggleFlag: actions.toggleStoryFlag,\n editStory: () => actions.editStory(ownProps.story.id),\n openConfirmStoryDelete: () => actions.openConfirmStoryDelete(ownProps.story),\n toast: actions.toast\n}, dispatch);\n\nexport default compose(\n withLocalization('story'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps),\n)(StoryComponent) as React.SFC;;\n","import * as React from 'react';\nimport up from 'updeep';\nimport cx from 'classnames';\nimport { compose, bindActionCreators, Dispatch } from 'redux';\nimport { Alert, Button, FormGroup, FormFeedback } from 'reactstrap';\nimport { Input } from 'reactstrap';\nimport { connect } from 'react-redux';\nimport { debounce } from 'lodash';\nimport { CompetitionPledge, Story, UserRead, TaggedUserIDs, OpenGraphLink, OpenGraphResponse } from '../userApi';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport Dropdown from './Dropdown';\nimport { toLocationQualifierEnum, toStoryStatusEnum, calculatePointsForNextStory } from '../utils/userApiHelper';\nimport ImageUploader from './ImageUploader/ImageUploader';\nimport { StyleState } from '../utils/styles';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport actions from '../redux/actions';\nimport Search from './Search';\nimport StoryTaggedUsers from './StoryTaggedUsers';\nimport MarkdownEditor from './MarkdownEditor';\nimport { Form } from '../utils/forms/form';\nimport { clearPostedImage } from '../redux/actions/all';\nimport { uuid } from '../utils/uuid';\nimport { makePledgePath } from '../utils/routerHelper';\nimport { Link } from 'react-router-dom';\nimport OpenGraphCarousel from './OpenGraphCarousel';\nimport { getURLs } from '../utils/strings';\nimport Checkbox from './Checkbox';\n\ninterface ManualProps {\n story: Story;\n pledge?: CompetitionPledge;\n onSave: (story: Story, taggedUserIDs: TaggedUserIDs, fileInputID: string, savedStoryFormID: string) => void;\n}\n\nexport interface Props extends ManualProps {\n form: Partial;\n isVerifiedCompetitionUser: boolean;\n fileInputID: string;\n taggedUserIDs: number[];\n postedPhoto: string;\n savedStoryFormID: string;\n pointsForNextStory: number;\n hasCompetitionEnded: boolean;\n clearPostedImage: (inputID: string) => void;\n cancelStoryEdit: () => void;\n parseOpenGraph: (urls: string[]) => Promise;\n clearNewStoryTaggedUserIDs: () => void;\n}\n\ninterface StoryFormState extends Form {\n taggedUserIDs: number[];\n form: Partial;\n submitted: boolean;\n hasBeenParsed: { [key: string]: boolean };\n parsedLinks: { [key: string]: OpenGraphLink };\n}\n\nconst fileInputIDBase = 'story_image_uploader';\n\nconst initialState: StoryFormState = {\n form: {\n id: 0, contentMD: '', status: Story.StatusEnum.Empty,\n locationQualifier: Story.LocationQualifierEnum.Empty, links: []\n },\n taggedUserIDs: [],\n dirty: {},\n submitted: false,\n parsedLinks: {},\n hasBeenParsed: {}\n};\n\nconst storyFormSaved = (nextProps: Props, storyFormID: string) =>\n nextProps.savedStoryFormID === storyFormID;\n\nclass StoryForm extends React.Component, StoryFormState> {\n public state = initialState;\n private id = uuid();\n private parseURLs: () => void;\n\n public componentWillMount() {\n const { taggedUserIDs, story } = this.props;\n this.setState({\n ...initialState,\n taggedUserIDs,\n form: { ...initialState.form, ...story }\n });\n this.parseURLs = debounce(() => this._parseURLs(), 1500);\n }\n\n public componentWillUnmount() {\n const { clearNewStoryTaggedUserIDs } = this.props;\n clearNewStoryTaggedUserIDs();\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n const { form } = this.state;\n const { fileInputID } = this.props;\n if (nextProps.postedPhoto !== this.props.postedPhoto && nextProps.postedPhoto) {\n this.update({ form: { ...form, photo: nextProps.postedPhoto } });\n clearPostedImage(fileInputID);\n }\n\n if (storyFormSaved(nextProps, this.id)) {\n this.id = uuid();\n this.clear();\n }\n }\n\n private tagUser(user: UserRead) {\n const { taggedUserIDs } = this.state;\n if (taggedUserIDs.some((userID) => userID === user.id)) return;\n this.setState({\n taggedUserIDs: [ ...taggedUserIDs, user.id ]\n });\n }\n\n private untagUser(user: UserRead) {\n const { taggedUserIDs } = this.state;\n if (!taggedUserIDs.some((userID) => userID === user.id)) return;\n this.setState({\n taggedUserIDs: taggedUserIDs.filter((userID) => userID !== user.id)\n });\n }\n\n private async updateContent(contentMD: string) {\n const { form } = this.state;\n this.setState({ form: { ...form, contentMD } });\n this.parseURLs();\n }\n\n private async _parseURLs() {\n const { parseOpenGraph } = this.props;\n const { contentMD } = this.state.form;\n const urls = getURLs(contentMD);\n const newURLs = urls.filter((url) => !this.state.hasBeenParsed[url]);\n const hasBeenParsed = urls.reduce((previous: { [key: string]: boolean }, url: string) => ({\n ...previous,\n [url]: true\n }), this.state.hasBeenParsed);\n this.setState({ hasBeenParsed });\n const res = await parseOpenGraph(newURLs);\n const { form } = this.state;\n const parsedLinks = {\n ...this.state.parsedLinks,\n ...res.openGraphLinks\n };\n const links = [\n ...Object.keys(res.openGraphLinks),\n ...Object.keys(this.state.parsedLinks)\n ].reduce((previous: OpenGraphLink[], url: string) => {\n const ogl = parsedLinks[url];\n if (!ogl) return previous;\n return previous.concat([ogl]);\n }, []);\n this.setState({\n parsedLinks,\n form: { ...form, links }\n });\n }\n\n private update(update: Partial, _validate: boolean = false) {\n this.setState(update as StoryFormState);\n }\n\n private clear() {\n const { taggedUserIDs, story, cancelStoryEdit } = this.props;\n if (story.id !== 0) {\n cancelStoryEdit();\n } else {\n this.setState({\n ...initialState,\n taggedUserIDs,\n form: { ...initialState.form, ...story }\n });\n }\n }\n\n private deletePhoto() {\n const { form } = this.state;\n const { story } = this.props;\n if (form.photo === story.photo) {\n this.update({ form: up({ photo: '' }, form) });\n } else {\n this.update({ form: up({ photo: story.photo }, form) });\n }\n }\n\n private submit() {\n const { form, taggedUserIDs } = this.state;\n const submitted = true;\n const { fileInputID, onSave } = this.props;\n if (form.contentMD.length < 50) {\n this.setState({ submitted });\n return;\n }\n onSave(form as Story, taggedUserIDs, fileInputID, this.id);\n }\n\n public render() {\n const { form, submitted } = this.state;\n const {\n t, story,\n isVerifiedCompetitionUser, hasCompetitionEnded,\n fileInputID, pledge, pointsForNextStory\n } = this.props;\n const placeholder = (pledge && pledge.storyPrompt) || t('Describe your action');\n return (\n
\n {story.id === 0 &&
{t('Take this action')}
}\n {pledge &&
{pledge.shortTitle}
}\n {(Boolean(pointsForNextStory) && !hasCompetitionEnded) &&
{pointsForNextStory} {t('points for next story submitted')}
}\n
\n this.deletePhoto()}\n disabled={!isVerifiedCompetitionUser}\n prompt={t('Upload a photo or video and receive 50 bonus points.')}\n />\n
\n {(pledge && pledge.canTagUsers) &&\n
\n this.untagUser(user)}\n />\n this.tagUser(user)}\n />\n
\n }\n
\n {(pledge && pledge.canUseMarkdown) &&\n this.update({ form: up({ contentMD: markdown }, form) })}\n />\n }\n {(pledge && !pledge.canUseMarkdown) &&\n
\n \n this.updateContent(e.target.value)}\n />\n \n {(submitted && form.contentMD.length < 50) &&\n \n {t('Stories require 50 minimum characters. You\\'ve entered')} \n {form.contentMD.length} \n {form.contentMD.length === 1 ? t('character') : t('characters')}.\n \n }\n
\n }\n
\n {(pledge && pledge.qualifyLocation) &&\n
\n {t('I\\'m doing this action at')} \n this.update({ form: up({ locationQualifier: toLocationQualifierEnum(value) }, form) })}\n />\n
\n }\n {(pledge && !pledge.canTagUsers) &&\n
\n {t('This is something')} \n this.update({ form: up({ status: toStoryStatusEnum(value) }, form) })}\n />\n
\n }\n {(form.links && form.links.length > 0) &&\n \n }\n {isVerifiedCompetitionUser &&\n
\n this.submit()}\n >{t('Take action')}\n this.clear()}\n >{t('Cancel')}\n
\n }\n {!isVerifiedCompetitionUser &&\n {t('Please verify your email so you can upload stories!')}\n }\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => ({\n isVerifiedCompetitionUser: selectors.isVerifiedCompetitionUser(state),\n fileInputID: `${fileInputIDBase}${ownProps.story.id}`,\n postedPhoto: state.postedImages[`${fileInputIDBase}${ownProps.story.id}`],\n taggedUserIDs: state.storyTaggedUserIDs[ownProps.story.id] || [],\n savedStoryFormID: state.savedStoryFormID,\n hasCompetitionEnded: selectors.hasCompetitionEnded(state),\n pointsForNextStory: calculatePointsForNextStory(state.userPledgeCompletions, ownProps.pledge)\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n clearPostedImage: actions.clearPostedImage,\n cancelStoryEdit: actions.cancelStoryEdit,\n clearNewStoryTaggedUserIDs: actions.clearNewStoryTaggedUserIDs,\n parseOpenGraph: actions.parseOpenGraph\n}, dispatch);\n\nexport default compose(\n withLocalization('story'),\n connect(mapStateToProps, mapDispatchToProps)\n)(StoryForm) as React.SFC;\n","import * as React from 'react';\nimport { DataURLFromFile } from '../utils/image';\n\n// DataURLs are too large to story in Redux. Keep them here.\nexport interface ImageStore {\n [imageID: string]: DataURLFromFile;\n}\nexport const imageStore: ImageStore = {};\n\nexport interface ImageStoreProps {\n images: ImageStore;\n setImage: (imageID: string, dataURLFromFile: DataURLFromFile) => void;\n delImage: (imageID: string) => void;\n getImage: (imageID: string) => DataURLFromFile;\n}\n\nexport const setImage = (imageID: string, image: DataURLFromFile) => {\n imageStore[imageID] = image;\n};\n\nexport const getImage = (imageID: string): DataURLFromFile => imageStore[imageID];\n\nexport const delImage = (imageID: string) => {\n delete imageStore[imageID];\n};\n\ntype SomeComponent

= React.StatelessComponent

| React.ComponentClass

| React.SFC

;\n\nexport const withImages =

(imageIDs: string[]) => (Component: SomeComponent

) =>\n (otherProps: P) => {\n const images: ImageStore = imageIDs.reduce((previous, imageID) => ({ ...previous, [imageID]: imageStore[imageID] }), {});\n return React.createElement(\n Component,\n {\n images, setImage, delImage, getImage, ...otherProps\n }\n );\n };\n","import * as React from 'react';\nimport { Carousel, CarouselItem, CarouselControl } from 'reactstrap';\nimport { compose } from 'redux';\nimport { OpenGraphLink } from '../userApi';\nimport { LProps, RouterProps, withRouterAndHelpers, withLocalization } from '../utils/wrappers';\nimport ExternalLink from './ExternalLink';\n\ninterface Props {\n links: OpenGraphLink[];\n}\n\ninterface OpenGraphCarouselState {\n activeIndex: number;\n}\n\nclass OpenGraphCarousel extends React.Component & RouterProps<{}>, OpenGraphCarouselState> {\n public state = { activeIndex: 0 };\n\n private next() {\n const { activeIndex } = this.state;\n const { links } = this.props;\n if (activeIndex === links.length - 1) {\n this.setState({ activeIndex: 0 });\n } else {\n this.setState({ activeIndex: activeIndex + 1 });\n }\n }\n\n private previous() {\n const { activeIndex } = this.state;\n const { links } = this.props;\n if (activeIndex === 0) {\n this.setState({ activeIndex: links.length - 1 });\n } else {\n this.setState({ activeIndex: activeIndex - 1 });\n }\n }\n\n public render() {\n const {\n links, t\n } = this.props;\n const { activeIndex } = this.state;\n return (\n \n

\n this.next()}\n previous={() => this.previous()}\n interval={false}\n >\n {links.map((link, i) => (\n \n
\n
\n
{link.title || link.url}
\n
\n
{link.description}
\n
\n
\n
\n {/** OPTIMIZATION: don't load photos unless they are viewable. */}\n {(link.image && activeIndex === i) && {link.title}}\n
\n
\n
\n ))}\n this.previous()}>\n {t('previous')}\n \n this.next()} />\n \n
\n \n );\n }\n}\nexport default compose(\n withRouterAndHelpers,\n withLocalization('links')\n)(OpenGraphCarousel) as React.ComponentClass;\n","import * as React from 'react';\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { CompetitionUserPoint } from '../userApi';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { State, Modals } from '../redux/state';\nimport actions from '../redux/actions';\nimport { connect } from 'react-redux';\n\ninterface Props {\n isOpen: boolean;\n dismissStoryPointsModal: () => void;\n points: CompetitionUserPoint;\n lastPointsCanEarnMore: boolean;\n}\n\nconst StoryPointsModal = ({\n t, isOpen, dismissStoryPointsModal, points, lastPointsCanEarnMore\n}: LProps) => (\n \n {points && \n {t('Congratulations, you\\'ve earned {{points}} points!', { points: points.points })}\n }\n {points && \n
\n
\n \n
\n
\n
\n {(Boolean(points.pledgePoints) && lastPointsCanEarnMore) &&\n
{points.pledgePoints} {t('points for taking this action for the first time')}
\n }\n {(Boolean(points.pledgePoints) && !lastPointsCanEarnMore) &&\n
{points.pledgePoints} {t('points for taking this action')}
\n }\n {Boolean(points.repeatPoints) &&
{points.repeatPoints} {t('points for repeating this action')}
}\n {Boolean(points.photoPoints) &&
{points.photoPoints} {t('points for including a photo')}
}\n
\n
}\n \n \n \n \n);\n\nconst mapStateToProps = (state: State) => ({\n isOpen: state.modal === Modals.StoryPoints && Boolean(state.lastPointsEarned),\n points: state.lastPointsEarned,\n lastPointsCanEarnMore: state.lastPointsCanEarnMore\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n dismissStoryPointsModal: actions.dismissStoryPointsModal\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('stories')\n)(StoryPointsModal) as React.ComponentClass;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport NavBar from './NavBar';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { connect } from 'react-redux';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { compose } from 'redux';\nimport { Competition, UserRead } from '../userApi';\nimport { ErrorUnexpected, ErrorAuth, ErrorUniversityMembership, ErrorCompetitionHasntStarted } from './Errors';\nimport ErrorCompetitionVerification from './ErrorCompetitionVerification';\nimport ErrorUserJoin from './ErrorUserJoin';\nimport { TranslationFunction } from 'i18next';\nimport logger from '../utils/logger';\nimport { trackEvent } from '../utils/googleAnalytics';\nimport { Alert } from 'reactstrap';\n\nenum ErrorNotification {\n Unexpected,\n Auth,\n UniversityVerification,\n CompetitionVerification,\n CompetitionHasntStarted,\n UserHasntJoin\n}\n\ninterface PageErrorProps {\n errorNotification: ErrorNotification;\n user: UserRead;\n t: TranslationFunction;\n competition?: Competition\n} \n\nconst PageError = ({ errorNotification, user, t, competition }: PageErrorProps) => {\n switch (errorNotification) {\n case ErrorNotification.Unexpected:\n return ;\n case ErrorNotification.Auth:\n return ;\n case ErrorNotification.UniversityVerification:\n return ;\n case ErrorNotification.UserHasntJoin:\n return ;\n case ErrorNotification.CompetitionVerification:\n return ;\n case ErrorNotification.CompetitionHasntStarted:\n return ;\n default:\n logger.error(`Received unexpected app error: ${errorNotification}.`);\n return
;\n }\n};\n\nexport const PageContent = ({ className = '', children }: { className?: string, children: React.ReactNode }) => (\n
\n \n
\n {children}\n
\n
\n);\n\nexport const PageContentWithBanner = ({\n className = '', children, bannerURL, alt\n}: { bannerURL: string, alt: string, className?: string, children: React.ReactNode }) => (\n
\n \n
\n {alt}\n
\n
\n {children}\n
\n
\n);\n\nexport interface PageProps {\n requiresUniversity?: boolean;\n requiresCompetitionStart?: boolean;\n requiresCompetitionVerification?: boolean;\n authenticated?: boolean;\n component: React.ComponentClass | React.SFC;\n raw?: boolean;\n isGrey?: boolean;\n hasBanner?: boolean;\n}\n\ninterface Props extends PageProps, PageErrorProps {\n hasCompetitionEnded: boolean;\n competition: Competition,\n competitionDescription: string;\n}\n\ninterface PageState {\n hasError: boolean;\n}\n\nclass Page extends React.Component, PageState> {\n public state = { hasError: false };\n\n public static getDerivedStateFromError(_error: Error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n public componentDidCatch(error: Error, info: React.ErrorInfo) {\n // You can also log the error to an error reporting service\n logger.error(error, info);\n trackEvent('app', 'unhandledError', 'pageDidCatch');\n }\n\n public render() {\n const {\n component, errorNotification, t, user,\n hasCompetitionEnded, isGrey, raw, hasBanner = false,\n competitionDescription\n } = this.props;\n if (errorNotification) {\n return (\n \n \n \n );\n } else if (this.state.hasError) {\n return (\n \n \n \n );\n } else if (raw) {\n return React.createElement(component);\n }\n return (\n \n {hasCompetitionEnded &&\n {`${competitionDescription} ` + t('has ended and winners will be announced by May 6th. Thank you for your participation!')}\n }\n {React.createElement(component)}\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n let errorNotification: ErrorNotification;\n if (Boolean(state.error)) {\n errorNotification = ErrorNotification.Unexpected;\n } else if (ownProps.authenticated && !selectors.isLoggedIn(state)) {\n errorNotification = ErrorNotification.Auth;\n } else if (ownProps.requiresCompetitionVerification && !selectors.isCompetitionUser(state)) {\n errorNotification = ErrorNotification.UserHasntJoin;\n } else if (ownProps.requiresCompetitionVerification && !selectors.isVerifiedCompetitionUser(state)) {\n errorNotification = selectors.isLoggedIn(state) ? ErrorNotification.CompetitionVerification : ErrorNotification.Auth;\n } else if (ownProps.requiresCompetitionStart && !selectors.hasCompetitionStarted(state) && !selectors.isUniversitySuperadmin(state)) {\n errorNotification = ErrorNotification.CompetitionHasntStarted;\n } else if (ownProps.requiresUniversity && !selectors.userUniversity(state)) {\n errorNotification = selectors.isLoggedIn(state) ? ErrorNotification.UniversityVerification : ErrorNotification.Auth;\n }\n return {\n competition: state.competition,\n errorNotification,\n user: state.user,\n hasCompetitionEnded: selectors.hasCompetitionEnded(state),\n competitionDescription: selectors.competitionDescription(state)\n };\n};\n\nexport default compose(\n withLocalization('dashboard'),\n connect(mapStateToProps)\n)(Page) as React.SFC;\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport cx from 'classnames';\nimport { compose, bindActionCreators, Dispatch } from 'redux';\nimport { Button } from 'reactstrap';\nimport RouteLink from './RouteLink';\nimport { Routes, makeEntityPath, makeFaqPath, FaqSection } from '../utils/routerHelper';\nimport { LProps, withLocalization, withRouterAndHelpers, RouterProps } from '../utils/wrappers';\nimport actions from '../redux/actions';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { UserRead, Entity, Competition } from '../userApi';\nimport NavBarDropdown from './NavBarDropdown';\nimport { isProduction } from '../utils/environment';\n\ninterface Props {\n isLoggedIn: boolean;\n hasJoined: boolean;\n user: UserRead;\n university: Entity;\n competition: Competition;\n canViewCompetitionContent: boolean;\n logout: () => void;\n}\n\nconst buttonStyle = {\n width: '135px',\n height: '39px',\n marginRight: '14px'\n};\n\nconst NavBar = ({\n t, history, logout, user, goToRouteByName, isLoggedIn,hasJoined,\n university, competition, canViewCompetitionContent\n}: LProps & Props>) => { return (\n
\n
\n
\n {competition && {t('Cool}\n \n
\n
\n {!isLoggedIn &&\n
\n \n \n
\n }\n {(!isLoggedIn || !competition ) &&\n
\n {competition && {t('About')}}\n {!competition && {t('About')}}\n {!isProduction && competition && {t('Blog')}}\n {t('FAQ')}\n
\n }\n
\n {competition && }\n
\n {(isLoggedIn && canViewCompetitionContent) &&\n
\n {t('Actions')}\n {t('Account')}\n {university &&\n {t('Campus')}\n }\n {t('Teams')}\n
\n }\n
\n
\n
\n)};\n\nconst mapStateToProps = (state: State): Partial => ({\n isLoggedIn: selectors.isLoggedIn(state),\n hasJoined: selectors.hasJoined(state),\n user: state.user,\n university: selectors.userUniversity(state),\n competition: state.competition,\n canViewCompetitionContent: selectors.canViewCompetitionContent(state)\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n logout: actions.logout\n}, dispatch);\n\nexport default compose(\n withLocalization('navigation'),\n withRouterAndHelpers,\n connect(mapStateToProps, mapDispatchToProps)\n)(NavBar);\n","export * from './login';\nexport * from './signup';\nexport * from './userEmail';\nexport * from './forgotPassword';\nexport * from './passwordReset';\nexport * from './userUpdate';\nexport * from './inviteAFriend';\nexport * from './entity';\nexport * from './blogEntry';\nexport * from './join';\n","import * as React from 'react';\nimport cx from 'classnames';\n\ninterface Props {\n name: string;\n value: string;\n children?: React.ReactNode;\n placeholder?: string;\n checked: boolean;\n onChange: (value: string) => void;\n error?: string;\n containerStyle?: React.CSSProperties;\n inputProps?: React.InputHTMLAttributes;\n}\n\nconst Radio = ({\n name,\n value,\n children,\n checked,\n error,\n onChange,\n placeholder = '',\n containerStyle,\n inputProps = {}\n}: Props) => (\n \n);\n\nexport default Radio;\n","import * as React from 'react';\nimport cx from 'classnames';\n\ninterface Props {\n children?: React.ReactNode;\n placeholder?: string;\n checked: boolean;\n onChange: (value: boolean) => void;\n error?: string;\n containerStyle?: React.CSSProperties;\n inputProps?: React.InputHTMLAttributes;\n}\n\nconst Checkbox = ({\n children,\n checked,\n error,\n onChange,\n placeholder = '',\n containerStyle,\n inputProps = {}\n}: Props) => (\n \n);\n\nexport default Checkbox;\n","import * as React from 'react';\nimport { Alert } from 'reactstrap';\nimport { StyleState } from '../utils/styles';\nimport { Competition, UserRead } from '../userApi';\nimport { TranslationFunction } from 'i18next';\nimport { Link } from 'react-router-dom';\nimport { makeSimpleRoutePath, Routes } from '../utils/routerHelper';\nimport ExternalLink from './ExternalLink';\nimport moment = require('moment');\n\ninterface ErrorProps {\n t: TranslationFunction;\n user?: UserRead;\n competition?: Competition;\n}\n\nexport const ErrorUnexpected = ({ t, user }: ErrorProps) => (\n \n
\n {t('We experienced an unexpected error. If the error persists, please let our staff know at')} \n contact@coolcampuschallenge.org.\n
\n \n);\n\nexport const ErrorAuth = ({ t }: ErrorProps) => (\n \n
\n {t('Please')} \n {t('login')} \n {t('to view this page.')}\n
\n \n);\n\nexport const ErrorUniversityMembership = ({ t }: ErrorProps) => (\n \n
\n {t('You must have a verified university membership to view this page. Please')} \n {t('verify your email')} \n {t('to continue.')}\n
\n \n);\n\nexport const ErrorNoTeamsForUniversity = ({ t }: ErrorProps) => (\n \n
\n {t('No one has created a team for your campus yet.')} \n {t('Be the first!')} \n
\n \n);\n\nexport const ErrorCompetitionHasntStarted = ({ t, competition }: ErrorProps) => (\n \n \n
\n {t('Thank you for joining the ') + competition.description+ \".\" }\n
\n {t(\"The competition officially opens soon\") + t('. Please return to this site at ') + moment(competition.startsAt).format('MMMM Do') +t(' to log your actions and start earning points.')}\n
\n \n);\n","import * as React from 'react';\nimport * as InfiniteScroll from 'react-infinite-scroller';\nimport { Alert } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { BlogEntries, Pagination } from '../userApi';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { State } from '../redux/state';\nimport actions from '../redux/actions';\nimport { connect } from 'react-redux';\nimport { StyleState } from '../utils/styles';\nimport BlogEntryPreview from './BlogEntryPreview';\n\ninterface ManualProps {\n showEntity?: boolean;\n}\n\ninterface Props extends ManualProps {\n blogEntries: BlogEntries;\n pagination: Pagination;\n pageBlogEntries: (page: number) => void;\n}\n\nconst BlogEntries = ({\n t, blogEntries, pagination, pageBlogEntries, showEntity = true\n}: LProps) => (\n
\n {(blogEntries.length === 0 && pagination.nextPage === -1) &&\n
\n {t('No blog entries found!')}\n
\n }\n {(blogEntries.length > 0 || pagination.nextPage > -1) &&\n {t('Loading')} ...
}\n threshold={250}\n >\n {blogEntries.map((blogEntry, i) =>\n \n )}\n \n }\n
\n);\n\nconst mapStateToProps = (state: State): Partial => ({\n blogEntries: state.blogEntries || [],\n pagination: state.blogEntryPagination\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n pageBlogEntries: actions.pageBlogEntries\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('blogEntry')\n)(BlogEntries) as React.ComponentClass;\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { makeEntityPath } from '../utils/routerHelper';\nimport { Entity } from '../userApi';\nimport { TranslationFunction } from 'i18next';\n\ninterface ManualProps {\n entity: Entity;\n competitionID: number;\n t: TranslationFunction;\n}\n\nconst EntityIdentity = ({\n entity, competitionID, t\n}: ManualProps) => (\n
\n
\n
\n
\n
\n {entity.name}\n
\n
\n
\n {entity.abbreviation || (entity.name || '').slice(0, 20)}\n
\n
\n);\n\nexport default EntityIdentity;\n","import * as React from 'react';\nimport { SocialLinks } from '../userApi';\nimport { isValidURL } from '../utils/validations';\n\ninterface Props {\n socialLinks: SocialLinks;\n}\n\nconst socialLink = (href: string, icon: string) =>\n \n {/** This is for aria */}\n {icon}\n \n ;\n\nconst displayWebsiteHost = (website: string) => {\n try {\n const url = new URL(website);\n return url.hostname;\n } catch (err) {\n return website;\n }\n};\n\nexport default ({ socialLinks }: Props) => (\n
\n
\n {socialLinks.medium && socialLink(`https://medium.com/@${socialLinks.medium}`, 'medium')}\n {isValidURL(socialLinks.facebook) && socialLink(socialLinks.facebook, 'facebook-f')}\n {socialLinks.twitter && socialLink(`https://twitter.com/${socialLinks.twitter}`, 'twitter')}\n {isValidURL(socialLinks.linkedin) && socialLink(socialLinks.linkedin, 'linkedin')}\n {socialLinks.instagram && socialLink(`https://instagram.com/${socialLinks.instagram}`, 'instagram')}\n
\n {isValidURL(socialLinks.website) && {(displayWebsiteHost(socialLinks.website))}}\n
\n);\n","import * as React from 'react';\nimport * as moment from 'moment';\nimport SafeHTML from './SafeHtml';\nimport { ButtonGroup, Button } from 'reactstrap';\nimport ConfirmDeleteModal from './ConfirmDeleteModal';\nimport { Link } from 'react-router-dom';\nimport { compose } from 'redux';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport displayContent from './displayContent';\nimport { UserRead, Competition } from '../userApi';\nimport { makeUserPath } from '../utils/routerHelper';\nimport { displayFullName } from '../utils/userApiHelper';\nimport { State } from '../redux/state';\nimport { connect } from 'react-redux';\n\ninterface ManualProps {\n contentHTML: string;\n title: string;\n date: string;\n photo: string;\n creator?: UserRead;\n showControls?: boolean;\n previousURL?: string;\n allURL?: string;\n nextURL?: string;\n children?: React.ReactNode;\n onEdit?: () => void;\n onDelete?: () => void;\n}\n\ninterface Props extends ManualProps {\n competition: Competition;\n}\n\ninterface SafeHTMLPageContentState {\n isConfirmingDelete: boolean;\n}\n\nclass SafeHTMLPageContent extends React.Component, SafeHTMLPageContentState> {\n public state = { isConfirmingDelete: false };\n\n public render() {\n const {\n photo, title, contentHTML, date, onEdit, onDelete, showControls, competition,\n previousURL, allURL, nextURL, t, children, creator\n } = this.props;\n return (\n
\n {photo &&
{title}
}\n
\n
\n
{title}
\n {creator && {displayFullName(creator)}}\n
{moment(date).format('MMMM D, YYYY')}
\n {(onEdit || onDelete) &&\n \n {onEdit && }\n {onDelete && }\n \n }\n
\n
\n \n
\n
\n {onDelete &&\n this.setState({ isConfirmingDelete: false })}\n />\n }\n {showControls &&\n
\n
\n {previousURL && {t('Previous')}}\n {!previousURL && {t('Previous')}}\n
\n
\n {allURL && {t('All')}}\n {!allURL &&  }\n
\n
\n {nextURL && {t('Next')}}\n {!nextURL && {t('Next')}}\n
\n
\n }\n {children}\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State) => ({\n competition: state.competition\n});\n\nexport default compose(\n withLocalization('safeHTMLPage'),\n connect(mapStateToProps)\n)(SafeHTMLPageContent) as React.SFC;\n","import * as React from 'react';\nimport up from 'updeep';\nimport { FormGroup, Input, FormFeedback, Button, Collapse, Label } from 'reactstrap';\nimport { isEmpty } from 'lodash';\nimport { TranslationFunction } from 'i18next';\nimport { EntityForm, EntityErrors, makeEntityErrors } from '../utils/forms';\nimport { State } from '../redux/state';\nimport actions from '../redux/actions';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { withLocalization } from '../utils/wrappers';\nimport { connect } from 'react-redux';\nimport MarkdownEditor from '../shared/MarkdownEditor';\nimport ImageUploader from './ImageUploader/ImageUploader';\nimport { RouterProps, withRouter } from 'react-router';\nimport { makeEntityPath } from '../utils/routerHelper';\nimport { Competition, Entity } from '../userApi';\nimport SocialLinksForm from './SocialLinksForm';\n\ninterface ManualProps {\n entity: Partial;\n}\n\ninterface Props extends ManualProps {\n t: TranslationFunction;\n competition: Competition;\n bannerInputID: string;\n photoInputID: string;\n postedPhoto: string;\n postedBanner: string;\n clearPostedImage: (inputID: string) => void;\n save: (entity: EntityForm, photoInputID: string, bannerInputID: string) => void;\n}\n\nconst bannerInputIDBase = 'entity__banner__input';\nconst photoInputIDBase = 'entity__photo__input';\n\ninterface EntityFormState {\n form: Partial;\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n editingSocial: boolean;\n}\n\nconst initialState: EntityFormState = {\n form: {\n id: 0,\n name: '',\n // We can only create teams through UI.\n type: Entity.TypeEnum.Team,\n descriptionMD: '',\n photo: '',\n bannerPhoto: '',\n permittedDomains: [],\n publicJoin: true\n },\n errors: {},\n dirty: {},\n submitted: false,\n editingSocial: false\n};\n\nconst wasPhotoUploaded = (nextProps: Props, form: Entity) => nextProps.postedPhoto && form.photo !== nextProps.postedPhoto;\nconst wasBannerUploaded = (nextProps: Props, form: Entity) => nextProps.postedBanner && form.bannerPhoto !== nextProps.postedBanner;\n\nclass EntityFormComponent extends React.Component {\n public state = initialState;\n\n public componentWillMount() {\n const { entity } = this.props;\n this.setState({\n form: up(entity, this.state.form)\n });\n }\n\n public componentWillReceiveProps(nextProps: Props & RouterProps) {\n const { form } = this.state;\n const { clearPostedImage, photoInputID, bannerInputID } = nextProps;\n if (wasPhotoUploaded(nextProps, form as Entity)) {\n this.setState({ form: { ...form, photo: nextProps.postedPhoto } });\n clearPostedImage(photoInputID);\n } else if (wasBannerUploaded(nextProps, form as Entity)) {\n this.setState({ form: { ...form, bannerPhoto: nextProps.postedBanner } });\n clearPostedImage(bannerInputID);\n }\n }\n\n private cancel() {\n const { form } = this.state;\n const { entity, history, t, competition } = this.props;\n // TODO delete from ImageStore.\n this.setState({\n ...initialState,\n form: entity\n });\n if (entity.id !== 0) {\n history.push(makeEntityPath(competition.id, form as Entity, t));\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { t } = this.props;\n this.setState(update as EntityFormState, () => {\n const { form, submitted, dirty } = this.state;\n if (validate) {\n const errors = makeEntityErrors({ ...form, ...update, dirty, submitted }, [], t);\n const validationUpdate: Partial = { errors };\n if (errors.socialLinks) {\n validationUpdate.editingSocial = true;\n }\n this.setState(validationUpdate as EntityFormState);\n this.setState({ errors });\n }\n });\n }\n\n private markDirty(field: string) {\n const { t } = this.props;\n const { form, submitted } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const errors = makeEntityErrors({ ...form, dirty, submitted }, [], t);\n const update: Partial = { errors, dirty };\n if (errors.socialLinks) {\n update.editingSocial = true;\n }\n this.setState(update as EntityFormState);\n }\n\n private submit() {\n const { save, photoInputID, bannerInputID, t } = this.props;\n const submitted = true;\n const { form, dirty } = this.state;\n const errors = makeEntityErrors({ ...form, dirty, submitted }, [], t);\n if (isEmpty(errors)) {\n save({ submitted, dirty, ...form } as EntityForm, photoInputID, bannerInputID);\n }\n const update: Partial = { errors, submitted };\n if (errors.socialLinks) {\n update.editingSocial = true;\n }\n this.setState(update as EntityFormState);\n }\n\n public render() {\n const { form, errors, editingSocial } = this.state;\n const {\n t, entity, bannerInputID, photoInputID\n } = this.props;\n if (!entity) return '';\n return (\n
\n \n
\n this.update({ form: up({ bannerPhoto: '' }, form) })}\n />\n
\n
\n \n this.update({ form: up({ photo: '' }, form) })}\n />\n {errors.photo && {errors.photo}}\n \n \n \n this.markDirty('name')}\n placeholder={t('Name')}\n onChange={(e) => this.update({ form: { ...form, name: e.target.value } })}\n value={form.name || ''}\n />\n {errors.name && {errors.name}}\n \n \n \n this.markDirty('abbreviation')}\n placeholder={t('Name')}\n onChange={(e) => this.update({ form: { ...form, abbreviation: e.target.value } })}\n value={form.abbreviation || ''}\n />\n {errors.abbreviation && {errors.abbreviation}}\n \n
\n this.setState({ editingSocial: !editingSocial })}\n >{editingSocial ? t('Close') : t('Edit social media links')}
\n \n
\n this.update({ form: { ...form, socialLinks } }, true)}\n />\n
\n
\n
\n\n \n this.markDirty('descriptionMD')\n }}\n value={form.descriptionMD}\n onChange={(markdown) => this.update({ form: { ...form, descriptionMD: markdown } })}\n />\n {errors.descriptionMD && {errors.descriptionMD}}\n \n
\n this.submit()}\n >{t('Save')}\n this.cancel()}\n >{t('Cancel')}\n
\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => {\n if (!ownProps.entity) return {};\n const photoInputID = `${photoInputIDBase}${ownProps.entity.id}`;\n const bannerInputID = `${bannerInputIDBase}${ownProps.entity.id}`;\n return {\n competition: state.competition,\n photoInputID,\n bannerInputID,\n postedPhoto: state.postedImages[photoInputID],\n postedBanner: state.postedImages[bannerInputID]\n };\n};\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: {}): Partial => bindActionCreators({\n save: actions.saveEntity,\n clearPostedImage: actions.clearPostedImage\n}, dispatch);\n\nexport default compose(\n withLocalization('entityForm'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(EntityFormComponent) as React.SFC;\n","import * as React from 'react';\nimport up from 'updeep';\nimport { FormGroup, Input, FormFeedback, Button } from 'reactstrap';\nimport { isEmpty } from 'lodash';\nimport { TranslationFunction } from 'i18next';\nimport { State } from '../redux/state';\nimport actions from '../redux/actions';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { withLocalization } from '../utils/wrappers';\nimport { connect } from 'react-redux';\nimport MarkdownEditor from '../shared/MarkdownEditor';\nimport ImageUploader from './ImageUploader/ImageUploader';\nimport { RouterProps, withRouter } from 'react-router';\nimport { makeBlogEntryPath } from '../utils/routerHelper';\nimport { Competition, BlogEntry } from '../userApi';\nimport { BlogEntryForm, BlogEntryErrors, makeBlogEntryErrors } from '../utils/forms';\n\ninterface ManualProps {\n blogEntry: Partial;\n}\n\ninterface Props extends ManualProps {\n t: TranslationFunction;\n competition: Competition;\n postedImage: string;\n save: (form: BlogEntryForm, photoInputID: string) => void;\n clearPostedImage: (inputID: string) => void;\n}\n\nconst photoInputID = 'blog_entry__photo__input';\n\ninterface BlogEntryFormState {\n form: Partial;\n errors: Partial;\n dirty: { [key: string]: boolean };\n submitted: boolean;\n}\n\nconst initialState: BlogEntryFormState = {\n form: {\n id: 0, photo: '', title: '', contentMD: ''\n },\n errors: {},\n submitted: false,\n dirty: {}\n};\n\nclass BlogEntryFormComponent extends React.Component {\n public state = initialState;\n\n public componentDidMount() {\n // entityID only required for new blog entries.\n const { blogEntry } = this.props;\n const { form } = this.state;\n this.setState({\n form: up(blogEntry, form)\n });\n }\n\n public componentWillReceiveProps(nextProps: Props & RouterProps) {\n const { form } = this.state;\n const { clearPostedImage } = nextProps;\n if (nextProps.postedImage && form.photo !== nextProps.postedImage) {\n this.setState({ form: up({ photo: nextProps.postedImage }, form) });\n clearPostedImage(photoInputID);\n }\n }\n\n private cancel() {\n const { form } = this.state;\n const { blogEntry, history, t, clearPostedImage } = this.props;\n clearPostedImage(photoInputID);\n this.setState({\n ...initialState,\n form: up(blogEntry, form)\n });\n if (blogEntry.id !== 0) {\n history.push(makeBlogEntryPath(form.id, t));\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { t } = this.props;\n if (validate) {\n const { form, dirty, submitted } = this.state;\n const errors = makeBlogEntryErrors({ ...form, dirty, submitted }, [], t);\n update.errors = errors;\n }\n this.setState(update as BlogEntryFormState);\n }\n\n private markDirty(field: string) {\n const { t } = this.props;\n const { form, submitted } = this.state;\n const dirty = { ...this.state.dirty, [field]: true };\n const update: Partial = { dirty };\n const errors = makeBlogEntryErrors({ ...form, submitted, dirty }, [], t);\n update.errors = errors;\n this.setState({ errors });\n }\n\n private submit() {\n const { save, t } = this.props;\n const submitted = true;\n const { form, dirty } = this.state;\n const errors = makeBlogEntryErrors({ ...form, dirty, submitted }, [], t);\n if (isEmpty(errors)) {\n save({ dirty, submitted, ...form } as BlogEntryForm, photoInputID);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const {\n t\n } = this.props;\n return (\n
\n \n this.update({ form: { ...form, photo: '' } })}\n aspectRatio={t('1:1 to 2:1')}\n />\n \n \n this.markDirty('title')}\n placeholder={t('Title')}\n onChange={(e) => this.update({ form: { ...form, title: e.target.value } })}\n value={form.title || ''}\n />\n {errors.title && {errors.title}}\n \n \n this.markDirty('contentMD')\n }}\n value={form.contentMD}\n onChange={(markdown) => this.update({ form: { ...form, contentMD: markdown } })}\n />\n {errors.contentMD && {errors.contentMD}}\n \n
\n this.submit()}\n >{t('Save')}\n this.cancel()}\n >{t('Cancel')}\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n competition: state.competition,\n postedImage: state.postedImages[photoInputID]\n});\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: {}): Partial => bindActionCreators({\n save: actions.saveBlogEntry,\n clearPostedImage: actions.clearPostedImage\n}, dispatch);\n\nexport default compose(\n withLocalization('entityForm'),\n withRouter,\n connect(mapStateToProps, mapDispatchToProps)\n)(BlogEntryFormComponent) as React.SFC;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { Table } from 'reactstrap';\nimport { CompetitionPledge, CompetitionPledgeCategories, PledgeCompletions, CompetitionScoreLevel } from '../userApi';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { Link } from 'react-router-dom';\nimport { makePledgePath, makePledgeCategoryPath } from '../utils/routerHelper';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { getScoreLevelPhoto, CompetitionPledges } from '../utils/userApiHelper';\nimport LinkButton from './LinkButton';\nimport PledgesTableHelp from './PledgesTableHelp';\n\ninterface ManualProps {\n competitionPledgeCategoryID: number;\n}\n\ninterface PledgesByScoreLevel {\n scoreLevel?: CompetitionScoreLevel;\n pledges: CompetitionPledge[];\n active: boolean;\n}\n\ninterface Props extends ManualProps {\n pledgesByLevel: PledgesByScoreLevel[];\n categories: CompetitionPledgeCategories;\n completions: PledgeCompletions;\n userIsSomeUniversityAdmin: boolean;\n}\n\ninterface PledgesTableState {\n helpIsOpen: boolean;\n}\n\nconst initialState: PledgesTableState = { helpIsOpen: false };\n\nclass PledgesTable extends React.Component, PledgesTableState> {\n public state = initialState;\n\n public render() {\n const {\n competitionPledgeCategoryID, pledgesByLevel, t, formatNumber, categories, completions,\n userIsSomeUniversityAdmin\n } = this.props;\n return (\n
\n this.setState({ helpIsOpen: true })}\n >{t('How is my score calculated?')}\n \n \n \n \n {competitionPledgeCategoryID === 0 && }\n \n \n \n \n \n {pledgesByLevel.map(({ pledges, scoreLevel, active }, i) => (\n \n {(pledges.length > 0) &&\n \n \n {!active &&\n \n }\n \n }\n {pledges.map((pledge) =>\n = pledge.repeats,\n 'table-warning': completions[pledge.id] >= 1 && completions[pledge.id] < pledge.repeats,\n 'cc__pledge_inactive': i !== 0\n })}\n >\n \n {competitionPledgeCategoryID === 0 &&\n \n }\n \n \n \n \n )}\n \n ))}\n
{t('Title')}{t('Category')}{t('Points')}\n
\n {t('Pounds CO')}\n 2\n {t('savings')}\n
\n
\n {t('CO')}2\n
\n
{t('Completions')}
\n {getScoreLevelPhoto(scoreLevel) ? (\n {scoreLevel.name}\n ):}\n  {scoreLevel.name}\n {}\n \n {t('Earn {{points}} points to unlock these actions', { points: formatNumber(scoreLevel.threshold) })}\n
\n {(active || userIsSomeUniversityAdmin) && {pledge.shortTitle}}\n {(!active && !userIsSomeUniversityAdmin) && pledge.shortTitle}\n \n {categories[pledge.competitionPledgeCategoryID] ? categories[pledge.competitionPledgeCategoryID].name : ''}\n {pledge.points}{formatNumber(pledge.savingsCO2Lbs, 0)}\n {completions[pledge.id] === pledge.repeats && }\n {completions[pledge.id] !== pledge.repeats && {completions[pledge.id] || 0} / {pledge.repeats}}\n
\n this.setState({ helpIsOpen: !this.state.helpIsOpen })}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: ManualProps) => ({\n pledgesByLevel: selectors.pledgesByCategoryAndLevel(state, ownProps),\n competitions: state.userPledgeCompletions,\n categories: state.competitionPledgeCategories,\n completions: state.userPledgeCompletions,\n userIsSomeUniversityAdmin: selectors.userIsSomeUniversityAdmin(state)\n});\n\nexport default compose(\n withLocalization('pledges'),\n connect(mapStateToProps)\n)(PledgesTable) as React.SFC;\n","// @ts-nocheck\nimport * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { Table } from 'reactstrap';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { Competition, CompetitionUserScore } from '../../userApi';\nimport { State } from '../../redux/state';\nimport actions from '../../redux/actions';\nimport CompetitionUserScoreRow from './CompetitionUserScoreRow';\nimport Paginator from '../Paginator';\nimport \"./topUserScores.css\"\n\ninterface ManualProps {\n entityID: number;\n onSort: (key:string)=>void;\n}\n\ninterface Props extends ManualProps {\n competition: Competition;\n topUserScores: CompetitionUserScore[];\n page: number;\n pageSize: number;\n totalPages: number;\n pageTopUserScores: (page: number, sort:string) => void; \n}\ninterface TopUserScoresState{\n term: string\n sort: string,\n desc: boolean\n}\n\nclass TopUserScores extends React.Component,TopUserScoresState> {\n constructor(props:LProps){\n super(props)\n this.state ={\n term: \"\",\n sort: 'points',\n desc: true\n }\n } \n changeSort(newKey){ \n const newState = {desc: true,sort: newKey}\n if(newKey == this.state.sort){\n newState.desc = !this.state.desc\n } \n this.setState(newState)\n this.props.pageTopUserScores(this.props.page, `${newState.desc?\"-\":\"\"}${newKey}`)\n }\n paginate(page:number){\n \n this.props.pageTopUserScores(page, `${this.state.desc?\"-\":\"\"}${this.state.sort}`)\n }\n\n public render() {\n const {\n t, topUserScores, page, pageSize, totalPages,\n pageTopUserScores\n } = this.props;\n return (\n
\n\n \n \n \n \n \n \n \n \n \n \n \n {topUserScores.map((cus, i) => (\n \n ))}\n \n
# this.changeSort(\"name\")}>{t('Name')}{t('Campus')} this.changeSort(\"points\")}>{t('Points')} this.changeSort(\"co2\")}>Lbs CO2 saved
\n this.paginate(page)}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: ManualProps): Partial => ({\n competition: state.competition,\n topUserScores: state.topCompetitionUserScores,\n page: state.topCompetitionUserScoreQuery.pagination.page,\n pageSize: state.topCompetitionUserScoreQuery.pagination.pageSize,\n totalPages: state.topCompetitionUserScoreQuery.pagination.totalPages\n});\nconst mapDispatchToProps = (dispatch: Dispatch, ownProps: ManualProps): Partial => bindActionCreators({\n initializeTopUserScoresPage: () => actions.initializeTopUserScoresPage(ownProps.entityID),\n pageTopUserScores: actions.pageTopUserScores\n}, dispatch);\n\nexport default compose(\n withLocalization('topUserScores'),\n connect(mapStateToProps, mapDispatchToProps)\n)(TopUserScores) as React.SFC;\n","import * as React from 'react';\nimport { asPage } from '../utils/wrappers/asPage';\nimport { Spinner } from 'reactstrap';\n\nexport const WaitingWhiteBox = () => (\n
\n \n
\n);\n\nexport const WaitingPageContent = () => (\n
\n \n
\n);\n\nexport default asPage({})(WaitingPageContent);\n","import * as React from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\nimport i18n from './utils/i18nextShim';\nimport { createCompetitionStore } from './redux';\nimport a, { ActionType } from './redux/actions';\nimport Routes from './routes';\nimport { getCurrentRoute } from './utils/routerHelper';\nimport { createBrowserHistory } from 'history';\nimport { patch } from './redux/actions/all';\nimport { delImage, setImage, getImage } from './redux/imageStore';\nimport { intercom } from './utils/intercom';\n\n/**\n * Here we (1) initialize Redux store and (2) History. If\n * add real internationalization support, we will also want\n * to initialize the i18n language files here.\n */\nconst initializeApp = async () => {\n const history = createBrowserHistory({});\n\n const store = createCompetitionStore({ history, i18n, delImage, setImage, getImage });\n\n // After initializing story, query parameters will be stored in state.\n // Push the pathname without query string to remove them.\n history.push(history.location.pathname);\n\n a.initialize()(store.dispatch, store.getState, { history, i18n });\n\n store.dispatch(patch({\n pendingRoute: getCurrentRoute(history.location, i18n),\n pathname: history.location.pathname\n }, ActionType.RouteChange));\n history.listen((location, _action) => {\n intercom('update');\n if (location.pathname !== store.getState().pathname) {\n store.dispatch(patch({\n pendingRoute: getCurrentRoute(location, i18n),\n pathname: location.pathname\n }, ActionType.RouteChange));\n }\n });\n\n render(\n (\n \n \n \n ),\n document.getElementById('app')\n );\n};\n\ninitializeApp();\n","import * as Ajv from 'ajv';\nimport { last } from 'lodash';\n\nconst validator = new Ajv({ allErrors: true });\n\nvalidator.addKeyword('password', {\n type: 'string',\n compile: () => (datum) => /^[\\d\\w!@#$%^&*(),.?\"{}|<> ]+$/.test(datum) &&\n /\\d+/.test(datum) && /\\w+/.test(datum)\n});\n\nvalidator.addKeyword('date', {\n type: 'string',\n compile: () => (datum: string) => !isNaN(new Date(datum).getTime())\n});\n\nconst passwordSchema = { type: 'string', password: true , minLength: 8, maxLength: 64 };\n\nexport const validatePassword = (password: string) => validator.validate(passwordSchema, password);\n\nexport const makeErrorMessage = (errors: Ajv.ErrorObject[], dataPath: string, message: string, isValidationReady: boolean): string => (\n (isValidationReady &&\n (errors.some((error) => dataPath === error.dataPath) ||\n errors.some((error) => new RegExp(`required property '${last(dataPath.split('.'))}'`).test(error.message)))) ? message : ''\n);\n\nexport const isValidURL = (url: string) => {\n try {\n const _parseURL = new URL(url);\n return true;\n } catch (_err) {\n return false;\n }\n};\n\nexport { validator };\n","import {\n applyMiddleware, compose,\n createStore, Store\n} from 'redux';\nimport thunk from 'redux-thunk';\nimport u from 'updeep';\nimport { ApplicationAction } from './actions/types';\nimport * as m from './middleware';\nimport initialState, { State } from './state';\nimport { ExtraArguments } from './extraArguments';\n\nconst devToolsExtension = (window as any).__REDUX_DEVTOOLS_EXTENSION__;\n\nconst reducer = (state: State = initialState, action: ApplicationAction): State => {\n if (action.payload === undefined) return state; \n \n return u({ ...action.payload, \n \"profilePledgeCompletions\": u.constant(action.payload.profilePledgeCompletions), \n \"profileMemberships\": u.constant(action.payload.profileMemberships), \n \"profileEntityRanks\": u.constant(action.payload.profileEntityRanks)\n }, \n state)\n\n};\nexport const createCompetitionStore = (extra: ExtraArguments): Store => {\n const middleware = [\n m.storage,\n m.crashReporter,\n thunk.withExtraArgument(extra)\n ];\n\n return createStore(\n reducer,\n initialState,\n devToolsExtension ?\n compose(applyMiddleware(...middleware), devToolsExtension()) :\n compose(applyMiddleware(...middleware))\n );\n};\n","export { default as crashReporter } from './crashReporter';\nexport { default as storage } from './storage';\n","import { Middleware, Store } from 'redux';\nimport logger from '../../utils/logger';\nimport { setError } from '../actions/errors';\nimport { State, UiErrorType } from '../state';\n\nconst crashReporter: Middleware = (_store: Store) => (next) => (action) => {\n try {\n return next(action);\n } catch (error) {\n logger.error(error);\n\n return next(setError({\n code: UiErrorType.FRONTEND\n }));\n }\n};\n\nexport default crashReporter;\n","import { reduce, split, replace } from 'lodash';\n\nexport const lodashQueryString = (search: string): { [key: string]: string[] } => {\n return reduce(split(replace(search, '?', ''), '&'), function(result: { [key: string]: string[] }, ev) {\n (result[ev.split('=')[0]] || (result[ev.split('=')[0]] = [])).push(ev.split('=')[1]);\n return result;\n }, {});\n};\n","import { State } from '../state';\n\nexport const isLoggedIn = (state: State) => Boolean(state.token);\n\nexport const hasJoined = (state: State) => Boolean(state.competitionUser);","var map = {\n\t\"./af\": 276,\n\t\"./af.js\": 276,\n\t\"./ar\": 277,\n\t\"./ar-dz\": 278,\n\t\"./ar-dz.js\": 278,\n\t\"./ar-kw\": 279,\n\t\"./ar-kw.js\": 279,\n\t\"./ar-ly\": 280,\n\t\"./ar-ly.js\": 280,\n\t\"./ar-ma\": 281,\n\t\"./ar-ma.js\": 281,\n\t\"./ar-sa\": 282,\n\t\"./ar-sa.js\": 282,\n\t\"./ar-tn\": 283,\n\t\"./ar-tn.js\": 283,\n\t\"./ar.js\": 277,\n\t\"./az\": 284,\n\t\"./az.js\": 284,\n\t\"./be\": 285,\n\t\"./be.js\": 285,\n\t\"./bg\": 286,\n\t\"./bg.js\": 286,\n\t\"./bm\": 287,\n\t\"./bm.js\": 287,\n\t\"./bn\": 288,\n\t\"./bn-bd\": 289,\n\t\"./bn-bd.js\": 289,\n\t\"./bn.js\": 288,\n\t\"./bo\": 290,\n\t\"./bo.js\": 290,\n\t\"./br\": 291,\n\t\"./br.js\": 291,\n\t\"./bs\": 292,\n\t\"./bs.js\": 292,\n\t\"./ca\": 293,\n\t\"./ca.js\": 293,\n\t\"./cs\": 294,\n\t\"./cs.js\": 294,\n\t\"./cv\": 295,\n\t\"./cv.js\": 295,\n\t\"./cy\": 296,\n\t\"./cy.js\": 296,\n\t\"./da\": 297,\n\t\"./da.js\": 297,\n\t\"./de\": 298,\n\t\"./de-at\": 299,\n\t\"./de-at.js\": 299,\n\t\"./de-ch\": 300,\n\t\"./de-ch.js\": 300,\n\t\"./de.js\": 298,\n\t\"./dv\": 301,\n\t\"./dv.js\": 301,\n\t\"./el\": 302,\n\t\"./el.js\": 302,\n\t\"./en-au\": 303,\n\t\"./en-au.js\": 303,\n\t\"./en-ca\": 304,\n\t\"./en-ca.js\": 304,\n\t\"./en-gb\": 305,\n\t\"./en-gb.js\": 305,\n\t\"./en-ie\": 306,\n\t\"./en-ie.js\": 306,\n\t\"./en-il\": 307,\n\t\"./en-il.js\": 307,\n\t\"./en-in\": 308,\n\t\"./en-in.js\": 308,\n\t\"./en-nz\": 309,\n\t\"./en-nz.js\": 309,\n\t\"./en-sg\": 310,\n\t\"./en-sg.js\": 310,\n\t\"./eo\": 311,\n\t\"./eo.js\": 311,\n\t\"./es\": 312,\n\t\"./es-do\": 313,\n\t\"./es-do.js\": 313,\n\t\"./es-mx\": 314,\n\t\"./es-mx.js\": 314,\n\t\"./es-us\": 315,\n\t\"./es-us.js\": 315,\n\t\"./es.js\": 312,\n\t\"./et\": 316,\n\t\"./et.js\": 316,\n\t\"./eu\": 317,\n\t\"./eu.js\": 317,\n\t\"./fa\": 318,\n\t\"./fa.js\": 318,\n\t\"./fi\": 319,\n\t\"./fi.js\": 319,\n\t\"./fil\": 320,\n\t\"./fil.js\": 320,\n\t\"./fo\": 321,\n\t\"./fo.js\": 321,\n\t\"./fr\": 322,\n\t\"./fr-ca\": 323,\n\t\"./fr-ca.js\": 323,\n\t\"./fr-ch\": 324,\n\t\"./fr-ch.js\": 324,\n\t\"./fr.js\": 322,\n\t\"./fy\": 325,\n\t\"./fy.js\": 325,\n\t\"./ga\": 326,\n\t\"./ga.js\": 326,\n\t\"./gd\": 327,\n\t\"./gd.js\": 327,\n\t\"./gl\": 328,\n\t\"./gl.js\": 328,\n\t\"./gom-deva\": 329,\n\t\"./gom-deva.js\": 329,\n\t\"./gom-latn\": 330,\n\t\"./gom-latn.js\": 330,\n\t\"./gu\": 331,\n\t\"./gu.js\": 331,\n\t\"./he\": 332,\n\t\"./he.js\": 332,\n\t\"./hi\": 333,\n\t\"./hi.js\": 333,\n\t\"./hr\": 334,\n\t\"./hr.js\": 334,\n\t\"./hu\": 335,\n\t\"./hu.js\": 335,\n\t\"./hy-am\": 336,\n\t\"./hy-am.js\": 336,\n\t\"./id\": 337,\n\t\"./id.js\": 337,\n\t\"./is\": 338,\n\t\"./is.js\": 338,\n\t\"./it\": 339,\n\t\"./it-ch\": 340,\n\t\"./it-ch.js\": 340,\n\t\"./it.js\": 339,\n\t\"./ja\": 341,\n\t\"./ja.js\": 341,\n\t\"./jv\": 342,\n\t\"./jv.js\": 342,\n\t\"./ka\": 343,\n\t\"./ka.js\": 343,\n\t\"./kk\": 344,\n\t\"./kk.js\": 344,\n\t\"./km\": 345,\n\t\"./km.js\": 345,\n\t\"./kn\": 346,\n\t\"./kn.js\": 346,\n\t\"./ko\": 347,\n\t\"./ko.js\": 347,\n\t\"./ku\": 348,\n\t\"./ku.js\": 348,\n\t\"./ky\": 349,\n\t\"./ky.js\": 349,\n\t\"./lb\": 350,\n\t\"./lb.js\": 350,\n\t\"./lo\": 351,\n\t\"./lo.js\": 351,\n\t\"./lt\": 352,\n\t\"./lt.js\": 352,\n\t\"./lv\": 353,\n\t\"./lv.js\": 353,\n\t\"./me\": 354,\n\t\"./me.js\": 354,\n\t\"./mi\": 355,\n\t\"./mi.js\": 355,\n\t\"./mk\": 356,\n\t\"./mk.js\": 356,\n\t\"./ml\": 357,\n\t\"./ml.js\": 357,\n\t\"./mn\": 358,\n\t\"./mn.js\": 358,\n\t\"./mr\": 359,\n\t\"./mr.js\": 359,\n\t\"./ms\": 360,\n\t\"./ms-my\": 361,\n\t\"./ms-my.js\": 361,\n\t\"./ms.js\": 360,\n\t\"./mt\": 362,\n\t\"./mt.js\": 362,\n\t\"./my\": 363,\n\t\"./my.js\": 363,\n\t\"./nb\": 364,\n\t\"./nb.js\": 364,\n\t\"./ne\": 365,\n\t\"./ne.js\": 365,\n\t\"./nl\": 366,\n\t\"./nl-be\": 367,\n\t\"./nl-be.js\": 367,\n\t\"./nl.js\": 366,\n\t\"./nn\": 368,\n\t\"./nn.js\": 368,\n\t\"./oc-lnc\": 369,\n\t\"./oc-lnc.js\": 369,\n\t\"./pa-in\": 370,\n\t\"./pa-in.js\": 370,\n\t\"./pl\": 371,\n\t\"./pl.js\": 371,\n\t\"./pt\": 372,\n\t\"./pt-br\": 373,\n\t\"./pt-br.js\": 373,\n\t\"./pt.js\": 372,\n\t\"./ro\": 374,\n\t\"./ro.js\": 374,\n\t\"./ru\": 375,\n\t\"./ru.js\": 375,\n\t\"./sd\": 376,\n\t\"./sd.js\": 376,\n\t\"./se\": 377,\n\t\"./se.js\": 377,\n\t\"./si\": 378,\n\t\"./si.js\": 378,\n\t\"./sk\": 379,\n\t\"./sk.js\": 379,\n\t\"./sl\": 380,\n\t\"./sl.js\": 380,\n\t\"./sq\": 381,\n\t\"./sq.js\": 381,\n\t\"./sr\": 382,\n\t\"./sr-cyrl\": 383,\n\t\"./sr-cyrl.js\": 383,\n\t\"./sr.js\": 382,\n\t\"./ss\": 384,\n\t\"./ss.js\": 384,\n\t\"./sv\": 385,\n\t\"./sv.js\": 385,\n\t\"./sw\": 386,\n\t\"./sw.js\": 386,\n\t\"./ta\": 387,\n\t\"./ta.js\": 387,\n\t\"./te\": 388,\n\t\"./te.js\": 388,\n\t\"./tet\": 389,\n\t\"./tet.js\": 389,\n\t\"./tg\": 390,\n\t\"./tg.js\": 390,\n\t\"./th\": 391,\n\t\"./th.js\": 391,\n\t\"./tk\": 392,\n\t\"./tk.js\": 392,\n\t\"./tl-ph\": 393,\n\t\"./tl-ph.js\": 393,\n\t\"./tlh\": 394,\n\t\"./tlh.js\": 394,\n\t\"./tr\": 395,\n\t\"./tr.js\": 395,\n\t\"./tzl\": 396,\n\t\"./tzl.js\": 396,\n\t\"./tzm\": 397,\n\t\"./tzm-latn\": 398,\n\t\"./tzm-latn.js\": 398,\n\t\"./tzm.js\": 397,\n\t\"./ug-cn\": 399,\n\t\"./ug-cn.js\": 399,\n\t\"./uk\": 400,\n\t\"./uk.js\": 400,\n\t\"./ur\": 401,\n\t\"./ur.js\": 401,\n\t\"./uz\": 402,\n\t\"./uz-latn\": 403,\n\t\"./uz-latn.js\": 403,\n\t\"./uz.js\": 402,\n\t\"./vi\": 404,\n\t\"./vi.js\": 404,\n\t\"./x-pseudo\": 405,\n\t\"./x-pseudo.js\": 405,\n\t\"./yo\": 406,\n\t\"./yo.js\": 406,\n\t\"./zh-cn\": 407,\n\t\"./zh-cn.js\": 407,\n\t\"./zh-hk\": 408,\n\t\"./zh-hk.js\": 408,\n\t\"./zh-mo\": 409,\n\t\"./zh-mo.js\": 409,\n\t\"./zh-tw\": 410,\n\t\"./zh-tw.js\": 410\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 647;","import { State } from '../state';\nimport { DefaultApi, Configuration } from '../../userApi';\n\nconst defaultBasePath = () => {\n switch (true) {\n case window.location.hostname.search('nginx') >= 0:\n return 'http://api:8080/v1';\n case window.location.hostname.search('localhost') >= 0:\n case window.location.hostname.search('127.0.0.1') >= 0:\n return 'http://localhost:8080/v1';\n //return 'https://www.coolcampuschallenge.org/v1'\n default:\n return `${window.location.protocol}//${window.location.host}/v1`;\n }\n};\n\nexport const userApiBasePath = (state: State) =>\n state.initialQuery.userApiBase || defaultBasePath();\n\nexport const userApi = (state: State) => {\n const configuration = new Configuration({\n apiKey: state.token,\n basePath: userApiBasePath(state)\n });\n return new DefaultApi(configuration);\n};\n","/// \n// tslint:disable\n/**\n * Cool Climate Competition API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n\nimport * as url from \"url\";\nimport * as portableFetch from \"portable-fetch\";\nimport { Configuration } from \"./configuration\";\n\nconst BASE_PATH = \"https://localhost/v1\".replace(/\\/+$/, \"\");\n\n/**\n *\n * @export\n */\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\n/**\n *\n * @export\n * @interface FetchAPI\n */\nexport interface FetchAPI {\n (url: string, init?: any): Promise;\n}\n\n/**\n *\n * @export\n * @interface FetchArgs\n */\nexport interface FetchArgs {\n url: string;\n options: any;\n}\n\n/**\n *\n * @export\n * @class BaseAPI\n */\nexport class BaseAPI {\n protected configuration: Configuration;\n\n constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected fetch: FetchAPI = portableFetch) {\n if (configuration) {\n this.configuration = configuration;\n this.basePath = configuration.basePath || this.basePath;\n }\n }\n};\n\n/**\n *\n * @export\n * @class RequiredError\n * @extends {Error}\n */\nexport class RequiredError extends Error {\n name: \"RequiredError\"\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\n/**\n * \n * @export\n * @interface BlogEntries\n */\nexport interface BlogEntries extends Array {\n}\n\n/**\n * \n * @export\n * @interface BlogEntry\n */\nexport interface BlogEntry {\n /**\n * \n * @type {number}\n * @memberof BlogEntry\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof BlogEntry\n */\n title: string;\n /**\n * \n * @type {number}\n * @memberof BlogEntry\n */\n entityID?: number;\n /**\n * \n * @type {number}\n * @memberof BlogEntry\n */\n activeVersionID?: number;\n /**\n * \n * @type {string}\n * @memberof BlogEntry\n */\n photo?: string;\n /**\n * \n * @type {number}\n * @memberof BlogEntry\n */\n likes?: number;\n /**\n * All entries returned through API should be active (ie latest revision).\n * @type {boolean}\n * @memberof BlogEntry\n */\n active?: boolean;\n /**\n * \n * @type {number}\n * @memberof BlogEntry\n */\n revision?: number;\n /**\n * \n * @type {string}\n * @memberof BlogEntry\n */\n contentMD: string;\n /**\n * \n * @type {string}\n * @memberof BlogEntry\n */\n contentHTML: string;\n /**\n * \n * @type {string}\n * @memberof BlogEntry\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof BlogEntry\n */\n updatedAt?: string;\n /**\n * \n * @type {number}\n * @memberof BlogEntry\n */\n createdBy?: number;\n /**\n * \n * @type {NullInt}\n * @memberof BlogEntry\n */\n updatedBy?: NullInt;\n}\n\n/**\n * \n * @export\n * @interface BlogEntryCommentResults\n */\nexport interface BlogEntryCommentResults {\n /**\n * \n * @type {Comments}\n * @memberof BlogEntryCommentResults\n */\n blogEntryComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof BlogEntryCommentResults\n */\n blogEntryCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof BlogEntryCommentResults\n */\n blogEntryCommentFlags: Flags;\n /**\n * \n * @type {UsersByID}\n * @memberof BlogEntryCommentResults\n */\n users: UsersByID;\n /**\n * \n * @type {CommentPagination}\n * @memberof BlogEntryCommentResults\n */\n blogEntryCommentPagination: CommentPagination;\n}\n\n/**\n * Keys are BlogEntryIDs. Indicates whether authenticated user has liked the blog entry.\n * @export\n * @interface BlogEntryLikes\n */\nexport interface BlogEntryLikes {\n [key: string]: boolean;\n\n}\n\n/**\n * \n * @export\n * @interface BlogEntryResults\n */\nexport interface BlogEntryResults {\n /**\n * \n * @type {BlogEntries}\n * @memberof BlogEntryResults\n */\n blogEntries: BlogEntries;\n /**\n * \n * @type {Likes}\n * @memberof BlogEntryResults\n */\n blogEntryLikes: Likes;\n /**\n * \n * @type {Pagination}\n * @memberof BlogEntryResults\n */\n blogEntryPagination: Pagination;\n /**\n * \n * @type {Comments}\n * @memberof BlogEntryResults\n */\n blogEntryComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof BlogEntryResults\n */\n blogEntryCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof BlogEntryResults\n */\n blogEntryCommentFlags: Flags;\n /**\n * \n * @type {UsersByID}\n * @memberof BlogEntryResults\n */\n users: UsersByID;\n /**\n * \n * @type {CommentPagination}\n * @memberof BlogEntryResults\n */\n blogEntryCommentPagination: CommentPagination;\n}\n\n/**\n * \n * @export\n * @interface Body\n */\nexport interface Body {\n /**\n * \n * @type {Comment}\n * @memberof Body\n */\n comment: Comment;\n}\n\n/**\n * Only `contentMD` will be updated.\n * @export\n * @interface Body1\n */\nexport interface Body1 {\n /**\n * \n * @type {Comment}\n * @memberof Body1\n */\n comment: Comment;\n}\n\n/**\n * \n * @export\n * @interface Body10\n */\nexport interface Body10 {\n /**\n * \n * @type {BlogEntry}\n * @memberof Body10\n */\n blogEntry: BlogEntry;\n}\n\n/**\n * \n * @export\n * @interface Body11\n */\nexport interface Body11 {\n /**\n * \n * @type {number}\n * @memberof Body11\n */\n newOwnerID: number;\n}\n\n/**\n * \n * @export\n * @interface Body12\n */\nexport interface Body12 {\n /**\n * \n * @type {CompetitionEntityPledge}\n * @memberof Body12\n */\n competitionEntityPledge: CompetitionEntityPledge;\n}\n\n/**\n * \n * @export\n * @interface Body13\n */\nexport interface Body13 {\n /**\n * \n * @type {CompetitionEntityPledge}\n * @memberof Body13\n */\n competitionEntityPledge: CompetitionEntityPledge;\n}\n\n/**\n * \n * @export\n * @interface Body14\n */\nexport interface Body14 {\n /**\n * \n * @type {string}\n * @memberof Body14\n */\n level: Body14.LevelEnum;\n}\n\n/**\n * @export\n * @namespace Body14\n */\nexport namespace Body14 {\n /**\n * @export\n * @enum {string}\n */\n export enum LevelEnum {\n Member = 'member',\n Admin = 'admin',\n Superadmin = 'superadmin'\n }\n}\n\n/**\n * \n * @export\n * @interface Body15\n */\nexport interface Body15 {\n /**\n * \n * @type {string}\n * @memberof Body15\n */\n status: Body15.StatusEnum;\n}\n\n/**\n * @export\n * @namespace Body15\n */\nexport namespace Body15 {\n /**\n * @export\n * @enum {string}\n */\n export enum StatusEnum {\n Accepted = 'accepted'\n }\n}\n\n/**\n * \n * @export\n * @interface Body16\n */\nexport interface Body16 {\n /**\n * \n * @type {string}\n * @memberof Body16\n */\n email: string;\n}\n\n/**\n * \n * @export\n * @interface Body17\n */\nexport interface Body17 {\n /**\n * \n * @type {Password}\n * @memberof Body17\n */\n password: Password;\n /**\n * \n * @type {string}\n * @memberof Body17\n */\n token: string;\n}\n\n/**\n * \n * @export\n * @interface Body18\n */\nexport interface Body18 {\n /**\n * \n * @type {number}\n * @memberof Body18\n */\n footprint?: number;\n}\n\n/**\n * \n * @export\n * @interface Body19\n */\nexport interface Body19 {\n /**\n * \n * @type {boolean}\n * @memberof Body19\n */\n primary: boolean;\n}\n\n/**\n * \n * @export\n * @interface Body2\n */\nexport interface Body2 {\n /**\n * \n * @type {Entity}\n * @memberof Body2\n */\n entity: Entity;\n}\n\n/**\n * \n * @export\n * @interface Body3\n */\nexport interface Body3 {\n /**\n * \n * @type {Entity}\n * @memberof Body3\n */\n entity: Entity;\n}\n\n/**\n * \n * @export\n * @interface Body4\n */\nexport interface Body4 {\n /**\n * \n * @type {EntityMembership}\n * @memberof Body4\n */\n entityMembership: EntityMembership;\n}\n\n/**\n * \n * @export\n * @interface Body5\n */\nexport interface Body5 {\n /**\n * \n * @type {Story}\n * @memberof Body5\n */\n story: Story;\n /**\n * \n * @type {TaggedUserIDs}\n * @memberof Body5\n */\n taggedUserIDs?: TaggedUserIDs;\n}\n\n/**\n * \n * @export\n * @interface Body6\n */\nexport interface Body6 {\n /**\n * \n * @type {FlaggableTypeflaggableIDflagsFlag}\n * @memberof Body6\n */\n flag: FlaggableTypeflaggableIDflagsFlag;\n}\n\n/**\n * \n * @export\n * @interface Body7\n */\nexport interface Body7 {\n /**\n * \n * @type {string}\n * @memberof Body7\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof Body7\n */\n email: string;\n}\n\n/**\n * \n * @export\n * @interface Body8\n */\nexport interface Body8 {\n /**\n * \n * @type {Story}\n * @memberof Body8\n */\n story: Story;\n /**\n * \n * @type {TaggedUserIDs}\n * @memberof Body8\n */\n taggedUserIDs?: TaggedUserIDs;\n}\n\n/**\n * \n * @export\n * @interface Body9\n */\nexport interface Body9 {\n /**\n * \n * @type {BlogEntry}\n * @memberof Body9\n */\n blogEntry: BlogEntry;\n}\n\n/**\n * \n * @export\n * @interface CalculatorAnswers\n */\nexport interface CalculatorAnswers {\n /**\n * \n * @type {CalculatorAnswersUi}\n * @memberof CalculatorAnswers\n */\n ui: CalculatorAnswersUi;\n /**\n * \n * @type {any}\n * @memberof CalculatorAnswers\n */\n averageFootprint: any;\n /**\n * \n * @type {CalculatorAnswersUserFootprint}\n * @memberof CalculatorAnswers\n */\n userFootprint: CalculatorAnswersUserFootprint;\n /**\n * \n * @type {UserPledges}\n * @memberof CalculatorAnswers\n */\n pledges: UserPledges;\n}\n\n/**\n * \n * @export\n * @interface CalculatorAnswersUi\n */\nexport interface CalculatorAnswersUi {\n /**\n * \n * @type {string}\n * @memberof CalculatorAnswersUi\n */\n averageComparisonLocation?: string;\n /**\n * \n * @type {string}\n * @memberof CalculatorAnswersUi\n */\n unitSystem?: string;\n /**\n * \n * @type {GoogleMapsGeocode}\n * @memberof CalculatorAnswersUi\n */\n selectedLocation?: GoogleMapsGeocode;\n}\n\n/**\n * \n * @export\n * @interface CalculatorAnswersUserFootprint\n */\nexport interface CalculatorAnswersUserFootprint {\n /**\n * \n * @type {CalculatorAnswersUserFootprintInputs}\n * @memberof CalculatorAnswersUserFootprint\n */\n inputs?: CalculatorAnswersUserFootprintInputs;\n /**\n * \n * @type {CalculatorResultsFootprintTotals}\n * @memberof CalculatorAnswersUserFootprint\n */\n computeFootprint?: CalculatorResultsFootprintTotals;\n}\n\n/**\n * \n * @export\n * @interface CalculatorAnswersUserFootprintInputs\n */\nexport interface CalculatorAnswersUserFootprintInputs {\n /**\n * \n * @type {string}\n * @memberof CalculatorAnswersUserFootprintInputs\n */\n inputLocationMode?: string;\n /**\n * \n * @type {string}\n * @memberof CalculatorAnswersUserFootprintInputs\n */\n inputLocation?: string;\n /**\n * \n * @type {Country}\n * @memberof CalculatorAnswersUserFootprintInputs\n */\n inputLocationCountry?: Country;\n /**\n * \n * @type {string}\n * @memberof CalculatorAnswersUserFootprintInputs\n */\n inputSize?: string;\n /**\n * \n * @type {string}\n * @memberof CalculatorAnswersUserFootprintInputs\n */\n inputIncome?: string;\n}\n\n/**\n * \n * @export\n * @interface CalculatorResultLeader\n */\nexport interface CalculatorResultLeader extends UserRead {\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n resultTransportTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n resultHousingTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n resultFoodTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n resultGoodsTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n resultServicesTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n resultGrandTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n pledgeCount?: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultLeader\n */\n completedPledgeCount?: number;\n}\n\n/**\n * \n * @export\n * @interface CalculatorResultsFootprintTotals\n */\nexport interface CalculatorResultsFootprintTotals {\n /**\n * \n * @type {number}\n * @memberof CalculatorResultsFootprintTotals\n */\n resultTransportTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultsFootprintTotals\n */\n resultHousingTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultsFootprintTotals\n */\n resultFoodTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultsFootprintTotals\n */\n resultGoodsTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultsFootprintTotals\n */\n resultServicesTotal: number;\n /**\n * \n * @type {number}\n * @memberof CalculatorResultsFootprintTotals\n */\n resultGrandTotal: number;\n}\n\n/**\n * \n * @export\n * @interface Comment\n */\nexport interface Comment {\n /**\n * \n * @type {number}\n * @memberof Comment\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof Comment\n */\n commentableType?: Comment.CommentableTypeEnum;\n /**\n * \n * @type {number}\n * @memberof Comment\n */\n commentableID?: number;\n /**\n * \n * @type {string}\n * @memberof Comment\n */\n contentMD: string;\n /**\n * \n * @type {number}\n * @memberof Comment\n */\n flags?: number;\n /**\n * \n * @type {number}\n * @memberof Comment\n */\n likes?: number;\n /**\n * ID of user that created the comment.\n * @type {number}\n * @memberof Comment\n */\n createdBy?: number;\n /**\n * \n * @type {string}\n * @memberof Comment\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof Comment\n */\n updatedAt?: string;\n}\n\n/**\n * @export\n * @namespace Comment\n */\nexport namespace Comment {\n /**\n * @export\n * @enum {string}\n */\n export enum CommentableTypeEnum {\n BlogEntry = 'blog_entry',\n Story = 'story'\n }\n}\n\n/**\n * Keys are commentableIDs.\n * @export\n * @interface CommentPagination\n */\nexport interface CommentPagination {\n [key: string]: Pagination;\n\n}\n\n/**\n * Keys are commentableIDs - uniqueness only guaranteed at commentableType scope (ie blog_entry or story).\n * @export\n * @interface Comments\n */\nexport interface Comments {\n [key: string]: Array;\n\n}\n\n/**\n * \n * @export\n * @interface Competition\n */\nexport interface Competition {\n /**\n * \n * @type {number}\n * @memberof Competition\n */\n id: number;\n /**\n * \n * @type {string}\n * @memberof Competition\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof Competition\n */\n description: string;\n /**\n * \n * @type {boolean}\n * @memberof Competition\n */\n active: boolean;\n /**\n * \n * @type {Array}\n * @memberof Competition\n */\n permittedDomains: Array;\n /**\n * \n * @type {string}\n * @memberof Competition\n */\n startsAt: string;\n /**\n * \n * @type {string}\n * @memberof Competition\n */\n endsAt: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionDashboard\n */\nexport interface CompetitionDashboard {\n /**\n * \n * @type {Competition}\n * @memberof CompetitionDashboard\n */\n competition: Competition;\n /**\n * \n * @type {Entities}\n * @memberof CompetitionDashboard\n */\n entities: Entities;\n /**\n * \n * @type {CompetitionEntities}\n * @memberof CompetitionDashboard\n */\n competitionEntities: CompetitionEntities;\n /**\n * \n * @type {CompetitionPledges}\n * @memberof CompetitionDashboard\n */\n competitionPledges: CompetitionPledges;\n /**\n * \n * @type {CompetitionScoreLevels}\n * @memberof CompetitionDashboard\n */\n competitionScoreLevels: CompetitionScoreLevels;\n /**\n * \n * @type {CompetitionPledgeCategories}\n * @memberof CompetitionDashboard\n */\n competitionPledgeCategories: CompetitionPledgeCategories;\n /**\n * \n * @type {TopUserScores}\n * @memberof CompetitionDashboard\n */\n competitionTopUserScores: TopUserScores;\n /**\n * \n * @type {CompetitionEntityScores}\n * @memberof CompetitionDashboard\n */\n competitionEntityScores: CompetitionEntityScores;\n /**\n * \n * @type {CompetitionScore}\n * @memberof CompetitionDashboard\n */\n competitionScore: CompetitionScore;\n /**\n * \n * @type {Stories}\n * @memberof CompetitionDashboard\n */\n stories: Stories;\n /**\n * \n * @type {Comments}\n * @memberof CompetitionDashboard\n */\n storyComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionDashboard\n */\n storyLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionDashboard\n */\n storyFlags: Flags;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionDashboard\n */\n storyCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionDashboard\n */\n storyCommentFlags: Flags;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof CompetitionDashboard\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {Pagination}\n * @memberof CompetitionDashboard\n */\n storyPagination: Pagination;\n}\n\n/**\n * Keys are EntityIDs.\n * @export\n * @interface CompetitionEntities\n */\nexport interface CompetitionEntities {\n [key: string]: CompetitionEntity;\n\n}\n\n/**\n * \n * @export\n * @interface CompetitionEntity\n */\nexport interface CompetitionEntity {\n /**\n * \n * @type {number}\n * @memberof CompetitionEntity\n */\n id: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntity\n */\n entityID: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntity\n */\n competitionID: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntity\n */\n pledgeCount: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntity\n */\n memberCount: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionEntity\n */\n createdAt: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionEntity\n */\n updatedAt?: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionEntityPage\n */\nexport interface CompetitionEntityPage {\n /**\n * \n * @type {EntityMemberships}\n * @memberof CompetitionEntityPage\n */\n entityMemberships: EntityMemberships;\n /**\n * Keys are EntityIDs.\n * @type {{ [key: string]: Pagination; }}\n * @memberof CompetitionEntityPage\n */\n entityMembershipPagination?: { [key: string]: Pagination; };\n /**\n * \n * @type {{ [key: string]: TopUserScores; }}\n * @memberof CompetitionEntityPage\n */\n entityTopUserScores?: { [key: string]: TopUserScores; };\n /**\n * \n * @type {EntityTopUserScoresPagination}\n * @memberof CompetitionEntityPage\n */\n entityTopUserScoresPagination?: EntityTopUserScoresPagination;\n /**\n * \n * @type {EntityTopSubentityScores}\n * @memberof CompetitionEntityPage\n */\n entityTopSubentityScores?: EntityTopSubentityScores;\n /**\n * \n * @type {Stories}\n * @memberof CompetitionEntityPage\n */\n stories: Stories;\n /**\n * \n * @type {Comments}\n * @memberof CompetitionEntityPage\n */\n storyComments?: Comments;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionEntityPage\n */\n storyLikes?: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionEntityPage\n */\n storyFlags?: Flags;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionEntityPage\n */\n storyCommentLikes?: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionEntityPage\n */\n storyCommentFlags?: Flags;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof CompetitionEntityPage\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {Pagination}\n * @memberof CompetitionEntityPage\n */\n storyPagination: Pagination;\n}\n\n/**\n * \n * @export\n * @interface CompetitionEntityPledge\n */\nexport interface CompetitionEntityPledge {\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityPledge\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityPledge\n */\n entityID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityPledge\n */\n competitionPledgeID?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionEntityPledge\n */\n contentMD?: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionEntityPledge\n */\n contentHTML?: string;\n}\n\n/**\n * Keys are CometitionPledgeIDs\n * @export\n * @interface CompetitionEntityPledges\n */\nexport interface CompetitionEntityPledges {\n [key: string]: { [key: string]: CompetitionEntityPledge; };\n\n}\n\n/**\n * \n * @export\n * @interface CompetitionEntityScore\n */\nexport interface CompetitionEntityScore {\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n competitionID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n entityID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n points?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n savingsCO2Lbs?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n savingsWaterOz?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n savingsGasGallons?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionEntityScore\n */\n savingsElectricityKwh?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionEntityScore\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionEntityScore\n */\n updatedAt?: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionEntityScores\n */\nexport interface CompetitionEntityScores {\n /**\n * \n * @type {Array}\n * @memberof CompetitionEntityScores\n */\n team?: Array;\n /**\n * \n * @type {Array}\n * @memberof CompetitionEntityScores\n */\n university?: Array;\n /**\n * \n * @type {Array}\n * @memberof CompetitionEntityScores\n */\n healthFacility?: Array;\n}\n\n/**\n * \n * @export\n * @interface CompetitionJoinParams\n */\nexport interface CompetitionJoinParams {\n /**\n * \n * @type {string}\n * @memberof CompetitionJoinParams\n */\n competitionName: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionName\n */\nexport interface CompetitionName {\n}\n\n/**\n * \n * @export\n * @interface CompetitionPledge\n */\nexport interface CompetitionPledge {\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n id: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n uuid: string;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n competitionID: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n competitionPledgeCategoryID?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n shortTitle: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n description: string;\n /**\n * \n * @type {LearnMoreLinks}\n * @memberof CompetitionPledge\n */\n learnMoreLinks: LearnMoreLinks;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n assumptions: string;\n /**\n * \n * @type {Array}\n * @memberof CompetitionPledge\n */\n userTypes: Array;\n /**\n * References CompetitionScoreLevel#uuid.\n * @type {string}\n * @memberof CompetitionPledge\n */\n scoreLevelUUID: string;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n points: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n savingsCO2Lbs: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n savingsWaterOz?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n savingsGasGallons?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n savingsElectricityKwh?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n storyPrompt: string;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n repeats: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n calculatorAPIKey?: string;\n /**\n * \n * @type {boolean}\n * @memberof CompetitionPledge\n */\n qualifyLocation: boolean;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n photo: string;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledge\n */\n releaseWeek: number;\n /**\n * \n * @type {boolean}\n * @memberof CompetitionPledge\n */\n active: boolean;\n /**\n * \n * @type {boolean}\n * @memberof CompetitionPledge\n */\n canTagUsers: boolean;\n /**\n * \n * @type {boolean}\n * @memberof CompetitionPledge\n */\n canUseMarkdown: boolean;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledge\n */\n uiLocation: CompetitionPledge.UiLocationEnum;\n}\n\n/**\n * @export\n * @namespace CompetitionPledge\n */\nexport namespace CompetitionPledge {\n /**\n * @export\n * @enum {string}\n */\n export enum UiLocationEnum {\n Primary = 'primary',\n Secondary = 'secondary',\n Empty = ''\n }\n}\n\n/**\n * Keys are CompetitionPledgeCategoryIDs.\n * @export\n * @interface CompetitionPledgeCategories\n */\nexport interface CompetitionPledgeCategories {\n [key: string]: CompetitionPledgeCategory;\n\n}\n\n/**\n * \n * @export\n * @interface CompetitionPledgeCategory\n */\nexport interface CompetitionPledgeCategory {\n /**\n * \n * @type {number}\n * @memberof CompetitionPledgeCategory\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionPledgeCategory\n */\n competitionID?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionPledgeCategory\n */\n name?: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionPledgePage\n */\nexport interface CompetitionPledgePage {\n /**\n * \n * @type {LatestToPledge}\n * @memberof CompetitionPledgePage\n */\n latestToPledge: LatestToPledge;\n /**\n * \n * @type {CompetitionUserScores}\n * @memberof CompetitionPledgePage\n */\n competitionUserScores: CompetitionUserScores;\n /**\n * \n * @type {CompetitionEntityPledges}\n * @memberof CompetitionPledgePage\n */\n competitionEntityPledges: CompetitionEntityPledges;\n /**\n * \n * @type {UsersByID}\n * @memberof CompetitionPledgePage\n */\n users: UsersByID;\n /**\n * \n * @type {Stories}\n * @memberof CompetitionPledgePage\n */\n stories: Stories;\n /**\n * \n * @type {Comments}\n * @memberof CompetitionPledgePage\n */\n storyComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionPledgePage\n */\n storyLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionPledgePage\n */\n storyFlags: Flags;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionPledgePage\n */\n storyCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionPledgePage\n */\n storyCommentFlags: Flags;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof CompetitionPledgePage\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {Pagination}\n * @memberof CompetitionPledgePage\n */\n storyPagination: Pagination;\n}\n\n/**\n * \n * @export\n * @enum {string}\n */\nexport enum CompetitionPledgeUserType {\n Labs = 'labs',\n Staff = 'staff'\n}\n\n/**\n * Keys are CompetitionPledgeIDs.\n * @export\n * @interface CompetitionPledges\n */\nexport interface CompetitionPledges {\n [key: string]: CompetitionPledge;\n\n}\n\n/**\n * \n * @export\n * @interface CompetitionScore\n */\nexport interface CompetitionScore {\n /**\n * \n * @type {number}\n * @memberof CompetitionScore\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionScore\n */\n competitionID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionScore\n */\n points?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionScore\n */\n savingsCO2Lbs?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionScore\n */\n participants?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionScore\n */\n pledgesCompleted?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionScore\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionScore\n */\n updatedAt?: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionScoreLevel\n */\nexport interface CompetitionScoreLevel {\n /**\n * \n * @type {number}\n * @memberof CompetitionScoreLevel\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionScoreLevel\n */\n competitionID?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionScoreLevel\n */\n name?: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionScoreLevel\n */\n uuid?: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionScoreLevel\n */\n description?: string;\n /**\n * \n * @type {number}\n * @memberof CompetitionScoreLevel\n */\n threshold?: number;\n}\n\n/**\n * \n * @export\n * @interface CompetitionScoreLevels\n */\nexport interface CompetitionScoreLevels extends Array {\n}\n\n/**\n * \n * @export\n * @interface CompetitionUser\n */\nexport interface CompetitionUser {\n /**\n * \n * @type {number}\n * @memberof CompetitionUser\n */\n competitionID: number;\n /**\n * \n * @type {MembershipLevel}\n * @memberof CompetitionUser\n */\n level: MembershipLevel;\n /**\n * \n * @type {boolean}\n * @memberof CompetitionUser\n */\n verified: boolean;\n /**\n * \n * @type {number}\n * @memberof CompetitionUser\n */\n footprint?: number;\n /**\n * \n * @type {boolean}\n * @memberof CompetitionUser\n */\n active: boolean;\n /**\n * \n * @type {string}\n * @memberof CompetitionUser\n */\n domain: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionUser\n */\n qualtricsID?: string;\n /**\n * \n * @type {Array}\n * @memberof CompetitionUser\n */\n permittedDomains: Array;\n}\n\n/**\n * \n * @export\n * @interface CompetitionUserDashboard\n */\nexport interface CompetitionUserDashboard {\n /**\n * \n * @type {Competition}\n * @memberof CompetitionUserDashboard\n */\n competition: Competition;\n /**\n * \n * @type {Entities}\n * @memberof CompetitionUserDashboard\n */\n entities: Entities;\n /**\n * \n * @type {CompetitionEntities}\n * @memberof CompetitionUserDashboard\n */\n competitionEntities: CompetitionEntities;\n /**\n * \n * @type {CompetitionPledges}\n * @memberof CompetitionUserDashboard\n */\n competitionPledges: CompetitionPledges;\n /**\n * \n * @type {CompetitionScoreLevels}\n * @memberof CompetitionUserDashboard\n */\n competitionScoreLevels: CompetitionScoreLevels;\n /**\n * \n * @type {CompetitionPledgeCategories}\n * @memberof CompetitionUserDashboard\n */\n competitionPledgeCategories: CompetitionPledgeCategories;\n /**\n * \n * @type {TopUserScores}\n * @memberof CompetitionUserDashboard\n */\n topUserScores: TopUserScores;\n /**\n * \n * @type {CompetitionEntityScores}\n * @memberof CompetitionUserDashboard\n */\n competitionEntityScores: CompetitionEntityScores;\n /**\n * \n * @type {CompetitionScore}\n * @memberof CompetitionUserDashboard\n */\n competitionScore: CompetitionScore;\n /**\n * \n * @type {Stories}\n * @memberof CompetitionUserDashboard\n */\n stories: Stories;\n /**\n * \n * @type {Comments}\n * @memberof CompetitionUserDashboard\n */\n storyComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionUserDashboard\n */\n storyLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionUserDashboard\n */\n storyFlags: Flags;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionUserDashboard\n */\n storyCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionUserDashboard\n */\n storyCommentFlags: Flags;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof CompetitionUserDashboard\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {Pagination}\n * @memberof CompetitionUserDashboard\n */\n storyPagination: Pagination;\n /**\n * \n * @type {string}\n * @memberof CompetitionUserDashboard\n */\n token?: string;\n /**\n * \n * @type {UserRead}\n * @memberof CompetitionUserDashboard\n */\n user: UserRead;\n /**\n * \n * @type {EntityMemberships}\n * @memberof CompetitionUserDashboard\n */\n userMemberships: EntityMemberships;\n /**\n * \n * @type {UserEmails}\n * @memberof CompetitionUserDashboard\n */\n userEmails: UserEmails;\n /**\n * \n * @type {CompetitionUser}\n * @memberof CompetitionUserDashboard\n */\n competitionUser: CompetitionUser;\n /**\n * \n * @type {PledgeCompletions}\n * @memberof CompetitionUserDashboard\n */\n userPledgeCompletions: PledgeCompletions;\n /**\n * \n * @type {PledgePoints}\n * @memberof CompetitionUserDashboard\n */\n userPledgePoints?: PledgePoints;\n /**\n * \n * @type {CompetitionUserScores}\n * @memberof CompetitionUserDashboard\n */\n competitionUserScores: CompetitionUserScores;\n /**\n * \n * @type {EntityRanks}\n * @memberof CompetitionUserDashboard\n */\n userEntityRanks: EntityRanks;\n}\n\n/**\n * \n * @export\n * @interface CompetitionUserPoint\n */\nexport interface CompetitionUserPoint {\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n userID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n competitionPledgeID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n points?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n pledgePoints?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n repeatPoints?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n photoPoints?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n savingsCO2Lbs?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n savingsWaterOz?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n savingsGasGallons?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n savingsElectricityKwh?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionUserPoint\n */\n type?: CompetitionUserPoint.TypeEnum;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserPoint\n */\n originalID?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionUserPoint\n */\n createdAt?: string;\n}\n\n/**\n * @export\n * @namespace CompetitionUserPoint\n */\nexport namespace CompetitionUserPoint {\n /**\n * @export\n * @enum {string}\n */\n export enum TypeEnum {\n Pledge = 'pledge',\n Negation = 'negation',\n Empty = ''\n }\n}\n\n/**\n * \n * @export\n * @interface CompetitionUserProfile\n */\nexport interface CompetitionUserProfile {\n /**\n * \n * @type {EntityMemberships}\n * @memberof CompetitionUserProfile\n */\n profileMemberships: EntityMemberships;\n /**\n * \n * @type {PledgeCompletions}\n * @memberof CompetitionUserProfile\n */\n profilePledgeCompletions: PledgeCompletions;\n /**\n * \n * @type {CompetitionUserScores}\n * @memberof CompetitionUserProfile\n */\n competitionUserScores: CompetitionUserScores;\n /**\n * \n * @type {EntityRanks}\n * @memberof CompetitionUserProfile\n */\n profileEntityRanks: EntityRanks;\n /**\n * \n * @type {UsersByID}\n * @memberof CompetitionUserProfile\n */\n users?: UsersByID;\n /**\n * \n * @type {Stories}\n * @memberof CompetitionUserProfile\n */\n stories: Stories;\n /**\n * \n * @type {Comments}\n * @memberof CompetitionUserProfile\n */\n storyComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionUserProfile\n */\n storyLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionUserProfile\n */\n storyFlags: Flags;\n /**\n * \n * @type {Likes}\n * @memberof CompetitionUserProfile\n */\n storyCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof CompetitionUserProfile\n */\n storyCommentFlags: Flags;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof CompetitionUserProfile\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {Pagination}\n * @memberof CompetitionUserProfile\n */\n storyPagination: Pagination;\n}\n\n/**\n * \n * @export\n * @interface CompetitionUserScore\n */\nexport interface CompetitionUserScore {\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n competitionID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n userID?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n points?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n savingsCO2Lbs?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n takenCO2Lbs?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n savingsWaterOz?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n savingsGasGallons?: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScore\n */\n savingsElectricityKwh?: number;\n /**\n * \n * @type {string}\n * @memberof CompetitionUserScore\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof CompetitionUserScore\n */\n updatedAt?: string;\n}\n\n/**\n * \n * @export\n * @interface CompetitionUserScoreQuery\n */\nexport interface CompetitionUserScoreQuery {\n /**\n * \n * @type {Pagination}\n * @memberof CompetitionUserScoreQuery\n */\n pagination: Pagination;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScoreQuery\n */\n entityID: number;\n /**\n * \n * @type {number}\n * @memberof CompetitionUserScoreQuery\n */\n competitionID: number;\n}\n\n/**\n * \n * @export\n * @interface CompetitionUserScoreResults\n */\nexport interface CompetitionUserScoreResults {\n /**\n * \n * @type {UsersByID}\n * @memberof CompetitionUserScoreResults\n */\n users: UsersByID;\n /**\n * \n * @type {CompetitionUserScoreQuery}\n * @memberof CompetitionUserScoreResults\n */\n topUserScoresQuery: CompetitionUserScoreQuery;\n /**\n * \n * @type {Array}\n * @memberof CompetitionUserScoreResults\n */\n topUserScores: Array;\n}\n\n/**\n * Keys are userIDs.\n * @export\n * @interface CompetitionUserScores\n */\nexport interface CompetitionUserScores {\n [key: string]: CompetitionUserScore;\n\n}\n\n/**\n * \n * @export\n * @interface CompetitionUsers\n */\nexport interface CompetitionUsers {\n /**\n * \n * @type {UsersByID}\n * @memberof CompetitionUsers\n */\n users: UsersByID;\n /**\n * \n * @type {Array}\n * @memberof CompetitionUsers\n */\n searchResults: Array;\n}\n\n/**\n * \n * @export\n * @interface Country\n */\nexport interface Country {\n}\n\n/**\n * \n * @export\n * @interface CreateSessionParams\n */\nexport interface CreateSessionParams {\n /**\n * \n * @type {string}\n * @memberof CreateSessionParams\n */\n email: string;\n /**\n * \n * @type {Password}\n * @memberof CreateSessionParams\n */\n password: Password;\n /**\n * \n * @type {string}\n * @memberof CreateSessionParams\n */\n competitionName?: string;\n /**\n * Token provided in signup UI URL of invitation emails.\n * @type {string}\n * @memberof CreateSessionParams\n */\n invitationToken?: string;\n}\n\n/**\n * \n * @export\n * @interface CreateUserOrSessionResponse\n */\nexport interface CreateUserOrSessionResponse {\n /**\n * \n * @type {UserRead}\n * @memberof CreateUserOrSessionResponse\n */\n user: UserRead;\n /**\n * Signed JSON web token.\n * @type {string}\n * @memberof CreateUserOrSessionResponse\n */\n token?: string;\n}\n\n/**\n * \n * @export\n * @interface CreateUserParams\n */\nexport interface CreateUserParams {\n /**\n * \n * @type {UserWrite}\n * @memberof CreateUserParams\n */\n user: UserWrite;\n /**\n * \n * @type {Password}\n * @memberof CreateUserParams\n */\n password: Password;\n /**\n * \n * @type {string}\n * @memberof CreateUserParams\n */\n agreedToTermsAndConditions: string;\n /**\n * \n * @type {string}\n * @memberof CreateUserParams\n */\n competitionName?: string;\n /**\n * \n * @type {string}\n * @memberof CreateUserParams\n */\n invitationToken?: string;\n}\n\n/**\n * \n * @export\n * @interface Entities\n */\nexport interface Entities {\n [key: string]: Entity;\n\n}\n\n/**\n * \n * @export\n * @interface Entity\n */\nexport interface Entity {\n /**\n * \n * @type {number}\n * @memberof Entity\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof Entity\n */\n parentID?: number;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n abbreviation?: string;\n /**\n * \n * @type {number}\n * @memberof Entity\n */\n population?: number;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n type?: Entity.TypeEnum;\n /**\n * \n * @type {boolean}\n * @memberof Entity\n */\n publicJoin: boolean;\n /**\n * \n * @type {boolean}\n * @memberof Entity\n */\n joinByRequest?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof Entity\n */\n joinByInvite?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof Entity\n */\n acceptByEmailDomain?: boolean;\n /**\n * \n * @type {Array}\n * @memberof Entity\n */\n permittedDomains?: Array;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n photo?: string;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n bannerPhoto?: string;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n descriptionMD?: string;\n /**\n * \n * @type {string}\n * @memberof Entity\n */\n descriptionHTML?: string;\n /**\n * \n * @type {SocialLinks}\n * @memberof Entity\n */\n socialLinks?: SocialLinks;\n}\n\n/**\n * @export\n * @namespace Entity\n */\nexport namespace Entity {\n /**\n * @export\n * @enum {string}\n */\n export enum TypeEnum {\n Team = 'team',\n University = 'university',\n HealthFacility = 'healthFacility'\n }\n}\n\n/**\n * \n * @export\n * @interface EntityMembership\n */\nexport interface EntityMembership {\n /**\n * \n * @type {number}\n * @memberof EntityMembership\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof EntityMembership\n */\n userID: number;\n /**\n * \n * @type {number}\n * @memberof EntityMembership\n */\n entityID: number;\n /**\n * \n * @type {MembershipLevel}\n * @memberof EntityMembership\n */\n level: MembershipLevel;\n /**\n * \n * @type {string}\n * @memberof EntityMembership\n */\n status: EntityMembership.StatusEnum;\n /**\n * \n * @type {NullInt}\n * @memberof EntityMembership\n */\n approvedBy?: NullInt;\n /**\n * \n * @type {NullInt}\n * @memberof EntityMembership\n */\n invitedBy?: NullInt;\n /**\n * \n * @type {string}\n * @memberof EntityMembership\n */\n acceptedAt?: string;\n /**\n * \n * @type {string}\n * @memberof EntityMembership\n */\n createdAt?: string;\n}\n\n/**\n * @export\n * @namespace EntityMembership\n */\nexport namespace EntityMembership {\n /**\n * @export\n * @enum {string}\n */\n export enum StatusEnum {\n Invited = 'invited',\n Requested = 'requested',\n Accepted = 'accepted'\n }\n}\n\n/**\n * Keys are entityIDs.\n * @export\n * @interface EntityMemberships\n */\nexport interface EntityMemberships {\n [key: string]: EntityMembership;\n\n}\n\n/**\n * Keys are EntityIDs. Values are the number of times the user has completed the pledge.\n * @export\n * @interface EntityRanks\n */\nexport interface EntityRanks {\n [key: string]: number;\n\n}\n\n/**\n * \n * @export\n * @interface EntityTopSubentityScores\n */\nexport interface EntityTopSubentityScores {\n [key: string]: Array;\n\n}\n\n/**\n * Keys are EntityIDs.\n * @export\n * @interface EntityTopUserScoresPagination\n */\nexport interface EntityTopUserScoresPagination {\n [key: string]: Pagination;\n\n}\n\n/**\n * \n * @export\n * @interface FlaggableTypeflaggableIDflagsFlag\n */\nexport interface FlaggableTypeflaggableIDflagsFlag {\n /**\n * \n * @type {string}\n * @memberof FlaggableTypeflaggableIDflagsFlag\n */\n contentMD?: string;\n}\n\n/**\n * Keys are flaggableIDs. Uniqueness is guaranteed by flaggableType (ie comment, story). Indicates whether current user has flagged the relevant comment or story.\n * @export\n * @interface Flags\n */\nexport interface Flags {\n [key: string]: boolean;\n\n}\n\n/**\n * \n * @export\n * @interface GoogleMapsGeocode\n */\nexport interface GoogleMapsGeocode {\n /**\n * \n * @type {Array}\n * @memberof GoogleMapsGeocode\n */\n addressComponents: Array;\n}\n\n/**\n * \n * @export\n * @interface GoogleMapsGeocodeAddressComponents\n */\nexport interface GoogleMapsGeocodeAddressComponents {\n /**\n * \n * @type {string}\n * @memberof GoogleMapsGeocodeAddressComponents\n */\n shortName: string;\n /**\n * \n * @type {string}\n * @memberof GoogleMapsGeocodeAddressComponents\n */\n longName: string;\n /**\n * \n * @type {Array}\n * @memberof GoogleMapsGeocodeAddressComponents\n */\n types: Array;\n}\n\n/**\n * \n * @export\n * @interface ImageMutation\n */\nexport interface ImageMutation {\n /**\n * \n * @type {string}\n * @memberof ImageMutation\n */\n contentType?: ImageMutation.ContentTypeEnum;\n /**\n * \n * @type {number}\n * @memberof ImageMutation\n */\n rotation?: number;\n /**\n * Will compress image below this size.\n * @type {number}\n * @memberof ImageMutation\n */\n maxMB?: number;\n /**\n * \n * @type {RGBA}\n * @memberof ImageMutation\n */\n bgColor?: RGBA;\n /**\n * \n * @type {Rect}\n * @memberof ImageMutation\n */\n crop?: Rect;\n}\n\n/**\n * @export\n * @namespace ImageMutation\n */\nexport namespace ImageMutation {\n /**\n * @export\n * @enum {string}\n */\n export enum ContentTypeEnum {\n Png = 'image/png',\n Jpeg = 'image/jpeg',\n Gif = 'image/gif'\n }\n}\n\n/**\n * \n * @export\n * @interface ImageResponse\n */\nexport interface ImageResponse {\n /**\n * \n * @type {string}\n * @memberof ImageResponse\n */\n url: string;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse200\n */\nexport interface InlineResponse200 {\n /**\n * \n * @type {CalculatorAnswers}\n * @memberof InlineResponse200\n */\n calculatorAnswers: CalculatorAnswers;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2001\n */\nexport interface InlineResponse2001 {\n /**\n * \n * @type {Comments}\n * @memberof InlineResponse2001\n */\n comments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof InlineResponse2001\n */\n commentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof InlineResponse2001\n */\n commentFlags: Flags;\n /**\n * \n * @type {UsersByID}\n * @memberof InlineResponse2001\n */\n users: UsersByID;\n /**\n * \n * @type {Pagination}\n * @memberof InlineResponse2001\n */\n pagination: Pagination;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse20010\n */\nexport interface InlineResponse20010 {\n /**\n * \n * @type {boolean}\n * @memberof InlineResponse20010\n */\n db?: boolean;\n /**\n * True if server is under maintenance.\n * @type {boolean}\n * @memberof InlineResponse20010\n */\n maintenance?: boolean;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2002\n */\nexport interface InlineResponse2002 {\n /**\n * \n * @type {Entities}\n * @memberof InlineResponse2002\n */\n entities: Entities;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2003\n */\nexport interface InlineResponse2003 {\n /**\n * \n * @type {Story}\n * @memberof InlineResponse2003\n */\n story: Story;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof InlineResponse2003\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {UsersByID}\n * @memberof InlineResponse2003\n */\n users?: UsersByID;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2004\n */\nexport interface InlineResponse2004 {\n /**\n * \n * @type {CompetitionUserScores}\n * @memberof InlineResponse2004\n */\n competitionUserScores?: CompetitionUserScores;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2005\n */\nexport interface InlineResponse2005 {\n /**\n * \n * @type {BlogEntries}\n * @memberof InlineResponse2005\n */\n blogEntries: BlogEntries;\n /**\n * \n * @type {Likes}\n * @memberof InlineResponse2005\n */\n blogEntryLikes?: Likes;\n /**\n * \n * @type {Comments}\n * @memberof InlineResponse2005\n */\n comments?: Comments;\n /**\n * \n * @type {Likes}\n * @memberof InlineResponse2005\n */\n commentLikes?: Likes;\n /**\n * \n * @type {Flags}\n * @memberof InlineResponse2005\n */\n commentFlags?: Flags;\n /**\n * \n * @type {Pagination}\n * @memberof InlineResponse2005\n */\n pagination?: Pagination;\n /**\n * \n * @type {UsersByID}\n * @memberof InlineResponse2005\n */\n users?: UsersByID;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2006\n */\nexport interface InlineResponse2006 {\n /**\n * \n * @type {Array}\n * @memberof InlineResponse2006\n */\n data?: Array;\n /**\n * Total number of pages the query can return.\n * @type {number}\n * @memberof InlineResponse2006\n */\n totalPages: number;\n /**\n * 1-based index of next page to request. If no pages are left, will return -1.\n * @type {number}\n * @memberof InlineResponse2006\n */\n nextPage: number;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2007\n */\nexport interface InlineResponse2007 {\n /**\n * \n * @type {string}\n * @memberof InlineResponse2007\n */\n verificationToken?: string;\n /**\n * \n * @type {string}\n * @memberof InlineResponse2007\n */\n invitationToken?: string;\n /**\n * \n * @type {string}\n * @memberof InlineResponse2007\n */\n passwordResetToken?: string;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2008\n */\nexport interface InlineResponse2008 {\n /**\n * \n * @type {UserRead}\n * @memberof InlineResponse2008\n */\n user: UserRead;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2009\n */\nexport interface InlineResponse2009 {\n /**\n * \n * @type {UserRead}\n * @memberof InlineResponse2009\n */\n user: UserRead;\n /**\n * \n * @type {UserEmail}\n * @memberof InlineResponse2009\n */\n userEmail?: UserEmail;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse201\n */\nexport interface InlineResponse201 {\n /**\n * \n * @type {EntityMembership}\n * @memberof InlineResponse201\n */\n entityMembership?: EntityMembership;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse2011\n */\nexport interface InlineResponse2011 {\n /**\n * \n * @type {Story}\n * @memberof InlineResponse2011\n */\n story: Story;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof InlineResponse2011\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {UsersByID}\n * @memberof InlineResponse2011\n */\n users?: UsersByID;\n /**\n * \n * @type {CompetitionUserPoint}\n * @memberof InlineResponse2011\n */\n points?: CompetitionUserPoint;\n}\n\n/**\n * Will return points only if they were created (ie user has not used all pledge repeats).\n * @export\n * @interface InlineResponse2012\n */\nexport interface InlineResponse2012 {\n /**\n * \n * @type {CompetitionUserPoint}\n * @memberof InlineResponse2012\n */\n points?: CompetitionUserPoint;\n}\n\n/**\n * \n * @export\n * @interface InlineResponse204\n */\nexport interface InlineResponse204 {\n /**\n * \n * @type {EntityMemberships}\n * @memberof InlineResponse204\n */\n entityMemberships?: EntityMemberships;\n}\n\n/**\n * Keys are CompetitionPledgeIDs. Array values are UserIDs.\n * @export\n * @interface LatestToPledge\n */\nexport interface LatestToPledge {\n [key: string]: Array;\n\n}\n\n/**\n * Array of tuples. First item in tuples is URL text; second item is URL.\n * @export\n * @interface LearnMoreLinks\n */\nexport interface LearnMoreLinks extends Array {\n}\n\n/**\n * Keys are likableIDs. Uniqueness is guaranteed by likableType (ie blogEntry, comment, story). Indicates whether current user has flagged the relevant blogEntry, comment or story.\n * @export\n * @interface Likes\n */\nexport interface Likes {\n [key: string]: boolean;\n\n}\n\n/**\n * \n * @export\n * @enum {string}\n */\nexport enum MembershipLevel {\n Member = 'member',\n Admin = 'admin',\n Superadmin = 'superadmin'\n}\n\n/**\n * \n * @export\n * @interface NullInt\n */\nexport interface NullInt {\n /**\n * \n * @type {boolean}\n * @memberof NullInt\n */\n valid: boolean;\n /**\n * \n * @type {number}\n * @memberof NullInt\n */\n int64: number;\n}\n\n/**\n * \n * @export\n * @interface OpenGraphLink\n */\nexport interface OpenGraphLink {\n /**\n * \n * @type {string}\n * @memberof OpenGraphLink\n */\n title?: string;\n /**\n * \n * @type {string}\n * @memberof OpenGraphLink\n */\n url: string;\n /**\n * \n * @type {string}\n * @memberof OpenGraphLink\n */\n description?: string;\n /**\n * \n * @type {string}\n * @memberof OpenGraphLink\n */\n type?: string;\n /**\n * \n * @type {string}\n * @memberof OpenGraphLink\n */\n image?: string;\n}\n\n/**\n * \n * @export\n * @interface OpenGraphResponse\n */\nexport interface OpenGraphResponse {\n /**\n * Keys are URLs submitted in body.\n * @type {{ [key: string]: string; }}\n * @memberof OpenGraphResponse\n */\n errors: { [key: string]: string; };\n /**\n * Keys are URLs submitted in body.\n * @type {{ [key: string]: OpenGraphLink; }}\n * @memberof OpenGraphResponse\n */\n openGraphLinks: { [key: string]: OpenGraphLink; };\n}\n\n/**\n * \n * @export\n * @interface Pagination\n */\nexport interface Pagination {\n /**\n * SQL order string\n * @type {string}\n * @memberof Pagination\n */\n order?: string;\n /**\n * \n * @type {number}\n * @memberof Pagination\n */\n page?: number;\n /**\n * default value depends on route.\n * @type {number}\n * @memberof Pagination\n */\n pageSize?: number;\n /**\n * -1 indicates no more pages left.\n * @type {number}\n * @memberof Pagination\n */\n nextPage?: number;\n /**\n * \n * @type {number}\n * @memberof Pagination\n */\n totalPages?: number;\n}\n\n/**\n * \n * @export\n * @interface Password\n */\nexport interface Password {\n}\n\n/**\n * Key are CompetitionPledgeIDs. Values the number of times the user has verified the pledge.\n * @export\n * @interface PledgeCompletions\n */\nexport interface PledgeCompletions {\n [key: string]: number;\n\n}\n\n/**\n * Key are CompetitionPledgeIDs. Values the total number of points earned on each pledge.\n * @export\n * @interface PledgePoints\n */\nexport interface PledgePoints {\n [key: string]: number;\n\n}\n\n/**\n * \n * @export\n * @interface PostTokensBody\n */\nexport interface PostTokensBody {\n /**\n * \n * @type {string}\n * @memberof PostTokensBody\n */\n competitionName: string;\n /**\n * \n * @type {string}\n * @memberof PostTokensBody\n */\n adminSecret: string;\n /**\n * \n * @type {string}\n * @memberof PostTokensBody\n */\n emailToVerify?: string;\n /**\n * \n * @type {string}\n * @memberof PostTokensBody\n */\n emailToInvite?: string;\n /**\n * \n * @type {number}\n * @memberof PostTokensBody\n */\n userIDForPasswordReset?: number;\n}\n\n/**\n * \n * @export\n * @interface PostUserEmailParams\n */\nexport interface PostUserEmailParams {\n /**\n * \n * @type {string}\n * @memberof PostUserEmailParams\n */\n email: string;\n /**\n * \n * @type {boolean}\n * @memberof PostUserEmailParams\n */\n primary?: boolean;\n}\n\n/**\n * \n * @export\n * @interface RGBA\n */\nexport interface RGBA {\n /**\n * \n * @type {number}\n * @memberof RGBA\n */\n r: number;\n /**\n * \n * @type {number}\n * @memberof RGBA\n */\n g: number;\n /**\n * \n * @type {number}\n * @memberof RGBA\n */\n b: number;\n /**\n * \n * @type {number}\n * @memberof RGBA\n */\n a?: number;\n}\n\n/**\n * \n * @export\n * @interface Rect\n */\nexport interface Rect {\n /**\n * \n * @type {number}\n * @memberof Rect\n */\n x: number;\n /**\n * \n * @type {number}\n * @memberof Rect\n */\n y: number;\n /**\n * \n * @type {number}\n * @memberof Rect\n */\n width: number;\n /**\n * \n * @type {number}\n * @memberof Rect\n */\n height: number;\n}\n\n/**\n * \n * @export\n * @interface SocialLinks\n */\nexport interface SocialLinks {\n /**\n * Should be URL, but this is not validated at server level.\n * @type {string}\n * @memberof SocialLinks\n */\n website?: string;\n /**\n * \n * @type {string}\n * @memberof SocialLinks\n */\n medium?: string;\n /**\n * \n * @type {string}\n * @memberof SocialLinks\n */\n twitter?: string;\n /**\n * Should be URL, but this is not validated at server level.\n * @type {string}\n * @memberof SocialLinks\n */\n facebook?: string;\n /**\n * Should be URL, but this is not validated at server level.\n * @type {string}\n * @memberof SocialLinks\n */\n linkedin?: string;\n /**\n * \n * @type {string}\n * @memberof SocialLinks\n */\n instagram?: string;\n}\n\n/**\n * \n * @export\n * @interface Stories\n */\nexport interface Stories extends Array {\n}\n\n/**\n * \n * @export\n * @interface Story\n */\nexport interface Story {\n /**\n * \n * @type {number}\n * @memberof Story\n */\n id?: number;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n competitionPledgeID?: number;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n competitionUserPointID?: number;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n competitionID?: number;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n contentMD: string;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n contentHTML?: string;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n photo?: string;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n locationQualifier?: Story.LocationQualifierEnum;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n status?: Story.StatusEnum;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n flags?: number;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n likes?: number;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n pointsEarned?: number;\n /**\n * \n * @type {Array}\n * @memberof Story\n */\n links?: Array;\n /**\n * \n * @type {number}\n * @memberof Story\n */\n createdBy?: number;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n createdAt?: string;\n /**\n * \n * @type {string}\n * @memberof Story\n */\n updatedAt?: string;\n}\n\n/**\n * @export\n * @namespace Story\n */\nexport namespace Story {\n /**\n * @export\n * @enum {string}\n */\n export enum LocationQualifierEnum {\n Home = 'home',\n Work = 'work',\n Both = 'both',\n Empty = ''\n }\n /**\n * @export\n * @enum {string}\n */\n export enum StatusEnum {\n AlreadyDo = 'already_do',\n New = 'new',\n Empty = ''\n }\n}\n\n/**\n * \n * @export\n * @interface StoryCommentResults\n */\nexport interface StoryCommentResults {\n /**\n * \n * @type {Comments}\n * @memberof StoryCommentResults\n */\n storyComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof StoryCommentResults\n */\n storyCommentLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof StoryCommentResults\n */\n storyCommentFlags: Flags;\n /**\n * \n * @type {UsersByID}\n * @memberof StoryCommentResults\n */\n users: UsersByID;\n /**\n * \n * @type {CommentPagination}\n * @memberof StoryCommentResults\n */\n storyCommentPagination: CommentPagination;\n}\n\n/**\n * \n * @export\n * @interface StoryResults\n */\nexport interface StoryResults {\n /**\n * \n * @type {Array}\n * @memberof StoryResults\n */\n stories: Array;\n /**\n * \n * @type {Likes}\n * @memberof StoryResults\n */\n storyLikes: Likes;\n /**\n * \n * @type {Flags}\n * @memberof StoryResults\n */\n storyFlags: Flags;\n /**\n * \n * @type {Comments}\n * @memberof StoryResults\n */\n storyComments: Comments;\n /**\n * \n * @type {Likes}\n * @memberof StoryResults\n */\n storyCommentLikes?: Likes;\n /**\n * \n * @type {Flags}\n * @memberof StoryResults\n */\n storyCommentFlags?: Flags;\n /**\n * \n * @type {StoryTaggedUserIDs}\n * @memberof StoryResults\n */\n storyTaggedUserIDs?: StoryTaggedUserIDs;\n /**\n * \n * @type {Pagination}\n * @memberof StoryResults\n */\n storyPagination?: Pagination;\n /**\n * \n * @type {UsersByID}\n * @memberof StoryResults\n */\n users?: UsersByID;\n}\n\n/**\n * Keys are storyIDs.\n * @export\n * @interface StoryTaggedUserIDs\n */\nexport interface StoryTaggedUserIDs {\n [key: string]: TaggedUserIDs;\n\n}\n\n/**\n * A simple array of user IDs.\n * @export\n * @interface TaggedUserIDs\n */\nexport interface TaggedUserIDs extends Array {\n}\n\n/**\n * \n * @export\n * @interface TopSubentityScores\n */\nexport interface TopSubentityScores extends Array {\n}\n\n/**\n * \n * @export\n * @interface TopUserScores\n */\nexport interface TopUserScores extends Array {\n}\n\n/**\n * \n * @export\n * @interface UpdateUserParams\n */\nexport interface UpdateUserParams {\n /**\n * \n * @type {string}\n * @memberof UpdateUserParams\n */\n password: string;\n /**\n * \n * @type {Password}\n * @memberof UpdateUserParams\n */\n newPassword?: Password;\n /**\n * \n * @type {UserWrite}\n * @memberof UpdateUserParams\n */\n user?: UserWrite;\n}\n\n/**\n * \n * @export\n * @interface UserEmail\n */\nexport interface UserEmail {\n /**\n * \n * @type {string}\n * @memberof UserEmail\n */\n email: string;\n /**\n * \n * @type {number}\n * @memberof UserEmail\n */\n id: number;\n /**\n * \n * @type {number}\n * @memberof UserEmail\n */\n userID: number;\n /**\n * \n * @type {boolean}\n * @memberof UserEmail\n */\n verified: boolean;\n /**\n * \n * @type {string}\n * @memberof UserEmail\n */\n verificationSentAt?: string;\n}\n\n/**\n * \n * @export\n * @interface UserEmails\n */\nexport interface UserEmails extends Array {\n}\n\n/**\n * Keys are EntityIDs.\n * @export\n * @interface UserMemberships\n */\nexport interface UserMemberships {\n [key: string]: EntityMembership;\n\n}\n\n/**\n * \n * @export\n * @interface UserOptions\n */\nexport interface UserOptions {\n /**\n * \n * @type {boolean}\n * @memberof UserOptions\n */\n isHealthFacilityEmployee?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof UserOptions\n */\n isLabUser?: boolean;\n}\n\n/**\n * \n * @export\n * @interface UserPledges\n */\nexport interface UserPledges {\n [key: string]: any;\n\n}\n\n/**\n * \n * @export\n * @interface UserRead\n */\nexport interface UserRead {\n /**\n * \n * @type {number}\n * @memberof UserRead\n */\n id: number;\n /**\n * \n * @type {UserType}\n * @memberof UserRead\n */\n type?: UserType;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n email?: string;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n firstName: string;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n lastName?: string;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n city?: string;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n state?: string;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n zipcode?: string;\n /**\n * \n * @type {Country}\n * @memberof UserRead\n */\n country?: Country;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n descriptionMD?: string;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n descriptionHTML?: string;\n /**\n * \n * @type {boolean}\n * @memberof UserRead\n */\n _public?: boolean;\n /**\n * \n * @type {UserOptions}\n * @memberof UserRead\n */\n options?: UserOptions;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n profilePhoto?: string;\n /**\n * \n * @type {SocialLinks}\n * @memberof UserRead\n */\n socialLinks?: SocialLinks;\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n emailVerified?: string;\n /**\n * Keys are competitionID => entityID.\n * @type {{ [key: string]: { [key: string]: boolean; }; }}\n * @memberof UserRead\n */\n acceptedCompetitionEntityMemberships?: { [key: string]: { [key: string]: boolean; }; };\n /**\n * \n * @type {string}\n * @memberof UserRead\n */\n createdAt?: string;\n}\n\n/**\n * \n * @export\n * @enum {string}\n */\nexport enum UserType {\n Student = 'student',\n Faculty = 'faculty',\n Staff = 'staff',\n Empty = ''\n}\n\n/**\n * \n * @export\n * @interface UserWrite\n */\nexport interface UserWrite {\n /**\n * \n * @type {UserType}\n * @memberof UserWrite\n */\n type?: UserType;\n /**\n * \n * @type {string}\n * @memberof UserWrite\n */\n email: string;\n /**\n * \n * @type {string}\n * @memberof UserWrite\n */\n firstName: string;\n /**\n * \n * @type {string}\n * @memberof UserWrite\n */\n lastName?: string;\n /**\n * \n * @type {string}\n * @memberof UserWrite\n */\n profilePhoto?: string;\n /**\n * \n * @type {string}\n * @memberof UserWrite\n */\n descriptionMD?: string;\n /**\n * \n * @type {string}\n * @memberof UserWrite\n */\n descriptionHTML?: string;\n /**\n * \n * @type {boolean}\n * @memberof UserWrite\n */\n _public?: boolean;\n /**\n * \n * @type {UserOptions}\n * @memberof UserWrite\n */\n options?: UserOptions;\n /**\n * \n * @type {SocialLinks}\n * @memberof UserWrite\n */\n socialLinks?: SocialLinks;\n}\n\n/**\n * Keys are userIDs - they are guaranteed unique across the API.\n * @export\n * @interface UsersByID\n */\nexport interface UsersByID {\n [key: string]: UserRead;\n\n}\n\n/**\n * \n * @export\n * @interface ValidationError\n */\nexport interface ValidationError {\n /**\n * \n * @type {string}\n * @memberof ValidationError\n */\n field: string;\n /**\n * \n * @type {string}\n * @memberof ValidationError\n */\n message?: string;\n /**\n * \n * @type {string}\n * @memberof ValidationError\n */\n code: ValidationError.CodeEnum;\n}\n\n/**\n * @export\n * @namespace ValidationError\n */\nexport namespace ValidationError {\n /**\n * @export\n * @enum {string}\n */\n export enum CodeEnum {\n ErrSwaggerValidationCode = 'errSwaggerValidationCode',\n ErrEmailNonUnique = 'errEmailNonUnique',\n ErrPasswordIncorrect = 'errPasswordIncorrect',\n ErrEmailNotFound = 'errEmailNotFound',\n ErrUserEmailExists = 'errUserEmailExists',\n ErrCannotDeletePrimaryEmail = 'errCannotDeletePrimaryEmail',\n ErrLikeAlreadyExists = 'errLikeAlreadyExists',\n ErrFlagAlreadyExists = 'errFlagAlreadyExists',\n ErrCompetitionPledgeNotReleased = 'errCompetitionPledgeNotReleased',\n ErrCompetitionEntityMembershipExists = 'errCompetitionEntityMembershipExists',\n ErrInvalidImageType = 'errInvalidImageType',\n ErrVerifiedCompetitionUserNotFound = 'errVerifiedCompetitionUserNotFound',\n ErrEntityDoesNotExist = 'errEntityDoesNotExist',\n ErrEntityMembershipExists = 'errEntityMembershipExists',\n ErrIllegalMembershipJoin = 'errIllegalMembershipJoin',\n ErrCompetitionMembershipTypeExists = 'errCompetitionMembershipTypeExists',\n ErrTokenExpired = 'errTokenExpired',\n ErrTokenInvalidJTI = 'errTokenInvalidJTI'\n }\n}\n\n/**\n * \n * @export\n * @interface ValidationErrors\n */\nexport interface ValidationErrors extends Array {\n}\n\n\n/**\n * DefaultApi - fetch parameter creator\n * @export\n */\nexport const DefaultApiFetchParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * Delete comment.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteComment(commentID: number, commentableType: 'blog_entry' | 'story', options: any = {}): FetchArgs {\n // verify required parameter 'commentID' is not null or undefined\n if (commentID === null || commentID === undefined) {\n throw new RequiredError('commentID','Required parameter commentID was null or undefined when calling deleteComment.');\n }\n // verify required parameter 'commentableType' is not null or undefined\n if (commentableType === null || commentableType === undefined) {\n throw new RequiredError('commentableType','Required parameter commentableType was null or undefined when calling deleteComment.');\n }\n const localVarPath = `/{commentableType}/comments/{commentID}`\n .replace(`{${\"commentID\"}}`, encodeURIComponent(String(commentID)))\n .replace(`{${\"commentableType\"}}`, encodeURIComponent(String(commentableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary This will delete the Entity as well as the CompetitionEntity.\n * @param {number} competitionID \n * @param {number} entityID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCompetitionEntity(competitionID: number, entityID: number, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling deleteCompetitionEntity.');\n }\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling deleteCompetitionEntity.');\n }\n const localVarPath = `/competitions/{competitionID}/entities/{entityID}`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)))\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCompetitionEntityPledge(competitionEntityPledgeID: number, options: any = {}): FetchArgs {\n // verify required parameter 'competitionEntityPledgeID' is not null or undefined\n if (competitionEntityPledgeID === null || competitionEntityPledgeID === undefined) {\n throw new RequiredError('competitionEntityPledgeID','Required parameter competitionEntityPledgeID was null or undefined when calling deleteCompetitionEntityPledge.');\n }\n const localVarPath = `/competition_entity_pledges/{competitionEntityPledgeID}`\n .replace(`{${\"competitionEntityPledgeID\"}}`, encodeURIComponent(String(competitionEntityPledgeID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteEntityBlogEntry(entityID: number, blogEntryID: number, options: any = {}): FetchArgs {\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling deleteEntityBlogEntry.');\n }\n // verify required parameter 'blogEntryID' is not null or undefined\n if (blogEntryID === null || blogEntryID === undefined) {\n throw new RequiredError('blogEntryID','Required parameter blogEntryID was null or undefined when calling deleteEntityBlogEntry.');\n }\n const localVarPath = `/entities/{entityID}/blog_entries/{blogEntryID}`\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)))\n .replace(`{${\"blogEntryID\"}}`, encodeURIComponent(String(blogEntryID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} membershipID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteEntityMembership(membershipID: number, options: any = {}): FetchArgs {\n // verify required parameter 'membershipID' is not null or undefined\n if (membershipID === null || membershipID === undefined) {\n throw new RequiredError('membershipID','Required parameter membershipID was null or undefined when calling deleteEntityMembership.');\n }\n const localVarPath = `/memberships/{membershipID}`\n .replace(`{${\"membershipID\"}}`, encodeURIComponent(String(membershipID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Delete flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteFlag(flaggableID: number, flaggableType: 'story' | 'comment', commentableType?: 'story' | 'comment', options: any = {}): FetchArgs {\n // verify required parameter 'flaggableID' is not null or undefined\n if (flaggableID === null || flaggableID === undefined) {\n throw new RequiredError('flaggableID','Required parameter flaggableID was null or undefined when calling deleteFlag.');\n }\n // verify required parameter 'flaggableType' is not null or undefined\n if (flaggableType === null || flaggableType === undefined) {\n throw new RequiredError('flaggableType','Required parameter flaggableType was null or undefined when calling deleteFlag.');\n }\n const localVarPath = `/{flaggableType}/{flaggableID}/flags`\n .replace(`{${\"flaggableID\"}}`, encodeURIComponent(String(flaggableID)))\n .replace(`{${\"flaggableType\"}}`, encodeURIComponent(String(flaggableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (commentableType !== undefined) {\n localVarQueryParameter['commentableType'] = commentableType;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Delete like.\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options: any = {}): FetchArgs {\n // verify required parameter 'likableID' is not null or undefined\n if (likableID === null || likableID === undefined) {\n throw new RequiredError('likableID','Required parameter likableID was null or undefined when calling deleteLike.');\n }\n // verify required parameter 'likableType' is not null or undefined\n if (likableType === null || likableType === undefined) {\n throw new RequiredError('likableType','Required parameter likableType was null or undefined when calling deleteLike.');\n }\n const localVarPath = `/{likableType}/{likableID}/likes`\n .replace(`{${\"likableID\"}}`, encodeURIComponent(String(likableID)))\n .replace(`{${\"likableType\"}}`, encodeURIComponent(String(likableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (commentableType !== undefined) {\n localVarQueryParameter['commentableType'] = commentableType;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Sign out.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteSession(options: any = {}): FetchArgs {\n const localVarPath = `/session`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} storyID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteStory(storyID: number, options: any = {}): FetchArgs {\n // verify required parameter 'storyID' is not null or undefined\n if (storyID === null || storyID === undefined) {\n throw new RequiredError('storyID','Required parameter storyID was null or undefined when calling deleteStory.');\n }\n const localVarPath = `/stories/{storyID}`\n .replace(`{${\"storyID\"}}`, encodeURIComponent(String(storyID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete user.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUser(options: any = {}): FetchArgs {\n const localVarPath = `/users`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUserEmail(userID: number, userEmailID: number, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling deleteUserEmail.');\n }\n // verify required parameter 'userEmailID' is not null or undefined\n if (userEmailID === null || userEmailID === undefined) {\n throw new RequiredError('userEmailID','Required parameter userEmailID was null or undefined when calling deleteUserEmail.');\n }\n const localVarPath = `/users/{userID}/email/{userEmailID}`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)))\n .replace(`{${\"userEmailID\"}}`, encodeURIComponent(String(userEmailID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Request email verification link.\n * @param {number} userEmailID \n * @param {string} competitionName \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAccountVerification(userEmailID: number, competitionName: string, options: any = {}): FetchArgs {\n // verify required parameter 'userEmailID' is not null or undefined\n if (userEmailID === null || userEmailID === undefined) {\n throw new RequiredError('userEmailID','Required parameter userEmailID was null or undefined when calling getAccountVerification.');\n }\n // verify required parameter 'competitionName' is not null or undefined\n if (competitionName === null || competitionName === undefined) {\n throw new RequiredError('competitionName','Required parameter competitionName was null or undefined when calling getAccountVerification.');\n }\n const localVarPath = `/email/{userEmailID}/verification/{competitionName}`\n .replace(`{${\"userEmailID\"}}`, encodeURIComponent(String(userEmailID)))\n .replace(`{${\"competitionName\"}}`, encodeURIComponent(String(competitionName)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} [entityID] \n * @param {number} [competitionID] \n * @param {number} [blogEntryID] \n * @param {number} [page] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getBlogEntries(entityID?: number, competitionID?: number, blogEntryID?: number, page?: number, authorization?: string, options: any = {}): FetchArgs {\n const localVarPath = `/blog_entries`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (entityID !== undefined) {\n localVarQueryParameter['entityID'] = entityID;\n }\n\n if (competitionID !== undefined) {\n localVarQueryParameter['competitionID'] = competitionID;\n }\n\n if (blogEntryID !== undefined) {\n localVarQueryParameter['blogEntryID'] = blogEntryID;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (authorization !== undefined && authorization !== null) {\n localVarHeaderParameter['Authorization'] = String(authorization);\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve user's calculator answers from server.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCalculatorAnswers(userID: number, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling getCalculatorAnswers.');\n }\n const localVarPath = `/calculator_answers/{userID}`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary List users in order of footprint results.\n * @param {'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count'} [order] \n * @param {string} [page] 1-based index for paginated results.\n * @param {string} [pageSize] Range of 20-100 silently enforced.\n * @param {string} [city] \n * @param {string} [state] \n * @param {string} [zipcode] \n * @param {string} [country] \n * @param {string} [inputIncome] \n * @param {string} [inputSize] \n * @param {string} [includeSeedUsers] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCalculatorResultLeaders(order?: 'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count', page?: string, pageSize?: string, city?: string, state?: string, zipcode?: string, country?: string, inputIncome?: string, inputSize?: string, includeSeedUsers?: string, options: any = {}): FetchArgs {\n const localVarPath = `/calculator_result_leaders`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (order !== undefined) {\n localVarQueryParameter['order'] = order;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (pageSize !== undefined) {\n localVarQueryParameter['pageSize'] = pageSize;\n }\n\n if (city !== undefined) {\n localVarQueryParameter['city'] = city;\n }\n\n if (state !== undefined) {\n localVarQueryParameter['state'] = state;\n }\n\n if (zipcode !== undefined) {\n localVarQueryParameter['zipcode'] = zipcode;\n }\n\n if (country !== undefined) {\n localVarQueryParameter['country'] = country;\n }\n\n if (inputIncome !== undefined) {\n localVarQueryParameter['inputIncome'] = inputIncome;\n }\n\n if (inputSize !== undefined) {\n localVarQueryParameter['inputSize'] = inputSize;\n }\n\n if (includeSeedUsers !== undefined) {\n localVarQueryParameter['includeSeedUsers'] = includeSeedUsers;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getComments(commentableID: number, commentableType: 'story' | 'blog_entry', page?: number, options: any = {}): FetchArgs {\n // verify required parameter 'commentableID' is not null or undefined\n if (commentableID === null || commentableID === undefined) {\n throw new RequiredError('commentableID','Required parameter commentableID was null or undefined when calling getComments.');\n }\n // verify required parameter 'commentableType' is not null or undefined\n if (commentableType === null || commentableType === undefined) {\n throw new RequiredError('commentableType','Required parameter commentableType was null or undefined when calling getComments.');\n }\n const localVarPath = `/{commentableType}/{commentableID}/comments`\n .replace(`{${\"commentableID\"}}`, encodeURIComponent(String(commentableID)))\n .replace(`{${\"commentableType\"}}`, encodeURIComponent(String(commentableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve competition dashboard data.\n * @param {string} competitionName \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionDashboard(competitionName: string, authorization?: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionName' is not null or undefined\n if (competitionName === null || competitionName === undefined) {\n throw new RequiredError('competitionName','Required parameter competitionName was null or undefined when calling getCompetitionDashboard.');\n }\n const localVarPath = `/competitions/{competitionName}/dashboard`\n .replace(`{${\"competitionName\"}}`, encodeURIComponent(String(competitionName)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (authorization !== undefined && authorization !== null) {\n localVarHeaderParameter['Authorization'] = String(authorization);\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve a list of available teams or organizations.\n * @param {number} competitionID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionEntities(competitionID: number, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling getCompetitionEntities.');\n }\n const localVarPath = `/competitions/{competitionID}/entities`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionEntity(competitionID: number, entityID: number, authorization?: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling getCompetitionEntity.');\n }\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling getCompetitionEntity.');\n }\n const localVarPath = `/competitions/{competitionID}/entities/{entityID}`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)))\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (authorization !== undefined && authorization !== null) {\n localVarHeaderParameter['Authorization'] = String(authorization);\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve competition pledge..\n * @param {number} competitionPledgeID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionPledge(competitionPledgeID: number, authorization?: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionPledgeID' is not null or undefined\n if (competitionPledgeID === null || competitionPledgeID === undefined) {\n throw new RequiredError('competitionPledgeID','Required parameter competitionPledgeID was null or undefined when calling getCompetitionPledge.');\n }\n const localVarPath = `/pledges/{competitionPledgeID}`\n .replace(`{${\"competitionPledgeID\"}}`, encodeURIComponent(String(competitionPledgeID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (authorization !== undefined && authorization !== null) {\n localVarHeaderParameter['Authorization'] = String(authorization);\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} [userID] \n * @param {number} [entityID] \n * @param {number} [competitionPledgeID] \n * @param {number} [storyID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionStories(competitionID: number, userID?: number, entityID?: number, competitionPledgeID?: number, storyID?: number, page?: number, term?: string, authorization?: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling getCompetitionStories.');\n }\n const localVarPath = `/competitions/{competitionID}/stories`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (userID !== undefined) {\n localVarQueryParameter['userID'] = userID;\n }\n\n if (entityID !== undefined) {\n localVarQueryParameter['entityID'] = entityID;\n }\n\n if (competitionPledgeID !== undefined) {\n localVarQueryParameter['competitionPledgeID'] = competitionPledgeID;\n }\n\n if (storyID !== undefined) {\n localVarQueryParameter['storyID'] = storyID;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (term !== undefined) {\n localVarQueryParameter['term'] = term;\n }\n\n if (authorization !== undefined && authorization !== null) {\n localVarHeaderParameter['Authorization'] = String(authorization);\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {number} userID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUser(competitionID: number, userID: number, authorization?: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling getCompetitionUser.');\n }\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling getCompetitionUser.');\n }\n const localVarPath = `/competitions/{competitionID}/users/{userID}`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)))\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (authorization !== undefined && authorization !== null) {\n localVarHeaderParameter['Authorization'] = String(authorization);\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} [entityID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [sort] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUserScores(competitionID: number, entityID?: number, page?: number, term?: string, sort?: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling getCompetitionUserScores.');\n }\n const localVarPath = `/competitions/{competitionID}/user_scores`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (entityID !== undefined) {\n localVarQueryParameter['entityID'] = entityID;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (term !== undefined) {\n localVarQueryParameter['term'] = term;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {string} email \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUsers(competitionID: number, email: string, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling getCompetitionUsers.');\n }\n // verify required parameter 'email' is not null or undefined\n if (email === null || email === undefined) {\n throw new RequiredError('email','Required parameter email was null or undefined when calling getCompetitionUsers.');\n }\n const localVarPath = `/competitions/{competitionID}/users`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (email !== undefined) {\n localVarQueryParameter['email'] = email;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Generate development/QA data.\n * @param {string} [number] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getGenerate(number?: string, options: any = {}): FetchArgs {\n const localVarPath = `/generate`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (number !== undefined) {\n localVarQueryParameter['number'] = number;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get summary of API status\n * @param {string} [include] Comma separated string of response objects to include.\n * @param {string} [competitionName] Name of competition to return CompetitionUserDashboard for.\n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMe(include?: string, competitionName?: string, userPledgeDomain?: string, options: any = {}): FetchArgs {\n const localVarPath = `/me`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (include !== undefined) {\n localVarQueryParameter['include'] = include;\n }\n\n if (competitionName !== undefined) {\n localVarQueryParameter['competitionName'] = competitionName;\n }\n\n if (userPledgeDomain !== undefined) {\n localVarQueryParameter['userPledgeDomain'] = userPledgeDomain;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get summary of API status\n * @param {string} [checks] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getStatus(checks?: string, options: any = {}): FetchArgs {\n const localVarPath = `/status`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (checks !== undefined) {\n localVarQueryParameter['checks'] = checks;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Download Swagger spec.\n * @param {string} [pat] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSwagger(pat?: string, options: any = {}): FetchArgs {\n const localVarPath = `/swagger.json`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (pat !== undefined) {\n localVarQueryParameter['pat'] = pat;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve user.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUser(userID: number, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling getUser.');\n }\n const localVarPath = `/users/{userID}`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Retrieve list of use pledges.\n * @param {number} userID \n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserPledges(userID: number, userPledgeDomain?: string, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling getUserPledges.');\n }\n const localVarPath = `/users/{userID}/pledges`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n if (userPledgeDomain !== undefined) {\n localVarQueryParameter['userPledgeDomain'] = userPledgeDomain;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Verify email address.\n * @param {string} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postAccountVerification(body: string, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postAccountVerification.');\n }\n const localVarPath = `/verification`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"string\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {Body} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postComments(commentableID: number, commentableType: 'story' | 'blog_entry', body: Body, options: any = {}): FetchArgs {\n // verify required parameter 'commentableID' is not null or undefined\n if (commentableID === null || commentableID === undefined) {\n throw new RequiredError('commentableID','Required parameter commentableID was null or undefined when calling postComments.');\n }\n // verify required parameter 'commentableType' is not null or undefined\n if (commentableType === null || commentableType === undefined) {\n throw new RequiredError('commentableType','Required parameter commentableType was null or undefined when calling postComments.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postComments.');\n }\n const localVarPath = `/{commentableType}/{commentableID}/comments`\n .replace(`{${\"commentableID\"}}`, encodeURIComponent(String(commentableID)))\n .replace(`{${\"commentableType\"}}`, encodeURIComponent(String(commentableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {Body2} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntities(competitionID: number, body: Body2, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling postCompetitionEntities.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postCompetitionEntities.');\n }\n const localVarPath = `/competitions/{competitionID}/entities`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body2\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} entityID \n * @param {number} competitionID \n * @param {Body4} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntityMemberships(entityID: number, competitionID: number, body: Body4, options: any = {}): FetchArgs {\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling postCompetitionEntityMemberships.');\n }\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling postCompetitionEntityMemberships.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postCompetitionEntityMemberships.');\n }\n const localVarPath = `/competitions/{competitionID}/entities/{entityID}/memberships`\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)))\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body4\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create entity specific information for competition pledge.\n * @param {Body12} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntityPledges(body: Body12, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postCompetitionEntityPledges.');\n }\n const localVarPath = `/competition_entity_pledges`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body12\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create points for a CompetitionPledge\n * @param {number} competitionPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionPledgePoints(competitionPledgeID: number, options: any = {}): FetchArgs {\n // verify required parameter 'competitionPledgeID' is not null or undefined\n if (competitionPledgeID === null || competitionPledgeID === undefined) {\n throw new RequiredError('competitionPledgeID','Required parameter competitionPledgeID was null or undefined when calling postCompetitionPledgePoints.');\n }\n const localVarPath = `/pledges/{competitionPledgeID}/points`\n .replace(`{${\"competitionPledgeID\"}}`, encodeURIComponent(String(competitionPledgeID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {Body5} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionStories(competitionID: number, body: Body5, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling postCompetitionStories.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postCompetitionStories.');\n }\n const localVarPath = `/competitions/{competitionID}/stories`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body5\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} entityID \n * @param {Body9} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityBlogEntries(entityID: number, body: Body9, options: any = {}): FetchArgs {\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling postEntityBlogEntries.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postEntityBlogEntries.');\n }\n const localVarPath = `/entities/{entityID}/blog_entries`\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body9\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} membershipID \n * @param {Body14} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityMembershipLevel(membershipID: number, body: Body14, options: any = {}): FetchArgs {\n // verify required parameter 'membershipID' is not null or undefined\n if (membershipID === null || membershipID === undefined) {\n throw new RequiredError('membershipID','Required parameter membershipID was null or undefined when calling postEntityMembershipLevel.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postEntityMembershipLevel.');\n }\n const localVarPath = `/memberships/{membershipID}/level`\n .replace(`{${\"membershipID\"}}`, encodeURIComponent(String(membershipID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body14\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} membershipID \n * @param {Body15} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityMembershipStatus(membershipID: number, body: Body15, options: any = {}): FetchArgs {\n // verify required parameter 'membershipID' is not null or undefined\n if (membershipID === null || membershipID === undefined) {\n throw new RequiredError('membershipID','Required parameter membershipID was null or undefined when calling postEntityMembershipStatus.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postEntityMembershipStatus.');\n }\n const localVarPath = `/memberships/{membershipID}/status`\n .replace(`{${\"membershipID\"}}`, encodeURIComponent(String(membershipID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body15\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Change owner of entity.\n * @param {number} entityID \n * @param {Body11} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityOwner(entityID: number, body: Body11, options: any = {}): FetchArgs {\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling postEntityOwner.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postEntityOwner.');\n }\n const localVarPath = `/entities/{entityID}/owner`\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body11\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Create flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {Body6} body \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postFlag(flaggableID: number, flaggableType: 'story' | 'comment', body: Body6, commentableType?: 'story' | 'comment', options: any = {}): FetchArgs {\n // verify required parameter 'flaggableID' is not null or undefined\n if (flaggableID === null || flaggableID === undefined) {\n throw new RequiredError('flaggableID','Required parameter flaggableID was null or undefined when calling postFlag.');\n }\n // verify required parameter 'flaggableType' is not null or undefined\n if (flaggableType === null || flaggableType === undefined) {\n throw new RequiredError('flaggableType','Required parameter flaggableType was null or undefined when calling postFlag.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postFlag.');\n }\n const localVarPath = `/{flaggableType}/{flaggableID}/flags`\n .replace(`{${\"flaggableID\"}}`, encodeURIComponent(String(flaggableID)))\n .replace(`{${\"flaggableType\"}}`, encodeURIComponent(String(flaggableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (commentableType !== undefined) {\n localVarQueryParameter['commentableType'] = commentableType;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body6\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Post image to Google Cloud Storage.\n * @param {any} image Limited to 5 mb. Must be jpg, gif, or png.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postImage(image: any, options: any = {}): FetchArgs {\n // verify required parameter 'image' is not null or undefined\n if (image === null || image === undefined) {\n throw new RequiredError('image','Required parameter image was null or undefined when calling postImage.');\n }\n const localVarPath = `/image`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n const localVarFormParams = new url.URLSearchParams();\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (image !== undefined) {\n localVarFormParams.set('image', image as any);\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/x-www-form-urlencoded';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n localVarRequestOptions.body = localVarFormParams.toString();\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Mutate image server side.\n * @param {any} image Limited to 10 mb. Must be jpg, gif, or png.\n * @param {string} mutation See \\"#/definitions/ImageMutation\\"\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postImageMutation(image: any, mutation: string, options: any = {}): FetchArgs {\n // verify required parameter 'image' is not null or undefined\n if (image === null || image === undefined) {\n throw new RequiredError('image','Required parameter image was null or undefined when calling postImageMutation.');\n }\n // verify required parameter 'mutation' is not null or undefined\n if (mutation === null || mutation === undefined) {\n throw new RequiredError('mutation','Required parameter mutation was null or undefined when calling postImageMutation.');\n }\n const localVarPath = `/image_mutation`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n const localVarFormParams = new url.URLSearchParams();\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (image !== undefined) {\n localVarFormParams.set('image', image as any);\n }\n\n if (mutation !== undefined) {\n localVarFormParams.set('mutation', mutation as any);\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/x-www-form-urlencoded';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n localVarRequestOptions.body = localVarFormParams.toString();\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Invite user to join competition.\n * @param {string} competitionName \n * @param {Body7} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postInvite(competitionName: string, body: Body7, options: any = {}): FetchArgs {\n // verify required parameter 'competitionName' is not null or undefined\n if (competitionName === null || competitionName === undefined) {\n throw new RequiredError('competitionName','Required parameter competitionName was null or undefined when calling postInvite.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postInvite.');\n }\n const localVarPath = `/invite/{competitionName}`\n .replace(`{${\"competitionName\"}}`, encodeURIComponent(String(competitionName)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body7\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Join\n * @param {CompetitionJoinParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postJoin(body: CompetitionJoinParams, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postJoin.');\n }\n const localVarPath = `/join`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"CompetitionJoinParams\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Create like\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options: any = {}): FetchArgs {\n // verify required parameter 'likableID' is not null or undefined\n if (likableID === null || likableID === undefined) {\n throw new RequiredError('likableID','Required parameter likableID was null or undefined when calling postLike.');\n }\n // verify required parameter 'likableType' is not null or undefined\n if (likableType === null || likableType === undefined) {\n throw new RequiredError('likableType','Required parameter likableType was null or undefined when calling postLike.');\n }\n const localVarPath = `/{likableType}/{likableID}/likes`\n .replace(`{${\"likableID\"}}`, encodeURIComponent(String(likableID)))\n .replace(`{${\"likableType\"}}`, encodeURIComponent(String(likableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n if (commentableType !== undefined) {\n localVarQueryParameter['commentableType'] = commentableType;\n }\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Fetch open graph data for resource\n * @param {Array} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postOpenGraph(body: Array, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postOpenGraph.');\n }\n const localVarPath = `/open_graph`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Array<string>\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Request a password reset email\n * @param {string} competitionName \n * @param {Body16} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postPasswordResetRequest(competitionName: string, body: Body16, options: any = {}): FetchArgs {\n // verify required parameter 'competitionName' is not null or undefined\n if (competitionName === null || competitionName === undefined) {\n throw new RequiredError('competitionName','Required parameter competitionName was null or undefined when calling postPasswordResetRequest.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postPasswordResetRequest.');\n }\n const localVarPath = `/password_reset_request/{competitionName}`\n .replace(`{${\"competitionName\"}}`, encodeURIComponent(String(competitionName)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body16\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Save qualtrics ID to CompetitionUser.\n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postQualtricsID(body: string, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postQualtricsID.');\n }\n const localVarPath = `/qualtrics_id`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"string\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Sign in.\n * @param {CreateSessionParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postSession(body: CreateSessionParams, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postSession.');\n }\n const localVarPath = `/session`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"CreateSessionParams\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Generate invite, verification, and password reset tokens for testing.\n * @param {PostTokensBody} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postTokens(body: PostTokensBody, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postTokens.');\n }\n const localVarPath = `/tokens`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"PostTokensBody\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Post footprint\n * @param {number} competitionId \n * @param {Body18} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserCompetitionFootprint(competitionId: number, body: Body18, options: any = {}): FetchArgs {\n // verify required parameter 'competitionId' is not null or undefined\n if (competitionId === null || competitionId === undefined) {\n throw new RequiredError('competitionId','Required parameter competitionId was null or undefined when calling postUserCompetitionFootprint.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postUserCompetitionFootprint.');\n }\n const localVarPath = `/user/{competitionId}/footprint`\n .replace(`{${\"competitionId\"}}`, encodeURIComponent(String(competitionId)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body18\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete user.\n * @param {number} userID \n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserDelete(userID: number, body: string, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling postUserDelete.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postUserDelete.');\n }\n const localVarPath = `/users/{userID}/delete`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"string\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Add email to account.\n * @param {number} userID \n * @param {PostUserEmailParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserEmail(userID: number, body: PostUserEmailParams, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling postUserEmail.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postUserEmail.');\n }\n const localVarPath = `/users/{userID}/email`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"PostUserEmailParams\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Sign up.\n * @param {CreateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUsers(body: CreateUserParams, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling postUsers.');\n }\n const localVarPath = `/users`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"CreateUserParams\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update user's calculator answers.\n * @param {number} userID \n * @param {CalculatorAnswers} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCalculatorAnswers(userID: number, body: CalculatorAnswers, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling putCalculatorAnswers.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putCalculatorAnswers.');\n }\n const localVarPath = `/calculator_answers/{userID}`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"CalculatorAnswers\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * Update comment content.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {Body1} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putComment(commentID: number, commentableType: 'blog_entry' | 'story', body: Body1, options: any = {}): FetchArgs {\n // verify required parameter 'commentID' is not null or undefined\n if (commentID === null || commentID === undefined) {\n throw new RequiredError('commentID','Required parameter commentID was null or undefined when calling putComment.');\n }\n // verify required parameter 'commentableType' is not null or undefined\n if (commentableType === null || commentableType === undefined) {\n throw new RequiredError('commentableType','Required parameter commentableType was null or undefined when calling putComment.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putComment.');\n }\n const localVarPath = `/{commentableType}/comments/{commentID}`\n .replace(`{${\"commentID\"}}`, encodeURIComponent(String(commentID)))\n .replace(`{${\"commentableType\"}}`, encodeURIComponent(String(commentableType)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body1\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {Body3} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCompetitionEntity(competitionID: number, entityID: number, body: Body3, options: any = {}): FetchArgs {\n // verify required parameter 'competitionID' is not null or undefined\n if (competitionID === null || competitionID === undefined) {\n throw new RequiredError('competitionID','Required parameter competitionID was null or undefined when calling putCompetitionEntity.');\n }\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling putCompetitionEntity.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putCompetitionEntity.');\n }\n const localVarPath = `/competitions/{competitionID}/entities/{entityID}`\n .replace(`{${\"competitionID\"}}`, encodeURIComponent(String(competitionID)))\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body3\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {Body13} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCompetitionEntityPledge(competitionEntityPledgeID: number, body: Body13, options: any = {}): FetchArgs {\n // verify required parameter 'competitionEntityPledgeID' is not null or undefined\n if (competitionEntityPledgeID === null || competitionEntityPledgeID === undefined) {\n throw new RequiredError('competitionEntityPledgeID','Required parameter competitionEntityPledgeID was null or undefined when calling putCompetitionEntityPledge.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putCompetitionEntityPledge.');\n }\n const localVarPath = `/competition_entity_pledges/{competitionEntityPledgeID}`\n .replace(`{${\"competitionEntityPledgeID\"}}`, encodeURIComponent(String(competitionEntityPledgeID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body13\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {Body10} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putEntityBlogEntry(entityID: number, blogEntryID: number, body: Body10, options: any = {}): FetchArgs {\n // verify required parameter 'entityID' is not null or undefined\n if (entityID === null || entityID === undefined) {\n throw new RequiredError('entityID','Required parameter entityID was null or undefined when calling putEntityBlogEntry.');\n }\n // verify required parameter 'blogEntryID' is not null or undefined\n if (blogEntryID === null || blogEntryID === undefined) {\n throw new RequiredError('blogEntryID','Required parameter blogEntryID was null or undefined when calling putEntityBlogEntry.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putEntityBlogEntry.');\n }\n const localVarPath = `/entities/{entityID}/blog_entries/{blogEntryID}`\n .replace(`{${\"entityID\"}}`, encodeURIComponent(String(entityID)))\n .replace(`{${\"blogEntryID\"}}`, encodeURIComponent(String(blogEntryID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body10\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update password.\n * @param {Body17} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putPasswordResetRequest(body: Body17, options: any = {}): FetchArgs {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putPasswordResetRequest.');\n }\n const localVarPath = `/password_reset_request`;\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body17\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @param {number} storyID \n * @param {Body8} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putStory(storyID: number, body: Body8, options: any = {}): FetchArgs {\n // verify required parameter 'storyID' is not null or undefined\n if (storyID === null || storyID === undefined) {\n throw new RequiredError('storyID','Required parameter storyID was null or undefined when calling putStory.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putStory.');\n }\n const localVarPath = `/stories/{storyID}`\n .replace(`{${\"storyID\"}}`, encodeURIComponent(String(storyID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body8\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update user.\n * @param {number} userID \n * @param {UpdateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putUser(userID: number, body: UpdateUserParams, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling putUser.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putUser.');\n }\n const localVarPath = `/users/{userID}`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"UpdateUserParams\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {Body19} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putUserEmail(userID: number, userEmailID: number, body: Body19, options: any = {}): FetchArgs {\n // verify required parameter 'userID' is not null or undefined\n if (userID === null || userID === undefined) {\n throw new RequiredError('userID','Required parameter userID was null or undefined when calling putUserEmail.');\n }\n // verify required parameter 'userEmailID' is not null or undefined\n if (userEmailID === null || userEmailID === undefined) {\n throw new RequiredError('userEmailID','Required parameter userEmailID was null or undefined when calling putUserEmail.');\n }\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling putUserEmail.');\n }\n const localVarPath = `/users/{userID}/email/{userEmailID}`\n .replace(`{${\"userID\"}}`, encodeURIComponent(String(userID)))\n .replace(`{${\"userEmailID\"}}`, encodeURIComponent(String(userEmailID)));\n const localVarUrlObj = url.parse(localVarPath, true);\n const localVarRequestOptions = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication BasicAuth required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n\t\t\t\t\t? configuration.apiKey(\"Authorization\")\n\t\t\t\t\t: configuration.apiKey;\n localVarHeaderParameter[\"Authorization\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n localVarUrlObj.query = Object.assign({}, localVarUrlObj.query, localVarQueryParameter, options.query);\n // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943\n delete localVarUrlObj.search;\n localVarRequestOptions.headers = Object.assign({}, localVarHeaderParameter, options.headers);\n const needsSerialization = (\"Body19\" !== \"string\") || localVarRequestOptions.headers['Content-Type'] === 'application/json';\n localVarRequestOptions.body = needsSerialization ? JSON.stringify(body || {}) : (body || \"\");\n\n return {\n url: url.format(localVarUrlObj),\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * DefaultApi - functional programming interface\n * @export\n */\nexport const DefaultApiFp = function(configuration?: Configuration) {\n return {\n /**\n * Delete comment.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteComment(commentID: number, commentableType: 'blog_entry' | 'story', options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteComment(commentID, commentableType, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary This will delete the Entity as well as the CompetitionEntity.\n * @param {number} competitionID \n * @param {number} entityID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCompetitionEntity(competitionID: number, entityID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteCompetitionEntity(competitionID, entityID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Delete entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCompetitionEntityPledge(competitionEntityPledgeID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteCompetitionEntityPledge(competitionEntityPledgeID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Delete blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteEntityBlogEntry(entityID: number, blogEntryID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteEntityBlogEntry(entityID, blogEntryID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} membershipID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteEntityMembership(membershipID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteEntityMembership(membershipID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Delete flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteFlag(flaggableID: number, flaggableType: 'story' | 'comment', commentableType?: 'story' | 'comment', options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteFlag(flaggableID, flaggableType, commentableType, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Delete like.\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteLike(likableID, likableType, commentableType, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Sign out.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteSession(options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteSession(options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} storyID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteStory(storyID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteStory(storyID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Delete user.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUser(options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteUser(options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Delete email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUserEmail(userID: number, userEmailID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).deleteUserEmail(userID, userEmailID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Request email verification link.\n * @param {number} userEmailID \n * @param {string} competitionName \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAccountVerification(userEmailID: number, competitionName: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getAccountVerification(userEmailID, competitionName, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} [entityID] \n * @param {number} [competitionID] \n * @param {number} [blogEntryID] \n * @param {number} [page] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getBlogEntries(entityID?: number, competitionID?: number, blogEntryID?: number, page?: number, authorization?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getBlogEntries(entityID, competitionID, blogEntryID, page, authorization, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve user's calculator answers from server.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCalculatorAnswers(userID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCalculatorAnswers(userID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary List users in order of footprint results.\n * @param {'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count'} [order] \n * @param {string} [page] 1-based index for paginated results.\n * @param {string} [pageSize] Range of 20-100 silently enforced.\n * @param {string} [city] \n * @param {string} [state] \n * @param {string} [zipcode] \n * @param {string} [country] \n * @param {string} [inputIncome] \n * @param {string} [inputSize] \n * @param {string} [includeSeedUsers] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCalculatorResultLeaders(order?: 'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count', page?: string, pageSize?: string, city?: string, state?: string, zipcode?: string, country?: string, inputIncome?: string, inputSize?: string, includeSeedUsers?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCalculatorResultLeaders(order, page, pageSize, city, state, zipcode, country, inputIncome, inputSize, includeSeedUsers, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getComments(commentableID: number, commentableType: 'story' | 'blog_entry', page?: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getComments(commentableID, commentableType, page, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve competition dashboard data.\n * @param {string} competitionName \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionDashboard(competitionName: string, authorization?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionDashboard(competitionName, authorization, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve a list of available teams or organizations.\n * @param {number} competitionID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionEntities(competitionID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionEntities(competitionID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionEntity(competitionID: number, entityID: number, authorization?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionEntity(competitionID, entityID, authorization, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve competition pledge..\n * @param {number} competitionPledgeID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionPledge(competitionPledgeID: number, authorization?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionPledge(competitionPledgeID, authorization, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} [userID] \n * @param {number} [entityID] \n * @param {number} [competitionPledgeID] \n * @param {number} [storyID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionStories(competitionID: number, userID?: number, entityID?: number, competitionPledgeID?: number, storyID?: number, page?: number, term?: string, authorization?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionStories(competitionID, userID, entityID, competitionPledgeID, storyID, page, term, authorization, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {number} userID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUser(competitionID: number, userID: number, authorization?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionUser(competitionID, userID, authorization, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} [entityID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [sort] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUserScores(competitionID: number, entityID?: number, page?: number, term?: string, sort?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionUserScores(competitionID, entityID, page, term, sort, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {string} email \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUsers(competitionID: number, email: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getCompetitionUsers(competitionID, email, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Generate development/QA data.\n * @param {string} [number] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getGenerate(number?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getGenerate(number, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Get summary of API status\n * @param {string} [include] Comma separated string of response objects to include.\n * @param {string} [competitionName] Name of competition to return CompetitionUserDashboard for.\n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMe(include?: string, competitionName?: string, userPledgeDomain?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getMe(include, competitionName, userPledgeDomain, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Get summary of API status\n * @param {string} [checks] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getStatus(checks?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getStatus(checks, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Download Swagger spec.\n * @param {string} [pat] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSwagger(pat?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getSwagger(pat, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve user.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUser(userID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getUser(userID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Retrieve list of use pledges.\n * @param {number} userID \n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserPledges(userID: number, userPledgeDomain?: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).getUserPledges(userID, userPledgeDomain, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Verify email address.\n * @param {string} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postAccountVerification(body: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postAccountVerification(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {Body} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postComments(commentableID: number, commentableType: 'story' | 'blog_entry', body: Body, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postComments(commentableID, commentableType, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {Body2} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntities(competitionID: number, body: Body2, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postCompetitionEntities(competitionID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} entityID \n * @param {number} competitionID \n * @param {Body4} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntityMemberships(entityID: number, competitionID: number, body: Body4, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postCompetitionEntityMemberships(entityID, competitionID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Create entity specific information for competition pledge.\n * @param {Body12} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntityPledges(body: Body12, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postCompetitionEntityPledges(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Create points for a CompetitionPledge\n * @param {number} competitionPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionPledgePoints(competitionPledgeID: number, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postCompetitionPledgePoints(competitionPledgeID, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {Body5} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionStories(competitionID: number, body: Body5, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postCompetitionStories(competitionID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} entityID \n * @param {Body9} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityBlogEntries(entityID: number, body: Body9, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postEntityBlogEntries(entityID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} membershipID \n * @param {Body14} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityMembershipLevel(membershipID: number, body: Body14, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postEntityMembershipLevel(membershipID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} membershipID \n * @param {Body15} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityMembershipStatus(membershipID: number, body: Body15, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postEntityMembershipStatus(membershipID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Change owner of entity.\n * @param {number} entityID \n * @param {Body11} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityOwner(entityID: number, body: Body11, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postEntityOwner(entityID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Create flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {Body6} body \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postFlag(flaggableID: number, flaggableType: 'story' | 'comment', body: Body6, commentableType?: 'story' | 'comment', options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postFlag(flaggableID, flaggableType, body, commentableType, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Post image to Google Cloud Storage.\n * @param {any} image Limited to 5 mb. Must be jpg, gif, or png.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postImage(image: any, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postImage(image, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Mutate image server side.\n * @param {any} image Limited to 10 mb. Must be jpg, gif, or png.\n * @param {string} mutation See \\"#/definitions/ImageMutation\\"\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postImageMutation(image: any, mutation: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postImageMutation(image, mutation, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Invite user to join competition.\n * @param {string} competitionName \n * @param {Body7} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postInvite(competitionName: string, body: Body7, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postInvite(competitionName, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Join\n * @param {CompetitionJoinParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postJoin(body: CompetitionJoinParams, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postJoin(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Create like\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postLike(likableID, likableType, commentableType, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Fetch open graph data for resource\n * @param {Array} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postOpenGraph(body: Array, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postOpenGraph(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Request a password reset email\n * @param {string} competitionName \n * @param {Body16} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postPasswordResetRequest(competitionName: string, body: Body16, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postPasswordResetRequest(competitionName, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Save qualtrics ID to CompetitionUser.\n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postQualtricsID(body: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postQualtricsID(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Sign in.\n * @param {CreateSessionParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postSession(body: CreateSessionParams, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postSession(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Generate invite, verification, and password reset tokens for testing.\n * @param {PostTokensBody} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postTokens(body: PostTokensBody, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postTokens(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Post footprint\n * @param {number} competitionId \n * @param {Body18} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserCompetitionFootprint(competitionId: number, body: Body18, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postUserCompetitionFootprint(competitionId, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Delete user.\n * @param {number} userID \n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserDelete(userID: number, body: string, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postUserDelete(userID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Add email to account.\n * @param {number} userID \n * @param {PostUserEmailParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserEmail(userID: number, body: PostUserEmailParams, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postUserEmail(userID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Sign up.\n * @param {CreateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUsers(body: CreateUserParams, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).postUsers(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Update user's calculator answers.\n * @param {number} userID \n * @param {CalculatorAnswers} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCalculatorAnswers(userID: number, body: CalculatorAnswers, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putCalculatorAnswers(userID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * Update comment content.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {Body1} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putComment(commentID: number, commentableType: 'blog_entry' | 'story', body: Body1, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putComment(commentID, commentableType, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {Body3} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCompetitionEntity(competitionID: number, entityID: number, body: Body3, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putCompetitionEntity(competitionID, entityID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Update entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {Body13} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCompetitionEntityPledge(competitionEntityPledgeID: number, body: Body13, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putCompetitionEntityPledge(competitionEntityPledgeID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Update blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {Body10} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putEntityBlogEntry(entityID: number, blogEntryID: number, body: Body10, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putEntityBlogEntry(entityID, blogEntryID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Update password.\n * @param {Body17} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putPasswordResetRequest(body: Body17, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putPasswordResetRequest(body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @param {number} storyID \n * @param {Body8} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putStory(storyID: number, body: Body8, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putStory(storyID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Update user.\n * @param {number} userID \n * @param {UpdateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putUser(userID: number, body: UpdateUserParams, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putUser(userID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n /**\n * \n * @summary Update email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {Body19} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putUserEmail(userID: number, userEmailID: number, body: Body19, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise {\n const localVarFetchArgs = DefaultApiFetchParamCreator(configuration).putUserEmail(userID, userEmailID, body, options);\n return (fetch: FetchAPI = portableFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n if (response.status >= 200 && response.status < 300) {\n return response.json();\n } else {\n throw response;\n }\n });\n };\n },\n }\n};\n\n/**\n * DefaultApi - factory interface\n * @export\n */\nexport const DefaultApiFactory = function (configuration?: Configuration, fetch?: FetchAPI, basePath?: string) {\n return {\n /**\n * Delete comment.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteComment(commentID: number, commentableType: 'blog_entry' | 'story', options?: any) {\n return DefaultApiFp(configuration).deleteComment(commentID, commentableType, options)(fetch, basePath);\n },\n /**\n * \n * @summary This will delete the Entity as well as the CompetitionEntity.\n * @param {number} competitionID \n * @param {number} entityID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCompetitionEntity(competitionID: number, entityID: number, options?: any) {\n return DefaultApiFp(configuration).deleteCompetitionEntity(competitionID, entityID, options)(fetch, basePath);\n },\n /**\n * \n * @summary Delete entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCompetitionEntityPledge(competitionEntityPledgeID: number, options?: any) {\n return DefaultApiFp(configuration).deleteCompetitionEntityPledge(competitionEntityPledgeID, options)(fetch, basePath);\n },\n /**\n * \n * @summary Delete blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteEntityBlogEntry(entityID: number, blogEntryID: number, options?: any) {\n return DefaultApiFp(configuration).deleteEntityBlogEntry(entityID, blogEntryID, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} membershipID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteEntityMembership(membershipID: number, options?: any) {\n return DefaultApiFp(configuration).deleteEntityMembership(membershipID, options)(fetch, basePath);\n },\n /**\n * Delete flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteFlag(flaggableID: number, flaggableType: 'story' | 'comment', commentableType?: 'story' | 'comment', options?: any) {\n return DefaultApiFp(configuration).deleteFlag(flaggableID, flaggableType, commentableType, options)(fetch, basePath);\n },\n /**\n * Delete like.\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options?: any) {\n return DefaultApiFp(configuration).deleteLike(likableID, likableType, commentableType, options)(fetch, basePath);\n },\n /**\n * \n * @summary Sign out.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteSession(options?: any) {\n return DefaultApiFp(configuration).deleteSession(options)(fetch, basePath);\n },\n /**\n * \n * @param {number} storyID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteStory(storyID: number, options?: any) {\n return DefaultApiFp(configuration).deleteStory(storyID, options)(fetch, basePath);\n },\n /**\n * \n * @summary Delete user.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUser(options?: any) {\n return DefaultApiFp(configuration).deleteUser(options)(fetch, basePath);\n },\n /**\n * \n * @summary Delete email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUserEmail(userID: number, userEmailID: number, options?: any) {\n return DefaultApiFp(configuration).deleteUserEmail(userID, userEmailID, options)(fetch, basePath);\n },\n /**\n * \n * @summary Request email verification link.\n * @param {number} userEmailID \n * @param {string} competitionName \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAccountVerification(userEmailID: number, competitionName: string, options?: any) {\n return DefaultApiFp(configuration).getAccountVerification(userEmailID, competitionName, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} [entityID] \n * @param {number} [competitionID] \n * @param {number} [blogEntryID] \n * @param {number} [page] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getBlogEntries(entityID?: number, competitionID?: number, blogEntryID?: number, page?: number, authorization?: string, options?: any) {\n return DefaultApiFp(configuration).getBlogEntries(entityID, competitionID, blogEntryID, page, authorization, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve user's calculator answers from server.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCalculatorAnswers(userID: number, options?: any) {\n return DefaultApiFp(configuration).getCalculatorAnswers(userID, options)(fetch, basePath);\n },\n /**\n * \n * @summary List users in order of footprint results.\n * @param {'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count'} [order] \n * @param {string} [page] 1-based index for paginated results.\n * @param {string} [pageSize] Range of 20-100 silently enforced.\n * @param {string} [city] \n * @param {string} [state] \n * @param {string} [zipcode] \n * @param {string} [country] \n * @param {string} [inputIncome] \n * @param {string} [inputSize] \n * @param {string} [includeSeedUsers] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCalculatorResultLeaders(order?: 'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count', page?: string, pageSize?: string, city?: string, state?: string, zipcode?: string, country?: string, inputIncome?: string, inputSize?: string, includeSeedUsers?: string, options?: any) {\n return DefaultApiFp(configuration).getCalculatorResultLeaders(order, page, pageSize, city, state, zipcode, country, inputIncome, inputSize, includeSeedUsers, options)(fetch, basePath);\n },\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getComments(commentableID: number, commentableType: 'story' | 'blog_entry', page?: number, options?: any) {\n return DefaultApiFp(configuration).getComments(commentableID, commentableType, page, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve competition dashboard data.\n * @param {string} competitionName \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionDashboard(competitionName: string, authorization?: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionDashboard(competitionName, authorization, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve a list of available teams or organizations.\n * @param {number} competitionID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionEntities(competitionID: number, options?: any) {\n return DefaultApiFp(configuration).getCompetitionEntities(competitionID, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionEntity(competitionID: number, entityID: number, authorization?: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionEntity(competitionID, entityID, authorization, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve competition pledge..\n * @param {number} competitionPledgeID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionPledge(competitionPledgeID: number, authorization?: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionPledge(competitionPledgeID, authorization, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} [userID] \n * @param {number} [entityID] \n * @param {number} [competitionPledgeID] \n * @param {number} [storyID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionStories(competitionID: number, userID?: number, entityID?: number, competitionPledgeID?: number, storyID?: number, page?: number, term?: string, authorization?: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionStories(competitionID, userID, entityID, competitionPledgeID, storyID, page, term, authorization, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {number} userID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUser(competitionID: number, userID: number, authorization?: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionUser(competitionID, userID, authorization, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} [entityID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [sort] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUserScores(competitionID: number, entityID?: number, page?: number, term?: string, sort?: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionUserScores(competitionID, entityID, page, term, sort, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {string} email \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCompetitionUsers(competitionID: number, email: string, options?: any) {\n return DefaultApiFp(configuration).getCompetitionUsers(competitionID, email, options)(fetch, basePath);\n },\n /**\n * \n * @summary Generate development/QA data.\n * @param {string} [number] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getGenerate(number?: string, options?: any) {\n return DefaultApiFp(configuration).getGenerate(number, options)(fetch, basePath);\n },\n /**\n * \n * @summary Get summary of API status\n * @param {string} [include] Comma separated string of response objects to include.\n * @param {string} [competitionName] Name of competition to return CompetitionUserDashboard for.\n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMe(include?: string, competitionName?: string, userPledgeDomain?: string, options?: any) {\n return DefaultApiFp(configuration).getMe(include, competitionName, userPledgeDomain, options)(fetch, basePath);\n },\n /**\n * \n * @summary Get summary of API status\n * @param {string} [checks] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getStatus(checks?: string, options?: any) {\n return DefaultApiFp(configuration).getStatus(checks, options)(fetch, basePath);\n },\n /**\n * \n * @summary Download Swagger spec.\n * @param {string} [pat] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSwagger(pat?: string, options?: any) {\n return DefaultApiFp(configuration).getSwagger(pat, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve user.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUser(userID: number, options?: any) {\n return DefaultApiFp(configuration).getUser(userID, options)(fetch, basePath);\n },\n /**\n * \n * @summary Retrieve list of use pledges.\n * @param {number} userID \n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserPledges(userID: number, userPledgeDomain?: string, options?: any) {\n return DefaultApiFp(configuration).getUserPledges(userID, userPledgeDomain, options)(fetch, basePath);\n },\n /**\n * \n * @summary Verify email address.\n * @param {string} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postAccountVerification(body: string, options?: any) {\n return DefaultApiFp(configuration).postAccountVerification(body, options)(fetch, basePath);\n },\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {Body} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postComments(commentableID: number, commentableType: 'story' | 'blog_entry', body: Body, options?: any) {\n return DefaultApiFp(configuration).postComments(commentableID, commentableType, body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} competitionID \n * @param {Body2} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntities(competitionID: number, body: Body2, options?: any) {\n return DefaultApiFp(configuration).postCompetitionEntities(competitionID, body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} entityID \n * @param {number} competitionID \n * @param {Body4} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntityMemberships(entityID: number, competitionID: number, body: Body4, options?: any) {\n return DefaultApiFp(configuration).postCompetitionEntityMemberships(entityID, competitionID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Create entity specific information for competition pledge.\n * @param {Body12} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionEntityPledges(body: Body12, options?: any) {\n return DefaultApiFp(configuration).postCompetitionEntityPledges(body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Create points for a CompetitionPledge\n * @param {number} competitionPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionPledgePoints(competitionPledgeID: number, options?: any) {\n return DefaultApiFp(configuration).postCompetitionPledgePoints(competitionPledgeID, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} competitionID \n * @param {Body5} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postCompetitionStories(competitionID: number, body: Body5, options?: any) {\n return DefaultApiFp(configuration).postCompetitionStories(competitionID, body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} entityID \n * @param {Body9} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityBlogEntries(entityID: number, body: Body9, options?: any) {\n return DefaultApiFp(configuration).postEntityBlogEntries(entityID, body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} membershipID \n * @param {Body14} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityMembershipLevel(membershipID: number, body: Body14, options?: any) {\n return DefaultApiFp(configuration).postEntityMembershipLevel(membershipID, body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} membershipID \n * @param {Body15} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityMembershipStatus(membershipID: number, body: Body15, options?: any) {\n return DefaultApiFp(configuration).postEntityMembershipStatus(membershipID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Change owner of entity.\n * @param {number} entityID \n * @param {Body11} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postEntityOwner(entityID: number, body: Body11, options?: any) {\n return DefaultApiFp(configuration).postEntityOwner(entityID, body, options)(fetch, basePath);\n },\n /**\n * Create flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {Body6} body \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postFlag(flaggableID: number, flaggableType: 'story' | 'comment', body: Body6, commentableType?: 'story' | 'comment', options?: any) {\n return DefaultApiFp(configuration).postFlag(flaggableID, flaggableType, body, commentableType, options)(fetch, basePath);\n },\n /**\n * \n * @summary Post image to Google Cloud Storage.\n * @param {any} image Limited to 5 mb. Must be jpg, gif, or png.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postImage(image: any, options?: any) {\n return DefaultApiFp(configuration).postImage(image, options)(fetch, basePath);\n },\n /**\n * \n * @summary Mutate image server side.\n * @param {any} image Limited to 10 mb. Must be jpg, gif, or png.\n * @param {string} mutation See \\"#/definitions/ImageMutation\\"\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postImageMutation(image: any, mutation: string, options?: any) {\n return DefaultApiFp(configuration).postImageMutation(image, mutation, options)(fetch, basePath);\n },\n /**\n * \n * @summary Invite user to join competition.\n * @param {string} competitionName \n * @param {Body7} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postInvite(competitionName: string, body: Body7, options?: any) {\n return DefaultApiFp(configuration).postInvite(competitionName, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Join\n * @param {CompetitionJoinParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postJoin(body: CompetitionJoinParams, options?: any) {\n return DefaultApiFp(configuration).postJoin(body, options)(fetch, basePath);\n },\n /**\n * Create like\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options?: any) {\n return DefaultApiFp(configuration).postLike(likableID, likableType, commentableType, options)(fetch, basePath);\n },\n /**\n * \n * @summary Fetch open graph data for resource\n * @param {Array} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postOpenGraph(body: Array, options?: any) {\n return DefaultApiFp(configuration).postOpenGraph(body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Request a password reset email\n * @param {string} competitionName \n * @param {Body16} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postPasswordResetRequest(competitionName: string, body: Body16, options?: any) {\n return DefaultApiFp(configuration).postPasswordResetRequest(competitionName, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Save qualtrics ID to CompetitionUser.\n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postQualtricsID(body: string, options?: any) {\n return DefaultApiFp(configuration).postQualtricsID(body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Sign in.\n * @param {CreateSessionParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postSession(body: CreateSessionParams, options?: any) {\n return DefaultApiFp(configuration).postSession(body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Generate invite, verification, and password reset tokens for testing.\n * @param {PostTokensBody} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postTokens(body: PostTokensBody, options?: any) {\n return DefaultApiFp(configuration).postTokens(body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Post footprint\n * @param {number} competitionId \n * @param {Body18} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserCompetitionFootprint(competitionId: number, body: Body18, options?: any) {\n return DefaultApiFp(configuration).postUserCompetitionFootprint(competitionId, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Delete user.\n * @param {number} userID \n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserDelete(userID: number, body: string, options?: any) {\n return DefaultApiFp(configuration).postUserDelete(userID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Add email to account.\n * @param {number} userID \n * @param {PostUserEmailParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUserEmail(userID: number, body: PostUserEmailParams, options?: any) {\n return DefaultApiFp(configuration).postUserEmail(userID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Sign up.\n * @param {CreateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n postUsers(body: CreateUserParams, options?: any) {\n return DefaultApiFp(configuration).postUsers(body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Update user's calculator answers.\n * @param {number} userID \n * @param {CalculatorAnswers} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCalculatorAnswers(userID: number, body: CalculatorAnswers, options?: any) {\n return DefaultApiFp(configuration).putCalculatorAnswers(userID, body, options)(fetch, basePath);\n },\n /**\n * Update comment content.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {Body1} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putComment(commentID: number, commentableType: 'blog_entry' | 'story', body: Body1, options?: any) {\n return DefaultApiFp(configuration).putComment(commentID, commentableType, body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {Body3} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCompetitionEntity(competitionID: number, entityID: number, body: Body3, options?: any) {\n return DefaultApiFp(configuration).putCompetitionEntity(competitionID, entityID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Update entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {Body13} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putCompetitionEntityPledge(competitionEntityPledgeID: number, body: Body13, options?: any) {\n return DefaultApiFp(configuration).putCompetitionEntityPledge(competitionEntityPledgeID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Update blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {Body10} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putEntityBlogEntry(entityID: number, blogEntryID: number, body: Body10, options?: any) {\n return DefaultApiFp(configuration).putEntityBlogEntry(entityID, blogEntryID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Update password.\n * @param {Body17} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putPasswordResetRequest(body: Body17, options?: any) {\n return DefaultApiFp(configuration).putPasswordResetRequest(body, options)(fetch, basePath);\n },\n /**\n * \n * @param {number} storyID \n * @param {Body8} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putStory(storyID: number, body: Body8, options?: any) {\n return DefaultApiFp(configuration).putStory(storyID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Update user.\n * @param {number} userID \n * @param {UpdateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putUser(userID: number, body: UpdateUserParams, options?: any) {\n return DefaultApiFp(configuration).putUser(userID, body, options)(fetch, basePath);\n },\n /**\n * \n * @summary Update email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {Body19} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n putUserEmail(userID: number, userEmailID: number, body: Body19, options?: any) {\n return DefaultApiFp(configuration).putUserEmail(userID, userEmailID, body, options)(fetch, basePath);\n },\n };\n};\n\n/**\n * DefaultApi - object-oriented interface\n * @export\n * @class DefaultApi\n * @extends {BaseAPI}\n */\nexport class DefaultApi extends BaseAPI {\n /**\n * Delete comment.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteComment(commentID: number, commentableType: 'blog_entry' | 'story', options?: any) {\n return DefaultApiFp(this.configuration).deleteComment(commentID, commentableType, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary This will delete the Entity as well as the CompetitionEntity.\n * @param {number} competitionID \n * @param {number} entityID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteCompetitionEntity(competitionID: number, entityID: number, options?: any) {\n return DefaultApiFp(this.configuration).deleteCompetitionEntity(competitionID, entityID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Delete entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteCompetitionEntityPledge(competitionEntityPledgeID: number, options?: any) {\n return DefaultApiFp(this.configuration).deleteCompetitionEntityPledge(competitionEntityPledgeID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Delete blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteEntityBlogEntry(entityID: number, blogEntryID: number, options?: any) {\n return DefaultApiFp(this.configuration).deleteEntityBlogEntry(entityID, blogEntryID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} membershipID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteEntityMembership(membershipID: number, options?: any) {\n return DefaultApiFp(this.configuration).deleteEntityMembership(membershipID, options)(this.fetch, this.basePath);\n }\n\n /**\n * Delete flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteFlag(flaggableID: number, flaggableType: 'story' | 'comment', commentableType?: 'story' | 'comment', options?: any) {\n return DefaultApiFp(this.configuration).deleteFlag(flaggableID, flaggableType, commentableType, options)(this.fetch, this.basePath);\n }\n\n /**\n * Delete like.\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options?: any) {\n return DefaultApiFp(this.configuration).deleteLike(likableID, likableType, commentableType, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Sign out.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteSession(options?: any) {\n return DefaultApiFp(this.configuration).deleteSession(options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} storyID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteStory(storyID: number, options?: any) {\n return DefaultApiFp(this.configuration).deleteStory(storyID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Delete user.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteUser(options?: any) {\n return DefaultApiFp(this.configuration).deleteUser(options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Delete email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public deleteUserEmail(userID: number, userEmailID: number, options?: any) {\n return DefaultApiFp(this.configuration).deleteUserEmail(userID, userEmailID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Request email verification link.\n * @param {number} userEmailID \n * @param {string} competitionName \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getAccountVerification(userEmailID: number, competitionName: string, options?: any) {\n return DefaultApiFp(this.configuration).getAccountVerification(userEmailID, competitionName, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} [entityID] \n * @param {number} [competitionID] \n * @param {number} [blogEntryID] \n * @param {number} [page] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getBlogEntries(entityID?: number, competitionID?: number, blogEntryID?: number, page?: number, authorization?: string, options?: any) {\n return DefaultApiFp(this.configuration).getBlogEntries(entityID, competitionID, blogEntryID, page, authorization, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve user's calculator answers from server.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCalculatorAnswers(userID: number, options?: any) {\n return DefaultApiFp(this.configuration).getCalculatorAnswers(userID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary List users in order of footprint results.\n * @param {'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count'} [order] \n * @param {string} [page] 1-based index for paginated results.\n * @param {string} [pageSize] Range of 20-100 silently enforced.\n * @param {string} [city] \n * @param {string} [state] \n * @param {string} [zipcode] \n * @param {string} [country] \n * @param {string} [inputIncome] \n * @param {string} [inputSize] \n * @param {string} [includeSeedUsers] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCalculatorResultLeaders(order?: 'result_transport_total' | '-result_transport_total' | 'result_housing_total' | '-result_housing_total' | 'result_food_total' | '-result_food_total' | 'result_grand_total' | '-result_grand_total' | 'result_goods_total' | '-result_goods_total' | 'result_services_total' | '-result_services_total' | 'pledge_count' | '-pledge_count', page?: string, pageSize?: string, city?: string, state?: string, zipcode?: string, country?: string, inputIncome?: string, inputSize?: string, includeSeedUsers?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCalculatorResultLeaders(order, page, pageSize, city, state, zipcode, country, inputIncome, inputSize, includeSeedUsers, options)(this.fetch, this.basePath);\n }\n\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getComments(commentableID: number, commentableType: 'story' | 'blog_entry', page?: number, options?: any) {\n return DefaultApiFp(this.configuration).getComments(commentableID, commentableType, page, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve competition dashboard data.\n * @param {string} competitionName \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionDashboard(competitionName: string, authorization?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionDashboard(competitionName, authorization, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve a list of available teams or organizations.\n * @param {number} competitionID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionEntities(competitionID: number, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionEntities(competitionID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionEntity(competitionID: number, entityID: number, authorization?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionEntity(competitionID, entityID, authorization, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve competition pledge..\n * @param {number} competitionPledgeID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionPledge(competitionPledgeID: number, authorization?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionPledge(competitionPledgeID, authorization, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} competitionID \n * @param {number} [userID] \n * @param {number} [entityID] \n * @param {number} [competitionPledgeID] \n * @param {number} [storyID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionStories(competitionID: number, userID?: number, entityID?: number, competitionPledgeID?: number, storyID?: number, page?: number, term?: string, authorization?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionStories(competitionID, userID, entityID, competitionPledgeID, storyID, page, term, authorization, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {number} userID \n * @param {string} [authorization] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionUser(competitionID: number, userID: number, authorization?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionUser(competitionID, userID, authorization, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} competitionID \n * @param {number} [entityID] \n * @param {number} [page] \n * @param {string} [term] \n * @param {string} [sort] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionUserScores(competitionID: number, entityID?: number, page?: number, term?: string, sort?: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionUserScores(competitionID, entityID, page, term, sort, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve competition user profile.\n * @param {number} competitionID \n * @param {string} email \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getCompetitionUsers(competitionID: number, email: string, options?: any) {\n return DefaultApiFp(this.configuration).getCompetitionUsers(competitionID, email, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Generate development/QA data.\n * @param {string} [number] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getGenerate(number?: string, options?: any) {\n return DefaultApiFp(this.configuration).getGenerate(number, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Get summary of API status\n * @param {string} [include] Comma separated string of response objects to include.\n * @param {string} [competitionName] Name of competition to return CompetitionUserDashboard for.\n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getMe(include?: string, competitionName?: string, userPledgeDomain?: string, options?: any) {\n return DefaultApiFp(this.configuration).getMe(include, competitionName, userPledgeDomain, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Get summary of API status\n * @param {string} [checks] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getStatus(checks?: string, options?: any) {\n return DefaultApiFp(this.configuration).getStatus(checks, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Download Swagger spec.\n * @param {string} [pat] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getSwagger(pat?: string, options?: any) {\n return DefaultApiFp(this.configuration).getSwagger(pat, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve user.\n * @param {number} userID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getUser(userID: number, options?: any) {\n return DefaultApiFp(this.configuration).getUser(userID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Retrieve list of use pledges.\n * @param {number} userID \n * @param {string} [userPledgeDomain] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public getUserPledges(userID: number, userPledgeDomain?: string, options?: any) {\n return DefaultApiFp(this.configuration).getUserPledges(userID, userPledgeDomain, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Verify email address.\n * @param {string} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postAccountVerification(body: string, options?: any) {\n return DefaultApiFp(this.configuration).postAccountVerification(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * Retrieve comments for a story or blog entry.\n * @param {number} commentableID \n * @param {'story' | 'blog_entry'} commentableType \n * @param {Body} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postComments(commentableID: number, commentableType: 'story' | 'blog_entry', body: Body, options?: any) {\n return DefaultApiFp(this.configuration).postComments(commentableID, commentableType, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} competitionID \n * @param {Body2} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postCompetitionEntities(competitionID: number, body: Body2, options?: any) {\n return DefaultApiFp(this.configuration).postCompetitionEntities(competitionID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} entityID \n * @param {number} competitionID \n * @param {Body4} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postCompetitionEntityMemberships(entityID: number, competitionID: number, body: Body4, options?: any) {\n return DefaultApiFp(this.configuration).postCompetitionEntityMemberships(entityID, competitionID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Create entity specific information for competition pledge.\n * @param {Body12} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postCompetitionEntityPledges(body: Body12, options?: any) {\n return DefaultApiFp(this.configuration).postCompetitionEntityPledges(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Create points for a CompetitionPledge\n * @param {number} competitionPledgeID \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postCompetitionPledgePoints(competitionPledgeID: number, options?: any) {\n return DefaultApiFp(this.configuration).postCompetitionPledgePoints(competitionPledgeID, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} competitionID \n * @param {Body5} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postCompetitionStories(competitionID: number, body: Body5, options?: any) {\n return DefaultApiFp(this.configuration).postCompetitionStories(competitionID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} entityID \n * @param {Body9} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postEntityBlogEntries(entityID: number, body: Body9, options?: any) {\n return DefaultApiFp(this.configuration).postEntityBlogEntries(entityID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} membershipID \n * @param {Body14} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postEntityMembershipLevel(membershipID: number, body: Body14, options?: any) {\n return DefaultApiFp(this.configuration).postEntityMembershipLevel(membershipID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} membershipID \n * @param {Body15} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postEntityMembershipStatus(membershipID: number, body: Body15, options?: any) {\n return DefaultApiFp(this.configuration).postEntityMembershipStatus(membershipID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Change owner of entity.\n * @param {number} entityID \n * @param {Body11} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postEntityOwner(entityID: number, body: Body11, options?: any) {\n return DefaultApiFp(this.configuration).postEntityOwner(entityID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * Create flag.\n * @param {number} flaggableID \n * @param {'story' | 'comment'} flaggableType \n * @param {Body6} body \n * @param {'story' | 'comment'} [commentableType] If flaggable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postFlag(flaggableID: number, flaggableType: 'story' | 'comment', body: Body6, commentableType?: 'story' | 'comment', options?: any) {\n return DefaultApiFp(this.configuration).postFlag(flaggableID, flaggableType, body, commentableType, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Post image to Google Cloud Storage.\n * @param {any} image Limited to 5 mb. Must be jpg, gif, or png.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postImage(image: any, options?: any) {\n return DefaultApiFp(this.configuration).postImage(image, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Mutate image server side.\n * @param {any} image Limited to 10 mb. Must be jpg, gif, or png.\n * @param {string} mutation See \\"#/definitions/ImageMutation\\"\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postImageMutation(image: any, mutation: string, options?: any) {\n return DefaultApiFp(this.configuration).postImageMutation(image, mutation, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Invite user to join competition.\n * @param {string} competitionName \n * @param {Body7} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postInvite(competitionName: string, body: Body7, options?: any) {\n return DefaultApiFp(this.configuration).postInvite(competitionName, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Join\n * @param {CompetitionJoinParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postJoin(body: CompetitionJoinParams, options?: any) {\n return DefaultApiFp(this.configuration).postJoin(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * Create like\n * @param {number} likableID \n * @param {'story' | 'blog_entry' | 'comment'} likableType \n * @param {'story' | 'blog_entry'} [commentableType] If likable is a comment, pass commentableType here.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postLike(likableID: number, likableType: 'story' | 'blog_entry' | 'comment', commentableType?: 'story' | 'blog_entry', options?: any) {\n return DefaultApiFp(this.configuration).postLike(likableID, likableType, commentableType, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Fetch open graph data for resource\n * @param {Array} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postOpenGraph(body: Array, options?: any) {\n return DefaultApiFp(this.configuration).postOpenGraph(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Request a password reset email\n * @param {string} competitionName \n * @param {Body16} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postPasswordResetRequest(competitionName: string, body: Body16, options?: any) {\n return DefaultApiFp(this.configuration).postPasswordResetRequest(competitionName, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Save qualtrics ID to CompetitionUser.\n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postQualtricsID(body: string, options?: any) {\n return DefaultApiFp(this.configuration).postQualtricsID(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Sign in.\n * @param {CreateSessionParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postSession(body: CreateSessionParams, options?: any) {\n return DefaultApiFp(this.configuration).postSession(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Generate invite, verification, and password reset tokens for testing.\n * @param {PostTokensBody} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postTokens(body: PostTokensBody, options?: any) {\n return DefaultApiFp(this.configuration).postTokens(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Post footprint\n * @param {number} competitionId \n * @param {Body18} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postUserCompetitionFootprint(competitionId: number, body: Body18, options?: any) {\n return DefaultApiFp(this.configuration).postUserCompetitionFootprint(competitionId, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Delete user.\n * @param {number} userID \n * @param {string} body Password.\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postUserDelete(userID: number, body: string, options?: any) {\n return DefaultApiFp(this.configuration).postUserDelete(userID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Add email to account.\n * @param {number} userID \n * @param {PostUserEmailParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postUserEmail(userID: number, body: PostUserEmailParams, options?: any) {\n return DefaultApiFp(this.configuration).postUserEmail(userID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Sign up.\n * @param {CreateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public postUsers(body: CreateUserParams, options?: any) {\n return DefaultApiFp(this.configuration).postUsers(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Update user's calculator answers.\n * @param {number} userID \n * @param {CalculatorAnswers} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putCalculatorAnswers(userID: number, body: CalculatorAnswers, options?: any) {\n return DefaultApiFp(this.configuration).putCalculatorAnswers(userID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * Update comment content.\n * @param {number} commentID \n * @param {'blog_entry' | 'story'} commentableType \n * @param {Body1} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putComment(commentID: number, commentableType: 'blog_entry' | 'story', body: Body1, options?: any) {\n return DefaultApiFp(this.configuration).putComment(commentID, commentableType, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} competitionID \n * @param {number} entityID \n * @param {Body3} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putCompetitionEntity(competitionID: number, entityID: number, body: Body3, options?: any) {\n return DefaultApiFp(this.configuration).putCompetitionEntity(competitionID, entityID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Update entity specific information for competition pledge.\n * @param {number} competitionEntityPledgeID \n * @param {Body13} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putCompetitionEntityPledge(competitionEntityPledgeID: number, body: Body13, options?: any) {\n return DefaultApiFp(this.configuration).putCompetitionEntityPledge(competitionEntityPledgeID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Update blog entry for entity.\n * @param {number} entityID \n * @param {number} blogEntryID \n * @param {Body10} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putEntityBlogEntry(entityID: number, blogEntryID: number, body: Body10, options?: any) {\n return DefaultApiFp(this.configuration).putEntityBlogEntry(entityID, blogEntryID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Update password.\n * @param {Body17} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putPasswordResetRequest(body: Body17, options?: any) {\n return DefaultApiFp(this.configuration).putPasswordResetRequest(body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @param {number} storyID \n * @param {Body8} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putStory(storyID: number, body: Body8, options?: any) {\n return DefaultApiFp(this.configuration).putStory(storyID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Update user.\n * @param {number} userID \n * @param {UpdateUserParams} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putUser(userID: number, body: UpdateUserParams, options?: any) {\n return DefaultApiFp(this.configuration).putUser(userID, body, options)(this.fetch, this.basePath);\n }\n\n /**\n * \n * @summary Update email associated with account.\n * @param {number} userID \n * @param {number} userEmailID \n * @param {Body19} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof DefaultApi\n */\n public putUserEmail(userID: number, userEmailID: number, body: Body19, options?: any) {\n return DefaultApiFp(this.configuration).putUserEmail(userID, userEmailID, body, options)(this.fetch, this.basePath);\n }\n\n}\n\n","// tslint:disable\n/**\n * Cool Climate Competition API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n\nexport interface ConfigurationParameters {\n apiKey?: string | ((name: string) => string);\n username?: string;\n password?: string;\n accessToken?: string | ((name: string, scopes?: string[]) => string);\n basePath?: string;\n}\n\nexport class Configuration {\n /**\n * parameter for apiKey security\n * @param name security name\n * @memberof Configuration\n */\n apiKey?: string | ((name: string) => string);\n /**\n * parameter for basic security\n * \n * @type {string}\n * @memberof Configuration\n */\n username?: string;\n /**\n * parameter for basic security\n * \n * @type {string}\n * @memberof Configuration\n */\n password?: string;\n /**\n * parameter for oauth2 security\n * @param name security name\n * @param scopes oauth2 scope\n * @memberof Configuration\n */\n accessToken?: string | ((name: string, scopes?: string[]) => string);\n /**\n * override base path\n * \n * @type {string}\n * @memberof Configuration\n */\n basePath?: string;\n\n constructor(param: ConfigurationParameters = {}) {\n this.apiKey = param.apiKey;\n this.username = param.username;\n this.password = param.password;\n this.accessToken = param.accessToken;\n this.basePath = param.basePath;\n }\n}\n","import { values, keys, flatMap, has } from 'lodash';\nimport up from 'updeep';\nimport { ValidationError, ValidationErrors } from './api';\n\nexport const matchesErrorCode = (code: ValidationError.CodeEnum) => {\n return (err: ValidationError) => err.code === code;\n};\n\nexport const validationErrorExists = (code: ValidationError.CodeEnum, validationErrors: ValidationError[], field?: string) => {\n if (!field) return validationErrors.some(matchesErrorCode(code));\n return validationErrors.some(matchesErrorCode(code)) && validationErrors.some((e) => e.field === field);\n};\n\nexport interface ValidationErrorMessages {\n [key: string]: {\n [key: string]: string;\n };\n}\n\nexport const matchesErrorCodeString = (code: string) => {\n return (err: ValidationError) => err.code.toString() === code;\n};\n\nexport const getValidationErrorMessage = (field: string, errors: ValidationErrors, messages: ValidationErrorMessages): string => {\n const relevantCodes = keys(messages[field] || []);\n if (relevantCodes.length === 0) return '';\n const foundCode = relevantCodes.find((code) => errors.some(matchesErrorCodeString(code)));\n if (!foundCode) return '';\n return messages[field][foundCode];\n};\n\nexport const someMessageForValidationErrors = (errors: ValidationErrors, messages: ValidationErrorMessages) => {\n const errorCodes = flatMap(values(messages), (fieldCodeMessages) => keys(fieldCodeMessages));\n return errorCodes.some((code: string) => errors.some(matchesErrorCodeString(code)));\n};\n\nexport const removeVEForField = (field: string, errors: ValidationErrors, messages: ValidationErrorMessages): ValidationErrors => {\n const relevantCodes = messages[field] || {};\n if (keys(relevantCodes).length === 0) return errors;\n return up(up.reject((ve) => has(relevantCodes, ve.code.toString())), errors);\n};\n","import { values } from 'lodash';\nimport { State } from '../state';\nimport { Entity, EntityMembership, CompetitionEntityScore } from '../../userApi';\nimport logger from '../../utils/logger';\nimport { getEntityParams } from '../../utils/routerHelper';\nimport { I18next } from '../../utils/i18nextShim';\nimport { History } from 'history';\nimport { atLeastAdmin, atLeastSuperadmin } from '../../utils/userApiHelper';\n\nconst userEntityOfType = (state: State, entityType: Entity.TypeEnum) => {\n const { user } = state;\n if (entityType === Entity.TypeEnum.HealthFacility && !user.options.isHealthFacilityEmployee) return;\n\n const m = values(state.userMemberships)\n .find((membership) =>\n state.entities[membership.entityID] && state.entities[membership.entityID].type === entityType &&\n membership.status === EntityMembership.StatusEnum.Accepted\n );\n if (!m) return;\n return state.entities[m.entityID];\n};\n\nexport const userUniversity = (state: State) => userEntityOfType(state, Entity.TypeEnum.University);\nexport const userHealthFacility = (state: State) => userEntityOfType(state, Entity.TypeEnum.HealthFacility);\nexport const userTeam = (state: State) => userEntityOfType(state, Entity.TypeEnum.Team);\n\nconst acceptedEntityOfType = (state: State, userID: number, entityType: Entity.TypeEnum) => {\n let user = state.users[userID];\n if (userID === state.user.id) {\n user = state.user;\n } else if (!user) {\n logger.warn(`acceptedEntityOfType: failed to find user ${userID}.`);\n return;\n }\n if (entityType === Entity.TypeEnum.HealthFacility && !user.options.isHealthFacilityEmployee) return;\n\n const acceptedEntityIDs = Object.keys(user.acceptedCompetitionEntityMemberships[state.competition.id] || {});\n const entityID = acceptedEntityIDs.find((id) => (state.entities[id]) && state.entities[id].type === entityType);\n if (!entityID) return;\n\n return state.entities[entityID];\n};\n\nexport const acceptedUniversity = (state: State, userID: number) => acceptedEntityOfType(state, userID, Entity.TypeEnum.University);\nexport const acceptedTeam = (state: State, userID: number) => acceptedEntityOfType(state, userID, Entity.TypeEnum.Team);\nexport const acceptedHealthFacility = (state: State, userID: number) => acceptedEntityOfType(state, userID, Entity.TypeEnum.HealthFacility);\n\nconst entitiesOfType = (state: State, type: Entity.TypeEnum) =>\n values(state.entities).filter((entity) => entity.type === type);\n\nexport const healthFacilityEntities = (state: State) => entitiesOfType(state, Entity.TypeEnum.HealthFacility);\n\nconst userRankForEntityType = (state: State, entityType: Entity.TypeEnum) => {\n const entity = userEntityOfType(state, entityType);\n if (!entity) return;\n return state.userEntityRanks[entity.id];\n};\n\nexport const userUniversityRank = (state: State) => userRankForEntityType(state, Entity.TypeEnum.University);\nexport const userHealthFacilityRank = (state: State) => userRankForEntityType(state, Entity.TypeEnum.HealthFacility);\n\ninterface RoutableAndLocalizable {\n history: History;\n i18n: I18next;\n}\n\nexport const currentEntity = (state: State, props: RoutableAndLocalizable): Entity =>\n state.entities[getEntityParams(props.history.location, props.i18n).entityID];\n\nexport const canJoinCurrentEntity = (state: State, props: RoutableAndLocalizable) => {\n const entity = currentEntity(state, props);\n if (entity.type !== Entity.TypeEnum.Team) return false;\n\n if (Boolean(userTeam(state))) return false;\n\n const university = userUniversity(state);\n if (!university) return false;\n\n return university.id === entity.parentID;\n};\n\ninterface EntityProps {\n entity: Entity;\n}\n\nexport const entityRank = (state: State, props: EntityProps) => {\n const entity = state.entities[props.entity.id];\n let entityScores: CompetitionEntityScore[];\n if (entity.type === Entity.TypeEnum.University) {\n entityScores = state.competitionEntityScores.university;\n } else if (entity.type === Entity.TypeEnum.Team) {\n entityScores = state.competitionEntityScores.team;\n } else if (entity.type === Entity.TypeEnum.HealthFacility) {\n entityScores = state.competitionEntityScores.healthFacility;\n } else {\n logger.error(`Could not select entityRank for ${props.entity.id}, type ${entity.type}.`);\n return 0;\n }\n\n return entityScores.findIndex((score) => score.entityID === props.entity.id) + 1;\n};\n\nexport const entityScore = (state: State, props: EntityProps): CompetitionEntityScore => {\n if (!state.competitionEntityScores) return { points: 0, savingsCO2Lbs: 0 };\n switch (props.entity.type) {\n case Entity.TypeEnum.Team:\n return state.competitionEntityScores.team.find((score) => score.entityID === props.entity.id);\n case Entity.TypeEnum.University:\n return state.competitionEntityScores.university.find((score) => score.entityID === props.entity.id);\n case Entity.TypeEnum.HealthFacility:\n return state.competitionEntityScores.healthFacility.find((score) => score.entityID === props.entity.id);\n default:\n throw new Error(`Unsupported EntityType ${props.entity.type}.`);\n }\n};\n\nexport const teamScoresForUserUniversity = (state: State) => {\n const university = userUniversity(state);\n if (!university) return [];\n const teamScores = state.competitionEntityScores.team || [];\n return teamScores.filter((score) => state.entities[score.entityID].parentID === university.id);\n};\n\nexport const isAtLeastAcceptedAdmin = (state: State, props: { entity: Entity }) => {\n const { userMemberships } = state;\n const membership = userMemberships[props.entity.id];\n if (!membership) return false;\n if (membership.status !== EntityMembership.StatusEnum.Accepted) return false;\n return atLeastAdmin(membership.level);\n};\n\nexport const isAtLeastAcceptedSuperadmin = (state: State, props: { entity: Entity }) => {\n const { userMemberships } = state;\n const membership = userMemberships[props.entity.id];\n if (!membership) return false;\n if (membership.status !== EntityMembership.StatusEnum.Accepted) return false;\n return atLeastSuperadmin(membership.level);\n};\n\nexport const userIsSomeUniversityAdmin = (state: State) => {\n const { userMemberships, entities } = state;\n return values(userMemberships).some((membership) => {\n const entity = entities[membership.entityID];\n if (!entity) return false;\n return entity.type === Entity.TypeEnum.University && atLeastAdmin(membership.level);\n });\n};\n\nexport const universityRank = (state: State) => {\n const university = userUniversity(state);\n const { competitionEntityScores } = state;\n const scoreIndex = competitionEntityScores.university ? competitionEntityScores.university.findIndex((score) => \n score.entityID == university.id\n ) : -1;\n if (scoreIndex === -1) {\n logger.error(new Error(`Could not find entity score for university with entityID ${university?.id||\"\"}.`));\n return competitionEntityScores.university?.length || 0;\n }\n return scoreIndex + 1;\n};\n\nexport const universityParticipationRank = (state: State) => {\n const university = userUniversity(state);\n const { entities, competitionEntities } = state;\n const campuses = values(entities)\n .filter((entity) => entity.type === Entity.TypeEnum.University);\n const participationIndex = campuses.sort((e1, e2) => {\n const population1 = e1.population;\n const memberCt1 = competitionEntities[e1.id].memberCount;\n const pctParticipation1 = Boolean(population1) ? memberCt1 / population1 : 0;\n const population2 = e2.population;\n const memberCt2 = competitionEntities[e2.id].memberCount;\n const pctParticipation2 = Boolean(population2) ? memberCt2 / population2 : 0;\n return pctParticipation1 > pctParticipation2 ? -1 : 1;\n })\n .findIndex((entity) => entity.id === university.id);\n if (participationIndex === -1) {\n logger.error(new Error(`Could not get participation rank for university with entityID ${university.id}.`));\n return campuses.length;\n }\n return participationIndex + 1;\n};\n\nexport const healthFacilityRank = (state: State) => {\n const healthFacility = userHealthFacility(state);\n if (!healthFacility) return;\n const { competitionEntityScores } = state;\n const scoreIndex = competitionEntityScores.healthFacility.findIndex((score) => score.entityID === healthFacility.id);\n if (scoreIndex === -1) {\n logger.error(new Error(`Could not find entity score for healthFacility with entityID ${healthFacility.id}.`));\n return competitionEntityScores.healthFacility.length;\n }\n return scoreIndex + 1;\n};\n\nexport const canSetHealthSystemsEmployee = (state: State) => {\n const university = userUniversity(state);\n if (!university) return false;\n return values(state.entities).some((entity) => entity.type === Entity.TypeEnum.HealthFacility && entity.abbreviation === university.abbreviation);\n};\n","import { TranslationFunction } from 'i18next';\n\nexport const joinAnd = (items: string[], t: TranslationFunction) => {\n if (items.length < 3) {\n return items.join(t(' and '));\n }\n return [\n items.slice(0, items.length - 1).join(', '),\n `, ${t('and')} `,\n items[items.length - 1]\n ].join('');\n};\n","import { values } from 'lodash';\nimport { State } from '../state';\nimport { History } from 'history';\nimport {\n CompetitionPledge, CompetitionPledgeCategory, CompetitionUserScore, Story, PledgeCompletions,\n CompetitionEntityPledge, Entities, UserMemberships, Entity, CompetitionScoreLevel\n} from '../../userApi';\nimport { getPledgeParams } from '../../utils/routerHelper';\nimport { I18next } from '../../utils/i18nextShim';\nimport {\n isDateEligibleForPledge, isUserTypeEligibleForPledge,\n CompetitionPledges, isUserScoreEligibleForPledge, estimatePointsAvailable\n} from '../../utils/userApiHelper';\nimport logger from '../../utils/logger';\n\nexport const userTotalPledges = (state: State) =>\n values(state.userPledgeCompletions).reduce((previous: number, n: number) => previous + n, 0);\n\nexport const profileTotalPledges = (state: State) =>\n values(state.profilePledgeCompletions).reduce((previous: number, n: number) => previous + n, 0);\n\nconst sortPledgesByRemainingPoints = (pledges: CompetitionPledge[], userPledgeCompletions: PledgeCompletions) =>\n pledges.sort((pledge1, pledge2) => {\n return estimatePointsAvailable(userPledgeCompletions, pledge1) > estimatePointsAvailable(userPledgeCompletions, pledge2) ? -1 : 1;\n });\n\nconst filterPledgesByAvailablePointsLeft = (pledges: CompetitionPledge[], userPledgeCompletions: PledgeCompletions) =>\n pledges.filter((pledge) => {\n if (pledge.uiLocation !== CompetitionPledge.UiLocationEnum.Primary) return false;\n return (userPledgeCompletions[pledge.id] || 0) < pledge.repeats;\n });\n\nexport const carouselPledges = (state: State) => {\n const { competitionPledges, userPledgeCompletions } = state;\n const pledges = values(competitionPledges);\n\n const eligiblePledges = pledges.filter((pledge) => isUserEligibleForPledge(state, pledge));\n const filteredPledges = filterPledgesByAvailablePointsLeft(eligiblePledges, userPledgeCompletions);\n return sortPledgesByRemainingPoints(filteredPledges, userPledgeCompletions);\n};\n\ninterface PledgeCategorical {\n competitionPledgeCategoryID: number;\n}\n\ninterface PledgesByScoreLevel {\n scoreLevel?: CompetitionScoreLevel;\n pledges: CompetitionPledge[];\n active: boolean;\n}\n\nexport const pledgesByCategoryAndLevel = (state: State, props: PledgeCategorical): PledgesByScoreLevel[] => {\n const { competitionPledges, competition, competitionUserScores, user, competitionScoreLevels, userPledgeCompletions } = state;\n const competitionUserScore = competitionUserScores[user.id];\n // NOTE: Here we include pledges that user is NOT score level eligible for.\n const filteredPledges = values(competitionPledges).filter((pledge) => {\n if (!isDateEligibleForPledge(pledge, competition)) return false;\n if (!isUserTypeEligibleForPledge(user, pledge)) return false;\n if (props.competitionPledgeCategoryID === 0) return true;\n return pledge.competitionPledgeCategoryID === props.competitionPledgeCategoryID;\n });\n const sortedPledges = sortPledgesByRemainingPoints(filteredPledges, userPledgeCompletions);\n return competitionScoreLevels\n .map((scoreLevel, i) => {\n if (i === 0) {\n return sortedPledges.filter((pledge) => !pledge.scoreLevelUUID || pledge.scoreLevelUUID === scoreLevel.uuid);\n } else {\n return sortedPledges.filter((pledge) => pledge.scoreLevelUUID === scoreLevel.uuid);\n }\n })\n .map((pledges, i) => ({\n scoreLevel: competitionScoreLevels[i],\n pledges,\n active: competitionUserScore.points >= competitionScoreLevels[i].threshold\n }));\n};\n\nexport const findPledgeByUUID = (state: State, { uuid }: { uuid: string }) =>\n state.competitionPledges[state.competitionPledgeIDsByUUID[uuid]];\n\ninterface Pledgeable {\n history: History;\n i18n: I18next;\n}\n\nexport const isUserEligibleForStoryQueryPledge = (state: State) => {\n const { storyQuery, competitionPledges } = state;\n const { competitionPledgeID } = storyQuery;\n const pledge = competitionPledges[competitionPledgeID];\n if (!pledge) return false;\n return isUserEligibleForPledge(state, pledge);\n};\n\nexport const isUserEligibleForPledge = (state: State, pledge: CompetitionPledge) => {\n try {\n const { user, competitionUserScores, competitionScoreLevels, competition } = state;\n if (!pledge || !competitionUserScores) return false;\n const score = competitionUserScores[user.id];\n if (!score) return false;\n return isUserScoreEligibleForPledge(score, competitionScoreLevels, pledge) &&\n isUserTypeEligibleForPledge(user, pledge) &&\n isDateEligibleForPledge(pledge, competition);\n } catch (err) {\n logger.error(err);\n return true;\n }\n};\n\nexport const currentPledge = (state: State, props: Pledgeable): CompetitionPledge =>\n state.competitionPledges[getPledgeParams(props.history.location, props.i18n).competitionPledgeID];\n\nexport const currentPledgeCategory = (state: State, props: Pledgeable): CompetitionPledgeCategory => {\n const pledge = state.competitionPledges[getPledgeParams(props.history.location, props.i18n).competitionPledgeID];\n return state.competitionPledgeCategories[pledge.competitionPledgeCategoryID];\n};\n\nexport const lastUsersToVerify = (state: State, props: Pledgeable): CompetitionUserScore[] => {\n const pledgeID = getPledgeParams(props.history.location, props.i18n).competitionPledgeID;\n if (!state.latestToPledge || !state.latestToPledge[pledgeID]) return;\n return state.latestToPledge[pledgeID].map((userID) => state.competitionUserScores[userID]);\n};\n\ninterface Storyable {\n story: Story;\n}\n\nexport const userCompletionsLTPledgeRepeats = (state: State, props: Storyable): boolean => {\n if (!Boolean(props.story.competitionPledgeID) || !state.competitionPledges[props.story.competitionPledgeID] ) return;\n const completions = state.userPledgeCompletions[props.story.competitionPledgeID] || 0;\n const pledge = state.competitionPledges[props.story.competitionPledgeID]; \n return completions < pledge.repeats; \n};\n\ninterface CompetitionEntityPledgeable {\n entity: Entity;\n pledge: CompetitionPledge;\n}\n\nexport const getCompetitionEntityPledge = (state: State, props: CompetitionEntityPledgeable): CompetitionEntityPledge => {\n const { competitionEntityPledges } = state;\n if (!competitionEntityPledges) return;\n\n const { entity, pledge } = props;\n return competitionEntityPledges[pledge.id][entity.id];\n};\n\nexport const getEntitiesWithCompetitionEntityPledges = (state: State, props: Pledgeable): Partial => {\n const { competitionEntityPledges, entities } = state;\n if (!competitionEntityPledges) return {};\n\n const { competitionPledgeID } = getPledgeParams(props.history.location, props.i18n);\n const entityIDs = Object.keys(competitionEntityPledges[competitionPledgeID] || {}) || [];\n return entityIDs.reduce((previous, entityID) => ({ [entityID]: entities[entityID], ...previous }), {});\n};\n\nexport const getMembershipsCompetitionEntityPledges = (state: State, props: Pledgeable): Partial => {\n const { competitionEntityPledges, entities, userMemberships } = state;\n if (!competitionEntityPledges) return {};\n\n const { competitionPledgeID } = getPledgeParams(props.history.location, props.i18n);\n const entityIDs = Object.keys(competitionEntityPledges[competitionPledgeID] || {}) || [];\n return entityIDs.reduce((previous, entityID) => ({ [entityID]: userMemberships[entityID], ...previous }), {});\n};\n\nexport const defaultCalculatorPoints = 500;\n\nexport const calculatorAvailablePoints = (state: State) => {\n if (!state.userPledgeCompletions) return defaultCalculatorPoints;\n const pledge = values(state.competitionPledges).find((p) => p.uuid === CompetitionPledges.TakeCalculator);\n if (!pledge) return defaultCalculatorPoints;\n return estimatePointsAvailable(state.userPledgeCompletions, pledge);\n};\n","import { State } from '../state';\nimport { CompetitionScoreLevel, CompetitionUserScore } from '../../userApi';\n\nexport const getScoreLevel = (state: State, userID: number) => {\n const score = state.competitionUserScores[userID];\n if (!score) return state.competitionScoreLevels[0];\n return state.competitionScoreLevels\n .find((_scoreLevel, i) => {\n const nextLevel = state.competitionScoreLevels[i + 1];\n return !nextLevel || score.points < nextLevel.threshold;\n });\n};\n\nexport const getNextScoreLevel = (state: State, userID: number) => {\n const score = state.competitionUserScores[userID];\n if (!score) return state.competitionScoreLevels[1];\n const nextLevel = state.competitionScoreLevels\n .slice(1)\n .find((scoreLevel) => score.points < scoreLevel.threshold);\n return nextLevel || state.competitionScoreLevels[state.competitionScoreLevels.length - 1];\n};\n\nexport const userScoreLevel = (state: State) => {\n if (!state.competitionUser.verified) return state.competitionScoreLevels[0];\n return getScoreLevel(state, state.user.id);\n};\n\nexport const nextUserScoreLevel = (state: State) => {\n if (!state.competitionUser.verified) return state.competitionScoreLevels[1];\n return getNextScoreLevel(state, state.user.id);\n};\n\ninterface Scorable {\n scoreLevel: CompetitionScoreLevel;\n nextScoreLevel: CompetitionScoreLevel;\n score: CompetitionUserScore;\n}\n\nexport const percentToNextLevel = (_state: State, props: Scorable): number => {\n const { score, scoreLevel, nextScoreLevel } = props;\n if (scoreLevel === nextScoreLevel) {\n return 1.0;\n }\n const pointsToNext = nextScoreLevel.threshold - scoreLevel.threshold;\n return ((score.points - scoreLevel.threshold) / (pointsToNext));\n};\n","import { State } from '../state';\nimport { someMatchingEmailDomain } from '../../utils/userApiHelper';\nimport { Entity, MembershipLevel } from '../../userApi';\nimport { hasCompetitionStarted } from './competition';\nimport logger from '../../utils/logger';\n\nexport const userEmailPermittedByCompetition = (state: State) => {\n const { competition, userEmails, user } = state;\n\n const primaryUserEmail = userEmails.find((userEmail) => userEmail.email === user.email);\n const primaryPermittedCompDomain = someMatchingEmailDomain(primaryUserEmail.email, competition.permittedDomains);\n if (primaryPermittedCompDomain) {\n return primaryUserEmail;\n }\n\n return userEmails.find((userEmail) => someMatchingEmailDomain(userEmail.email, competition.permittedDomains));\n};\n\nexport const onlyVerifiedCompetitionUserEmail = (state: State) => {\n const { competition, competitionUser, userEmails } = state;\n if (!competitionUser.verified) return;\n\n const verifiedCompetitionUserEmails = userEmails.filter((userEmail) =>\n userEmail.verified &&\n someMatchingEmailDomain(userEmail.email, competition.permittedDomains)\n );\n if (verifiedCompetitionUserEmails.length > 1) return;\n return verifiedCompetitionUserEmails[0];\n};\n\nexport const hasEmailPermittedByCompetition = (state: State) =>\n Boolean(userEmailPermittedByCompetition(state));\n\nexport const isVerifiedCompetitionUser = (state: State) =>\n state.competitionUser && state.competitionUser.verified;\n\nexport const isCompetitionUser = (state: State) =>\n state.competitionUser.competitionID == state.competition.id;\n\nexport const isUniversitySuperadmin = (state: State) => {\n const { userMemberships, entities } = state;\n return Object.keys(userMemberships || {}).some((entityID) =>\n entities[entityID].type === Entity.TypeEnum.University &&\n userMemberships[entityID].level === MembershipLevel.Superadmin\n );\n};\n\nexport const isHealthSystemsEmployee = (state: State) => {\n const { user } = state;\n return Boolean(user) && Boolean(user.options) && user.options.isHealthFacilityEmployee;\n};\n\nexport const canViewCompetitionContent = (state: State) => {\n if (!isVerifiedCompetitionUser(state)) return false;\n return hasCompetitionStarted(state) || isUniversitySuperadmin(state);\n};\n\nexport const profileUser = (state: State, required: boolean = false) => {\n const profileID = state.storyQuery.userID;\n if (!profileID) return;\n return someUser(state, profileID, required);\n};\n\nexport const someUser = (state: State, userID: number, required: boolean = false) => {\n if (userID === state.user.id) {\n return state.user;\n }\n const user = state.users[userID];\n if (!user && required) {\n logger.error(new Error(`Could not find user ${userID}.`));\n }\n return user;\n};\n","import { Comment } from '../../userApi';\nimport { State } from '../state';\n\nexport const commentCreator = (comment: Comment, state: State) => {\n if (comment.createdBy === state.user.id) {\n return state.user;\n }\n return state.users[comment.createdBy];\n};\n","import { State } from '../state';\n\ninterface Searchable {\n id: string;\n}\n\nexport const searchResults = (state: State, props: Searchable) => {\n if (!state.searchResults[props.id]) return [];\n return state.searchResults[props.id].map((userID) => state.users[userID]);\n};\n","import { Story, UserRead } from '../../userApi';\nimport { State } from '../state';\n\ninterface Storyable {\n story: Story;\n}\nexport const storyCreator = (state: State, props: Storyable): UserRead => {\n if (props.story.createdBy === state.user.id) {\n return state.user;\n }\n return state.users[props.story.createdBy];\n};\n\nexport const taggedUsers = (state: State, props: Storyable): UserRead[] => {\n if (!props.story) return [];\n if (!state.storyTaggedUserIDs[props.story.id]) return [];\n return state.storyTaggedUserIDs[props.story.id].map((userID) => state.users[userID]);\n};\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError, validationErrorExists, CreateSessionParams, ValidationErrorMessages } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\nimport { Form, validationReady } from './form';\n\nexport type LoginForm = CreateSessionParams & Form;\n\nexport interface LoginErrors {\n email: string;\n password: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['email', 'password'],\n properties: {\n email: { type: 'string', format: 'email', minLength: 5 },\n password: { type: 'string', minLength: 2 }\n }\n};\n\nexport const loginVEMessages: ValidationErrorMessages = {\n email: {\n [ValidationError.CodeEnum.ErrEmailNotFound]: 'No user found with that email.'\n },\n password: {\n [ValidationError.CodeEnum.ErrPasswordIncorrect]: 'Password is incorrect.'\n }\n};\n\nexport const makeLoginErrors = (loginForm: Partial, validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n if (!validator.validate(validation, loginForm)) {\n const { errors } = validator;\n errorMessages = {\n email: makeErrorMessage(errors, '.email', t('Must be valid email.'), validationReady(loginForm as Form, 'email')),\n password: makeErrorMessage(errors, '.password', t('Must be at least two characters.'), validationReady(loginForm as Form, 'password'))\n };\n }\n\n if (!errorMessages.email && validationErrorExists(ValidationError.CodeEnum.ErrEmailNotFound, validationErrors)) {\n errorMessages.email = t(loginVEMessages.email[ValidationError.CodeEnum.ErrEmailNotFound]);\n }\n if (!errorMessages.password && validationErrorExists(ValidationError.CodeEnum.ErrPasswordIncorrect, validationErrors)) {\n errorMessages.password = t(loginVEMessages.password[ValidationError.CodeEnum.ErrPasswordIncorrect]);\n }\n return pickBy(errorMessages);\n};\n","export interface Form {\n submitted: boolean;\n dirty: { [key: string]: boolean };\n}\n\nexport const validationReady = (form: Form, field: string) =>\n form.submitted || form.dirty[field];\n","import * as React from 'react';\nimport cx from 'classnames';\n\ninterface Props {\n onClick: () => void;\n text?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport default ({ onClick, text, children, className = '' }: Props) => (\n \n {text || children}\n \n);\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError, validationErrorExists, CreateUserParams, ValidationErrorMessages } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\nimport { Form, validationReady } from './form';\n\ninterface Signup extends CreateUserParams {\n confirmPassword: string;\n}\n\nexport type SignupForm = Signup & Form;\n\nexport interface SignupErrors {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n confirmPassword: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['user', 'password', 'confirmPassword', 'agreedToTermsAndConditions'],\n properties: {\n user: {\n type: 'object',\n required: ['email', 'firstName', 'type'],\n properties: {\n email: { type: 'string', format: 'email', minLength: 5 },\n firstName: { type: 'string', minLength: 2, maxLength: 64 },\n lastName: { type: 'string', minLength: 1, maxLength: 64 }\n }\n },\n password: { type: 'string', minLength: 8, maxLength: 64, password: true },\n confirmPassword: { type: 'string' }\n }\n};\n\nexport const signupVEMessages: ValidationErrorMessages = {\n email: {\n [ValidationError.CodeEnum.ErrEmailNonUnique]: 'A user has already signed up with that email.'\n }\n};\n\nexport const makeSignupErrors = (signupForm: Partial, validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n if (!validator.validate(validation, signupForm)) {\n const { errors } = validator;\n const passwordError = makeErrorMessage(\n errors, '.password',\n t('8-64 characters with at least 1 number and 1 letter.'),\n validationReady(signupForm as Form, 'password')\n );\n\n errorMessages = {\n email: makeErrorMessage(errors, '.user.email', t('Must be valid email.'), validationReady(signupForm as Form, 'email')),\n firstName: makeErrorMessage(errors, '.user.firstName', t('Must be 2-64 characters.'), validationReady(signupForm as Form, 'firstName')),\n lastName: makeErrorMessage(errors, '.user.lastName', t('Must be 2-64 characters.'), validationReady(signupForm as Form, 'lastName')),\n password: passwordError\n };\n }\n\n if (!errorMessages.password && signupForm.password !== signupForm.confirmPassword && validationReady(signupForm as Form, 'confirmPassword')) {\n errorMessages.confirmPassword = t('Must match password.');\n }\n\n if (!errorMessages.email && validationErrorExists(ValidationError.CodeEnum.ErrEmailNonUnique, validationErrors)) {\n errorMessages.email = t(signupVEMessages.email[ValidationError.CodeEnum.ErrEmailNonUnique]);\n }\n return pickBy(errorMessages);\n};\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError, PostUserEmailParams, ValidationErrorMessages, getValidationErrorMessage } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\nimport { Form, validationReady } from './form';\n\nconst validation = {\n type: 'object',\n required: ['email'],\n properties: {\n email: { type: 'string', format: 'email', minLength: 5 }\n }\n};\n\nexport const userEmailVEMessages: ValidationErrorMessages = {\n email: {\n [ValidationError.CodeEnum.ErrUserEmailExists]: 'A user has already registered that email.',\n [ValidationError.CodeEnum.ErrEmailNonUnique]: 'A user has already registered that email.'\n }\n};\n\nexport type UserEmailForm = PostUserEmailParams & Form;\n\nexport interface UserEmailErrors {\n email: string;\n}\n\nexport const makeUserEmailErrors = (form: Partial, validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n if (!validator.validate(validation, form)) {\n const { errors } = validator;\n errorMessages = {\n email: makeErrorMessage(errors, '.email', t('Must be valid email.'), validationReady(form as Form, 'email'))\n };\n }\n const emailVEMsg = getValidationErrorMessage('email', validationErrors, userEmailVEMessages);\n if (!errorMessages.email && emailVEMsg) {\n errorMessages.email = t(emailVEMsg);\n }\n return pickBy(errorMessages);\n};\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError, validationErrorExists, ValidationErrorMessages } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\nimport { Form, validationReady } from './form';\n\nexport interface ForgotPasswordForm extends Form {\n email: string;\n}\n\nexport interface ForgotPasswordErrors {\n email: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['email'],\n properties: {\n email: { type: 'string', format: 'email', minLength: 5 }\n }\n};\n\nexport const forgotPasswordVEMessages: ValidationErrorMessages = {\n email: {\n [ValidationError.CodeEnum.ErrEmailNotFound]: 'We could not find an account associated with this email address.'\n }\n};\n\nexport const makeForgotPasswordErrors = (forgotPasswordForm: Partial, validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n if (!validator.validate(validation, forgotPasswordForm)) {\n const { errors } = validator;\n errorMessages = {\n email: makeErrorMessage(errors, '.email', t('Must be valid email.'), validationReady(forgotPasswordForm as Form, 'email'))\n };\n }\n\n if (!errorMessages.email && validationErrorExists(ValidationError.CodeEnum.ErrEmailNotFound, validationErrors)) {\n errorMessages.email = t(forgotPasswordVEMessages.email[ValidationError.CodeEnum.ErrEmailNotFound]);\n }\n\n return pickBy(errorMessages);\n};\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\nimport { Form, validationReady } from './form';\n\nexport interface PasswordResetForm extends Form {\n password: string;\n confirmPassword: string;\n}\n\nexport interface PasswordResetErrors {\n password: string;\n confirmPassword: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['password', 'confirmPassword'],\n properties: {\n password: { type: 'string', minLength: 8, maxLength: 64, password: true },\n confirmPassword: { type: 'string' }\n }\n};\n\nexport const makePasswordResetErrors = (passwordResetForm: Partial, _validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n validator.validate(validation, passwordResetForm);\n\n const { errors } = validator;\n let passwordError: string;\n if (errors !== null) {\n passwordError = makeErrorMessage(\n errors, '.password',\n t('8-64 characters with at least 1 number, 1 letter, and 1 special character (!@#$%^&*(),.?\\'{}|<>).'),\n validationReady(passwordResetForm as Form, 'password')\n );\n }\n let confirmPasswordError = '';\n if (!passwordError && passwordResetForm.password !== passwordResetForm.confirmPassword) {\n confirmPasswordError = t('Must match password.');\n }\n errorMessages = {\n password: passwordError,\n confirmPassword: confirmPasswordError\n };\n return pickBy(errorMessages);\n};\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError, validationErrorExists, UserWrite, ValidationErrorMessages } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\nimport { Form, validationReady } from './form';\n\ninterface UserUpdate {\n user: Partial;\n password: string;\n newPassword?: string;\n confirmNewPassword?: string;\n}\n\nexport type UserUpdateForm = UserUpdate & Form;\n\nexport interface UserUpdateErrors {\n firstName: string;\n lastName: string;\n password: string;\n newPassword: string;\n confirmNewPassword: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['user'],\n properties: {\n user: {\n type: 'object',\n required: ['firstName', 'type'],\n properties: {\n email: { type: 'string', format: 'email', minLength: 5 },\n firstName: { type: 'string', minLength: 2, maxLength: 64 },\n lastName: { type: 'string', minLength: 1, maxLength: 64 }\n }\n },\n newPassword: { type: 'string', minLength: 8, maxLength: 64, password: true },\n confirmNewPassword: { type: 'string' }\n }\n};\n\nexport const userUpdateVEMessages: ValidationErrorMessages = {\n password: {\n [ValidationError.CodeEnum.ErrPasswordIncorrect]: 'Password is incorrect.'\n }\n};\n\nexport const makeUserUpdateErrors = (userUpdateForm: Partial, validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n if (!validator.validate(validation, userUpdateForm)) {\n const { errors } = validator;\n const newPasswordError = makeErrorMessage(\n errors, '.newPassword',\n t('8-64 characters with at least 1 number and 1 letter.'),\n validationReady(userUpdateForm as Form, 'newPassword')\n );\n let confirmPasswordError = '';\n if (!newPasswordError && userUpdateForm.newPassword !== userUpdateForm.confirmNewPassword) {\n confirmPasswordError = t('Must match password.');\n }\n errorMessages = {\n firstName: makeErrorMessage(errors, '.user.firstName', t('Must be 2-64 characters.'), validationReady(userUpdateForm as Form, 'firstName')),\n lastName: makeErrorMessage(errors, '.user.lastName', t('Must be 2-64 characters.'), validationReady(userUpdateForm as Form, 'lastName')),\n newPassword: newPasswordError,\n confirmNewPassword: confirmPasswordError\n };\n }\n\n if (validationErrorExists(ValidationError.CodeEnum.ErrPasswordIncorrect, validationErrors)) {\n errorMessages.password = t(userUpdateVEMessages.password[ValidationError.CodeEnum.ErrPasswordIncorrect]);\n }\n return pickBy(errorMessages);\n};\n","import { pickBy } from 'lodash';\nimport { Form, validationReady } from './form';\nimport { ValidationErrors, validationErrorExists, ValidationError } from '../../userApi';\nimport { TranslationFunction } from 'i18next';\nimport { validator, makeErrorMessage } from '../validations';\n\nexport interface InviteAFriendForm extends Form {\n email: string;\n name: string;\n}\n\nexport interface InviteAFriendErrors {\n email: string;\n name: string;\n}\n\nconst inviteAFriendValidation = {\n type: 'object',\n required: ['name', 'email'],\n properties: {\n email: { type: 'string', format: 'email', minLength: 5 },\n name: { type: 'string', minLength: 2 }\n }\n};\n\nexport const makeInviteAFriendErrors = (form: Partial, validationErrors: ValidationErrors, t: TranslationFunction): Partial => {\n let errorMessages: Partial = {};\n if (!validator.validate(inviteAFriendValidation, form)) {\n const { errors } = validator;\n errorMessages = {\n email: makeErrorMessage(errors, '.email', t('Must be valid email.'), validationReady(form as Form, 'email')),\n name: makeErrorMessage(errors, '.name', t('Must be at least two characters.'), validationReady(form as Form, 'name'))\n };\n }\n if (!errorMessages.email && validationErrorExists(ValidationError.CodeEnum.ErrUserEmailExists, validationErrors)) {\n errorMessages.email = t('A user has already registered that email.');\n }\n return pickBy(errorMessages);\n};\n","import { pickBy } from 'lodash';\nimport { TranslationFunction } from 'i18next';\nimport { Entity, ValidationError } from '../../userApi';\nimport { Form, validationReady } from './form';\nimport { validator, makeErrorMessage } from '../validations';\nimport { SocialLinkErrors, validateSocialLinks } from './socialLinks';\n\nexport interface EntityForm extends Entity, Form {}\n\nexport interface EntityErrors {\n name: string;\n abbreviation: string;\n descriptionMD: string;\n socialLinks: SocialLinkErrors;\n // This is manually set during the entityForms saveEntity actions.\n photo: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['name', 'descriptionMD'],\n properties: {\n name: { type: 'string', minLength: 2, maxLength: 100 },\n abbreviation: { type: 'string', minLength: 2, maxLength: 100 },\n descriptionMD: { type: 'string', minLength: 10, maxLength: 5000 }\n }\n};\n\nexport const makeEntityErrors = (form: Partial, _validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n const errorMessages: Partial = {};\n if (!validator.validate(validation, form)) {\n const { errors } = validator;\n errorMessages.name = makeErrorMessage(errors, '.name', t('Must be 2-100 characters.'), validationReady(form as Form, 'name'));\n errorMessages.abbreviation = makeErrorMessage(errors, '.name', t('Must be 2-20 characters.'), validationReady(form as Form, 'name'));\n errorMessages.descriptionMD = makeErrorMessage(errors, '.descriptionMD', t('Must be 10-5000 characters.'), validationReady(form as Form, 'descriptionMD'));\n }\n if (form.socialLinks) {\n errorMessages.socialLinks = validateSocialLinks(form.socialLinks, t);\n }\n return pickBy(errorMessages);\n};\n","import { pickBy } from 'lodash';\nimport { TranslationFunction } from 'i18next';\nimport { BlogEntry, ValidationError } from '../../userApi';\nimport { Form, validationReady } from './form';\nimport { validator, makeErrorMessage } from '../validations';\n\nexport interface BlogEntryForm extends BlogEntry, Form {}\n\nexport interface BlogEntryErrors {\n title: string;\n contentMD: string;\n}\n\nconst validation = {\n type: 'object',\n required: ['title', 'contentMD'],\n properties: {\n title: { type: 'string', minLength: 2, maxLength: 20 },\n contentMD: { type: 'string', minLength: 10, maxLength: 5000 }\n }\n};\n\nexport const makeBlogEntryErrors = (form: Partial, _validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n const errorMessages: Partial = {};\n if (!validator.validate(validation, form)) {\n const { errors } = validator;\n errorMessages.title = makeErrorMessage(errors, '.title', t('Must be 2-20 characters.'), validationReady(form as Form, 'title'));\n errorMessages.contentMD = makeErrorMessage(errors, '.contentMD', t('Must be 10-5000 characters.'), validationReady(form as Form, 'contentMD'));\n }\n return pickBy(errorMessages);\n};\n","import { TranslationFunction } from 'i18next';\nimport { pickBy } from 'lodash';\nimport { ValidationError, validationErrorExists, CreateSessionParams, ValidationErrorMessages } from '../../userApi';\nimport { validator, makeErrorMessage } from '../validations';\n\n\n\n\nexport interface JoinErrors {\n join: string; \n}\nexport const joinVEMessages: ValidationErrorMessages = {\n join: {\n [ValidationError.CodeEnum.ErrIllegalMembershipJoin]: 'This user cannot join this competition'\n }\n};\n\nexport const makeJoinErrors = (validationErrors: ValidationError[], t: TranslationFunction): Partial => {\n let errorMessages: Partial = {}; \n\n if (!errorMessages.join && validationErrorExists(ValidationError.CodeEnum.ErrIllegalMembershipJoin, validationErrors)) {\n errorMessages.join = t(joinVEMessages.join[ValidationError.CodeEnum.ErrIllegalMembershipJoin]);\n } \n return pickBy(errorMessages);\n};\n","import { pick, last } from 'lodash';\nimport up from 'updeep';\nimport { patch } from './patch';\nimport { CreateUserParams, CreateSessionParams, someMessageForValidationErrors } from '../../userApi';\nimport { State } from '../state';\nimport { Dispatch } from 'redux';\nimport { LoginForm, signupVEMessages, loginVEMessages } from '../../utils/forms';\nimport { handleUserApiError, handleUnexpectedError } from './handleUnexpectedError';\nimport logger from '../../utils/logger';\nimport * as selectors from '../selectors';\nimport { getValidationErrors, someMatchingEmailDomain } from '../../utils/userApiHelper';\nimport { ExtraArguments } from '../extraArguments';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { intercom } from '../../utils/intercom';\nimport { trackEvent } from '../../utils/googleAnalytics';\nimport { setAnalyticsAttributes } from './initialize';\n\nconst updateIntercom = (state: State) => {\n const { user, competitionUser } = state;\n const university = selectors.userUniversity(state);\n intercom('update', {\n user, university, competitionUser\n });\n};\n\nexport const login = (loginForm: CreateSessionParams) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n try {\n const params = pick(loginForm, ['email', 'password']) as LoginForm;\n const state = getState(); \n params.competitionName = state.initialQuery.competitionName \n const api = selectors.userApi(state);\n const dashboard = await api.postSession(params);\n dispatch(patch({\n ...dashboard,\n spinner: false\n }));\n trackEvent('session', 'create');\n const loggedInState = getState();\n updateIntercom(loggedInState);\n setAnalyticsAttributes(loggedInState);\n logger.configure(loggedInState);\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors && someMessageForValidationErrors(validationErrors, loginVEMessages)) {\n dispatch(patch({\n loginVE: up.constant(validationErrors),\n spinner: false\n }));\n return;\n }\n handleUserApiError(err)(dispatch, getState);\n trackEvent('session', 'unhandledError', 'create');\n }\n};\n\nexport const signup = (params: CreateUserParams) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'auth');\n const state = getState();\n const { initialQuery, competition } = state;\n const api = selectors.userApi(state);\n\n dispatch(patch({ spinner: true }));\n try {\n params.competitionName = state.initialQuery.competitionName;\n if (initialQuery.invitationToken) {\n params.invitationToken = initialQuery.invitationToken;\n }\n\n if (!someMatchingEmailDomain(params.user.email, competition.permittedDomains)) {\n dispatch(patch({ spinner: false }));\n toast({\n message: t('You must sign up with a permitted email domain.'),\n style: StyleState.Danger\n })(dispatch, getState);\n return;\n }\n\n const dashboard = await api.postUsers(params);\n dispatch(patch({\n ...dashboard,\n spinner: false\n }));\n const signedupState = getState();\n updateIntercom(signedupState);\n trackEvent('account', 'create');\n logger.configure(signedupState);\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors && someMessageForValidationErrors(validationErrors, signupVEMessages)) {\n dispatch(patch({\n signupVE: up.constant(validationErrors),\n spinner: false\n }));\n return;\n }\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('account', 'unhandledError', 'create');\n }\n};\n\nexport const logout = () => async (_dispatch: Dispatch, getState: () => State) => {\n const api = selectors.userApi(getState());\n try {\n await api.deleteSession();\n intercom('shutdown', {});\n trackEvent('session', 'delete');\n } catch (err) {\n logger.error(err);\n trackEvent('session', 'unhandledError', 'delete');\n }\n const state = getState();\n localStorage.clear();\n if (window.location.pathname === `/${state.initialQuery.competitionName}/login`) {\n window.location.reload()\n } else { \n window.location.pathname = `/${state.initialQuery.competitionName}/login`;\n }\n};\n\nexport const join = () => async (dispatch: Dispatch, getState: () => State) => {\n const state = getState();\n const api = selectors.userApi(state);\n const competitionName = state.initialQuery.competitionName \n try{\n const dashboard = await api.postJoin({competitionName})\n dispatch(patch({\n ...dashboard,\n spinner: false\n }));\n trackEvent('session', 'join');\n const loggedInState = getState();\n updateIntercom(loggedInState);\n setAnalyticsAttributes(loggedInState);\n logger.configure(loggedInState);\n }catch (err){\n const validationErrors = await getValidationErrors(err);\n if (validationErrors && someMessageForValidationErrors(validationErrors, loginVEMessages)) {\n dispatch(patch({\n joinVE: up.constant(validationErrors),\n spinner: false\n }));\n return;\n }\n handleUserApiError(err)(dispatch, getState);\n trackEvent('session', 'unhandledError', 'join');\n }\n}","import { patch } from './patch';\nimport { ActionType } from './types';\nimport { Dispatch } from 'redux';\n\nexport type SetLandingPagePosition = (position: number) => void;\n\nexport const setLandingPagePostion = (position: number) => (dispatch: Dispatch) => {\n setTimeout(() => {\n dispatch(patch({\n landingPagePosition: position\n }, ActionType.SetLandingPagePosition));\n }, 500);\n};\n","import { Modals } from '../state';\nimport { patch } from './patch';\n\nexport const setModal = (modal: Modals) => patch({\n modal\n});\n\nexport const closeModal = () => patch({ modal: null });\n","import up from 'updeep';\nimport { patch } from './patch';\nimport { Comment } from '../../userApi';\nimport { State } from '../state';\nimport { Dispatch } from 'redux';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport * as selectors from '../selectors';\nimport { commentableTypeToString } from '../../utils/userApiHelper';\nimport { ExtraArguments } from '../extraArguments';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const postComments = (commentForm: Partial, commentPromptID: string) =>\nasync (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const state = getState();\n const api = selectors.userApi(state);\n\n dispatch(patch({ spinner: true }));\n try {\n const { commentableID, commentableType } = commentForm;\n const body = { comment: commentForm as Comment };\n const { comment } = await api.postComments(commentableID, commentableTypeToString(commentableType), body);\n trackEvent('comment', 'create');\n const { storyComments } = getState();\n const existingComments = storyComments[commentableID] || [];\n if (commentableType === Comment.CommentableTypeEnum.Story) {\n dispatch(patch({\n storyComments: { [commentableID]: [ comment, ...existingComments ] },\n savedCommentPromptID: commentPromptID,\n spinner: false\n }));\n } else if (commentableType === Comment.CommentableTypeEnum.BlogEntry) {\n dispatch(patch({\n blogEntryComments: { [commentableID]: [ comment, ...existingComments ] },\n savedCommentPromptID: commentPromptID,\n spinner: false\n }));\n }\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('comment', 'unhandledError', 'create');\n }\n};\n\nexport const deleteStoryComment = (comment: Comment) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const { storyComments } = getState();\n const storyID = comment.commentableID;\n dispatch(patch({\n storyComments: { [storyID]: up.reject((c) => c.id === comment.id) }\n }));\n const api = selectors.userApi(getState());\n try {\n await api.deleteComment(comment.id, 'story');\n trackEvent('comment', 'delete');\n } catch (err) {\n dispatch(patch({\n storyComments: { [storyID]: storyComments[storyID] }\n }));\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('comment', 'unhandledError', 'delete');\n }\n};\n","import up from 'updeep';\nimport { patch } from './patch';\nimport initialState, { State } from '../state';\nimport { Dispatch } from 'redux';\nimport { handleUserApiError } from './handleUnexpectedError';\nimport * as selectors from '../selectors';\nimport { ExtraArguments } from '../extraArguments';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { getValidationErrors } from '../../utils/userApiHelper';\nimport { makeSimpleRoutePath, Routes } from '../../utils/routerHelper';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const postPasswordResetRequest = (params: { email: string }) => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'forgotPassword');\n const state = getState();\n const api = selectors.userApi(state);\n dispatch(patch({ spinner: true }));\n try {\n await api.postPasswordResetRequest(state.competition.name, params);\n dispatch(patch({\n spinner: false,\n forgotPasswordVE: up.constant(initialState.forgotPasswordVE)\n }));\n history.push(makeSimpleRoutePath(Routes.Login, i18n.t));\n toast({\n style: StyleState.Success,\n message: t('Link sent! Make sure to use it within an hour.')\n })(dispatch, getState);\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors) {\n dispatch(patch({\n forgotPasswordVE: validationErrors,\n spinner: false\n }));\n return;\n }\n handleUserApiError(err)(dispatch, getState);\n }\n};\n","import { patch } from './patch';\nimport { State } from '../state';\nimport { Dispatch } from 'redux';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport * as selectors from '../selectors';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { Routes, makeSimpleRoutePath } from '../../utils/routerHelper';\nimport { ExtraArguments } from '../extraArguments';\nimport { getValidationErrors } from '../../utils/userApiHelper';\nimport { matchesErrorCode, ValidationError } from '../../userApi';\n\nexport const putPasswordResetRequest = (password: string) =>\n async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n const state = getState();\n const api = selectors.userApi(state);\n const { initialQuery } = state;\n\n dispatch(patch({ spinner: true }));\n try {\n const params = {\n password,\n token: initialQuery.passwordResetToken\n };\n await api.putPasswordResetRequest(params);\n dispatch(patch({ spinner: false }));\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors) {\n if (validationErrors.some(matchesErrorCode(ValidationError.CodeEnum.ErrTokenExpired))) {\n dispatch(patch({ spinner: false }));\n history.push(makeSimpleRoutePath(Routes.ForgotPassword, i18n.t));\n toast({\n message: i18n.t('Your link expired. Please request another.'),\n style: StyleState.Danger\n })(dispatch, getState);\n return;\n } else if (validationErrors.some(matchesErrorCode(ValidationError.CodeEnum.ErrTokenInvalidJTI))) {\n dispatch(patch({ spinner: false }));\n history.push(makeSimpleRoutePath(Routes.ForgotPassword, i18n.t));\n toast({\n message: i18n.t('You can only use your reset link once. Please request another.'),\n style: StyleState.Danger\n })(dispatch, getState);\n return;\n }\n }\n handleUnexpectedError(err)(dispatch, getState);\n return;\n }\n\n if (selectors.isLoggedIn(state)) {\n history.push(`/${Routes.Dashboard}`);\n } else {\n history.push(`/${Routes.Login}`);\n }\n toast({\n message: i18n.t('Your password has been successfully reset.'),\n style: StyleState.Success\n })(dispatch, getState);\n};\n","import { Dispatch } from 'redux';\nimport { History } from 'history';\nimport up from 'updeep';\nimport { State, StoryQuery } from '../state';\nimport { values } from 'lodash';\nimport { getEntityParams, Routes } from '../../utils/routerHelper';\nimport { setStoryQuery } from './story';\nimport * as selectors from '../selectors';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { ExtraArguments } from '../extraArguments';\nimport { EntityMembership, MembershipLevel, UserRead, Entity } from '../../userApi';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { sleep } from '../../utils/sleep';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const initializeEntityPage = (history: History) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n\n const t = i18n.getFixedT(i18n.language, 'entity');\n const params = getEntityParams(history.location, i18n);\n const entityStoryQuery: StoryQuery = {\n entityID: params.entityID,\n userID: 0,\n competitionPledgeID: 0,\n storyID: 0\n };\n setStoryQuery(entityStoryQuery)(dispatch, getState);\n try {\n const state = getState();\n const { competition, token } = state;\n const api = selectors.userApi(state);\n const res = await api.getCompetitionEntity(competition.id, params.entityID, token);\n const { pendingRoute: pr } = getState();\n dispatch(patch({\n ...res,\n spinner: false,\n pendingRoute: pr === Routes.Entity ? null : pr\n }));\n } catch (err) {\n const { pendingRoute: pr } = getState();\n dispatch(patch({\n storyPagination: { nextPage: -1 },\n pendingRoute: pr === Routes.Entity ? null : pr\n }));\n handleUnexpectedError(err, {\n title: t('Oops!'),\n message: t('We experienced an error retrieving stories.')\n })(dispatch, getState);\n }\n};\n\nexport const initializeTeamsPage = () => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const { pendingRoute } = getState();\n dispatch(patch({\n pendingRoute: pendingRoute === Routes.Teams ? null : pendingRoute\n }));\n};\n\nexport const joinTeam = (entity: Entity) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'teams');\n const state = getState();\n const api = selectors.userApi(state);\n const { user, competition } = state;\n const entityMembership: EntityMembership = {\n entityID: entity.id,\n userID: user.id,\n level: MembershipLevel.Member,\n status: EntityMembership.StatusEnum.Accepted\n };\n dispatch(patch({ spinner: true }));\n try {\n const res = await api.postCompetitionEntityMemberships(entity.id, competition.id, { entityMembership });\n trackEvent('entityMembership', 'create', entity.name);\n dispatch(patch({\n user: { acceptedCompetitionEntityMemberships: { [competition.id]: { [entity.id]: true } } } as UserRead,\n userMemberships: { [entity.id]: res.entityMembership},\n spinner: false\n }));\n toast({\n style: StyleState.Success,\n message: t(`You have successfully joined ${entity.name}.`)\n });\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('entityMembership', 'unhandledError', 'create');\n }\n};\n\nexport const deleteTeam = (entity: Entity) => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'entity');\n const state = getState();\n const api = selectors.userApi(state);\n try {\n dispatch(patch({ spinner: true }));\n await api.deleteCompetitionEntity(state.competition.id, entity.id);\n trackEvent('entity', 'delete', entity.name);\n toast({\n message: t('Your team was successfully deleted.'),\n style: StyleState.Info\n })(dispatch, getState);\n await sleep(4000);\n // TODO: We should make this cleaner than reloading the whole page.\n window.location.href = '/';\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('entity', 'unhandledError', 'delete');\n }\n};\n\nexport const deleteEntityMembership = (entityMembershipID: number) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n const { i18n } = extra;\n const t = i18n.getFixedT(i18n.language, 'entity');\n const state = getState();\n const { competition, userMemberships, entities } = state;\n const api = selectors.userApi(state);\n try {\n await api.deleteEntityMembership(entityMembershipID);\n const membership = values(userMemberships).find((m) => m.id === entityMembershipID);\n trackEvent('entityMembership', 'delete');\n const entity = entities[membership.entityID];\n const userUpdate: Partial = { acceptedCompetitionEntityMemberships: { [competition.id]: up.omitBy((_v, id) => id === membership.entityID) } };\n dispatch(patch({\n user: userUpdate as UserRead,\n userMemberships: up.omitBy((m, _entityID) => m.id === entityMembershipID),\n spinner: false\n }));\n toast({\n style: StyleState.Info,\n message: t('You have left {{teamName}}.', { teamName: entity.name })\n })(dispatch, getState);\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('entityMembership', 'unhandledError', 'delete');\n }\n};\n","import { State, StoryQuery } from '../state';\nimport { Dispatch } from 'redux';\nimport { getPledgeParams, Routes } from '../../utils/routerHelper';\nimport { History } from 'history';\nimport { setStoryQuery, patch, handleUnexpectedError } from '../actions/all';\nimport * as selectors from '../selectors';\nimport { ExtraArguments } from '../extraArguments';\n\nexport const initializePledgePage = (history: History) => async (dispatch: Dispatch, getState: () => State, { i18n }: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n\n const t = i18n.getFixedT(i18n.language, 'pledge');\n\n const params = getPledgeParams(history.location, i18n);\n\n const entityStoryQuery: StoryQuery = {\n entityID: 0,\n userID: 0,\n competitionPledgeID: params.competitionPledgeID,\n storyID: 0\n };\n setStoryQuery(entityStoryQuery)(dispatch, getState);\n\n try {\n const state = getState();\n const api = selectors.userApi(state);\n const { token } = state;\n const res = await api.getCompetitionPledge(params.competitionPledgeID, token);\n const pr = getState().pendingRoute;\n dispatch(patch({\n ...res,\n spinner: false,\n pendingRoute: pr === Routes.Pledge ? null : pr\n }));\n } catch (err) {\n handleUnexpectedError(err, {\n title: t('Oops!'),\n message: t('We experienced an error retrieving stories.')\n })(dispatch, getState);\n const pr = getState().pendingRoute;\n dispatch(patch({\n storyPagination: { nextPage: -1 },\n pendingRoute: pr === Routes.Pledge ? null : pr\n }));\n }\n};\n\nexport const initializePledgeCategoryPage = () => patch({ pendingRoute: null });\nexport const initializePledgesPage = () => patch({ pendingRoute: null });\n","import * as selectors from '../selectors';\nimport up from 'updeep';\nimport { Dispatch } from 'redux';\nimport { State, StoryQuery, Modals } from '../state';\nimport { ExtraArguments } from '../extraArguments';\nimport { getUserParams, Routes } from '../../utils/routerHelper';\nimport { patch } from './patch';\nimport { setStoryQuery } from './story';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { ActionType } from './types';\nimport { StyleState } from '../../utils/styles';\nimport { toast } from './toast';\nimport { getValidationErrors } from '../../utils/userApiHelper';\nimport { matchesErrorCode, ValidationError } from '../../userApi';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const initializeUserPage = () => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n\n const t = i18n.getFixedT(i18n.language, 'userProfile');\n const params = getUserParams(history.location, i18n);\n const entityStoryQuery: StoryQuery = {\n entityID: 0,\n userID: params.userID,\n competitionPledgeID: 0,\n storyID: 0\n };\n setStoryQuery(entityStoryQuery)(dispatch, getState);\n try {\n const state = getState();\n const { competition, token } = state;\n const api = selectors.userApi(state);\n const res = await api.getCompetitionUser(competition.id, params.userID, token);\n const { pendingRoute: pr } = getState();\n dispatch(patch({\n ...res,\n spinner: false,\n pendingRoute: pr === Routes.User ? null : pr\n }, ActionType.InitializeProfilePage));\n } catch (err) {\n const { pendingRoute: pr } = getState();\n dispatch(patch({\n storyPagination: { nextPage: -1 },\n pendingRoute: pr === Routes.User ? null : pr\n }));\n handleUnexpectedError(err, {\n title: t('Oops!'),\n message: t('We experienced an error retrieving stories.')\n })(dispatch, getState);\n }\n};\n\nexport const deleteUser = (password: string) => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'account');\n try {\n const state = getState();\n dispatch(patch({ spinner: true }));\n const api = selectors.userApi(state);\n const { user } = state;\n await api.postUserDelete(user.id, password, { headers: { 'Content-Type': 'text/plain' }});\n trackEvent('account', 'delete');\n dispatch(patch({ modal: null }));\n toast({\n style: StyleState.Info,\n message: t('Your account was successfully deleted')\n })(dispatch, getState);\n setTimeout(() => {\n localStorage.clear();\n window.location.href = '/';\n }, 5000);\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors && validationErrors.some(matchesErrorCode(ValidationError.CodeEnum.ErrPasswordIncorrect))) {\n const update: Partial = {\n userDeleteVE: validationErrors,\n modal: Modals.UserDeletePassword,\n spinner: false\n };\n dispatch(patch(update));\n return;\n }\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('account', 'unhandledError', 'delete');\n return;\n }\n};\n\nexport const removeUserDeleteVE = (code: ValidationError.CodeEnum) => async (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n const { userDeleteVE } = getState();\n if (!userDeleteVE) return;\n dispatch(patch({\n userDeleteVE: up(up.reject(matchesErrorCode(code)), userDeleteVE)\n }));\n};\n","import { Dispatch } from 'redux';\nimport { pick } from 'lodash';\nimport up from 'updeep';\nimport { UserUpdateForm } from '../../utils/forms';\nimport { State, Modals } from '../state';\nimport { ExtraArguments } from '../extraArguments';\nimport { patch } from './patch';\nimport * as selectors from '../selectors';\nimport { ValidationError, matchesErrorCode, UpdateUserParams, ImageResponse, UserRead } from '../../userApi';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { postImage } from './image';\nimport { getValidationErrors } from '../../utils/userApiHelper';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const removeUserUpdateVE = (code: ValidationError.CodeEnum) => async (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n const { userUpdateVE } = getState();\n dispatch(patch({\n userUpdateVE: up(up.reject(matchesErrorCode(code)), userUpdateVE)\n }));\n};\n\nexport const putUser = (userUpdateForm: UserUpdateForm, fileInputID: string, userUpdateID: string) =>\nasync (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { i18n, getImage } = extra;\n const t = i18n.getFixedT(i18n.language, 'userUpdate');\n dispatch(patch({ spinner: true }));\n\n let imageResponse: ImageResponse;\n if (getImage(fileInputID)) {\n imageResponse = await postImage(fileInputID)(dispatch, getState, extra);\n if (!imageResponse) return;\n dispatch(patch({ user: ({ profilePhoto: imageResponse.url } as UserRead) }));\n userUpdateForm.user = { ...userUpdateForm.user, profilePhoto: imageResponse.url };\n }\n\n try {\n const state = getState();\n const api = selectors.userApi(state);\n const { user } = state;\n const params = pick(userUpdateForm, ['user', 'password', 'newPassword']) as UpdateUserParams;\n if (!params.newPassword) delete params.newPassword;\n if (!params.user.profilePhoto) delete params.user.profilePhoto;\n const res = await api.putUser(user.id, params);\n trackEvent('account', 'update');\n const { modal } = getState();\n dispatch(patch({\n ...res,\n spinner: false,\n savedUserUpdateID: userUpdateID,\n modal: modal === Modals.UserUpdatePassword ? null : modal\n }));\n toast({\n style: StyleState.Success,\n message: t('Your update was saved successfully')\n })(dispatch, getState);\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (!validationErrors) {\n dispatch(patch({ modal: null }));\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('account', 'unhandledError', 'update');\n return;\n }\n const update: Partial = {\n userUpdateVE: validationErrors,\n spinner: false,\n modal: null\n };\n if (validationErrors.length === 1 && validationErrors.some((e) => e.field === 'password')) {\n // leave modal open if password is incorrect.\n delete update.modal;\n }\n dispatch(patch(update));\n }\n};\n","import { Dispatch } from 'redux';\nimport up from 'updeep';\nimport { State } from '../state';\nimport * as selectors from '../selectors';\nimport { ExtraArguments } from '../extraArguments';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\n\nexport const initializeSearchResults = (key: string) => patch({ searchResults: { [key]: up.constant([]) } });\n\nexport const clearSearchResults = (key: string) => patch({ searchResults: up.omitBy((_v, k) => k === key) });\n\nexport const search = (query: string, key: string) =>\nasync (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n dispatch(patch({ isSearching: { [key]: true } }));\n const state = getState();\n const api = selectors.userApi(state);\n const { competition } = state;\n try {\n const res = await api.getCompetitionUsers(competition.id, query);\n dispatch(patch({\n searchResults: { [key]: res.searchResults },\n isSearching: up.omitBy((_value, id) => id === key),\n users: res.users\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n","import { patch } from './patch';\nimport { pick } from 'lodash';\nimport up from 'updeep';\nimport { InviteAFriendForm } from '../../utils/forms/inviteAFriend';\nimport { Dispatch } from 'redux';\nimport * as selectors from '../selectors';\nimport initialState, { State } from '../state';\nimport { ExtraArguments } from '../extraArguments';\nimport { getValidationErrors, someMatchingEmailDomain } from '../../utils/userApiHelper';\nimport { handleUserApiError } from './handleUnexpectedError';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { ValidationError, matchesErrorCode } from '../../userApi';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const removeInviteAFriendVE = (code: ValidationError.CodeEnum) => async (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n const { inviteAFriendVE } = getState();\n dispatch(patch({\n inviteAFriendVE: up(up.reject(matchesErrorCode(code)), inviteAFriendVE)\n }));\n};\n\nexport const postInvite = (inviteAFriendForm: InviteAFriendForm, formID: string) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const t = extra.i18n.getFixedT(extra.i18n.language, 'inviteAFriend');\n const state = getState();\n const { competition } = state;\n dispatch(patch({ spinner: true }));\n try {\n const params = pick(inviteAFriendForm, ['name', 'email']);\n if (!someMatchingEmailDomain(params.email, competition.permittedDomains)) {\n toast({\n style: StyleState.Warning,\n message: t('You can only invite users with a valid competition email domain.')\n })(dispatch, getState);\n dispatch(patch({ spinner: false }));\n return;\n }\n\n const api = selectors.userApi(state);\n await api.postInvite(state.competition.name,{ name: params.name, email: params.email });\n trackEvent('invite', 'create');\n dispatch(patch({\n inviteAFriendVE: up.constant(initialState.inviteAFriendVE),\n savedInviteAFriendFormID: formID,\n spinner: false\n }));\n toast({\n style: StyleState.Success,\n message: t('Your invite has been sent.')\n })(dispatch, getState);\n } catch (err) {\n const validationErrors = await getValidationErrors(err);\n if (validationErrors) {\n dispatch(patch({\n inviteAFriendVE: validationErrors,\n spinner: false\n }));\n return;\n }\n handleUserApiError(err)(dispatch, getState);\n trackEvent('invite', 'unhandledError', 'create');\n }\n};\n","import { EntityForm } from '../../utils/forms';\nimport { patch } from './patch';\nimport { omit, values, pickBy } from 'lodash';\nimport { Dispatch } from 'redux';\nimport { State } from '../state';\nimport * as selectors from '../selectors';\nimport { ExtraArguments } from '../extraArguments';\nimport { Entity, ImageResponse } from '../../userApi';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { makeEntityPath } from '../../utils/routerHelper';\nimport { postImage } from './image';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const initializeTeamsNewPage = () => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n dispatch(patch({\n pendingRoute: null,\n spinner: false\n }));\n};\n\nexport const initializeEntityEditPage = () => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n dispatch(patch({\n pendingRoute: null,\n spinner: false\n }));\n};\n\nexport const saveEntity = (entityForm: EntityForm, photoInputID: string, bannerInputID: string) =>\nasync (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { i18n, getImage } = extra;\n const t = i18n.getFixedT(i18n.language, 'entity');\n dispatch(patch({ spinner: true }));\n\n try {\n const entity = omit(entityForm, ['dirty', 'submitted']) as Entity;\n let imageResponse: ImageResponse;\n if (getImage(photoInputID)) {\n imageResponse = await postImage(photoInputID)(dispatch, getState, extra);\n if (!imageResponse) {\n dispatch(patch({ spinner: false }));\n return;\n }\n entity.photo = imageResponse.url;\n }\n if (!entity.photo) {\n delete entity.photo;\n }\n let banner: ImageResponse;\n if (getImage(bannerInputID)) {\n banner = await postImage(bannerInputID)(dispatch, getState, extra);\n if (!banner) {\n dispatch(patch({ spinner: false }));\n return;\n }\n entity.bannerPhoto = banner.url;\n }\n if (!entity.bannerPhoto) delete entity.bannerPhoto;\n\n if (entityForm.id === 0) {\n await postCompetitionEntities(entity)(dispatch, getState, extra);\n trackEvent('entity', 'create');\n } else {\n await putCompetitionEntity(entity)(dispatch, getState, extra);\n trackEvent('entity', 'update');\n }\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('entity', 'unhandledError');\n return;\n }\n};\n\nconst postCompetitionEntities = (entity: Entity) => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'teams');\n const state = getState();\n const { competition } = state;\n const university = selectors.userUniversity(state);\n if (!university) {\n toast({\n title: t('Ooops!'),\n message: t('You must belong to a university to create a team.'),\n style: StyleState.Danger\n })(dispatch, getState);\n return;\n }\n entity.parentID = university.id;\n const { converter } = await import('../../utils/markdown');\n entity.descriptionHTML = converter.makeHtml(entity.descriptionMD);\n const api = selectors.userApi(state);\n const res = await api.postCompetitionEntities(competition.id, { entity });\n dispatch(patch({\n ...res,\n spinner: false\n }));\n const newEntity = values(res.entities).find((e) => e.parentID === university.id && e.name === entity.name);\n history.push(makeEntityPath(competition.id, newEntity, i18n.t));\n toast({\n style: StyleState.Success,\n message: t('Your team was saved successfully.')\n })(dispatch, getState);\n};\n\nconst putCompetitionEntity = (entity: Entity) => async (dispatch: Dispatch, getState: () => State, { i18n, history }: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'teams');\n const state = getState();\n const { competition } = state;\n const { converter } = await import('../../utils/markdown');\n entity.descriptionHTML = converter.makeHtml(entity.descriptionMD);\n const api = selectors.userApi(state);\n // FIXME: Not certain if or why removing nulls is necessary.\n const entityParams = pickBy(entity, (value) => value !== null) as Entity;\n const res = await api.putCompetitionEntity(competition.id, entity.id, { entity: entityParams });\n dispatch(patch({\n ...res,\n spinner: false\n }));\n history.push(makeEntityPath(competition.id, entity, i18n.t));\n toast({\n style: StyleState.Success,\n message: t('Your update was saved successfully.')\n })(dispatch, getState);\n};\n","import { Dispatch } from 'redux';\nimport up from 'updeep';\nimport { throttle, isEqual } from 'lodash';\nimport * as selectors from '../selectors';\nimport { State, defaultState, BlogEntryQuery, Modals } from '../state';\nimport { ImageResponse, BlogEntry } from '../../userApi';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { ActionType } from './types';\nimport { postImage } from './image';\nimport { toast } from './toast';\nimport { StyleState } from '../../utils/styles';\nimport { ExtraArguments } from '../extraArguments';\nimport { makeBlogEntryPath, makeEntityBlogPath, getEntityBlogParams, getBlogEntryParams, Routes } from '../../utils/routerHelper';\nimport { BlogEntryForm } from '../../utils/forms';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const saveBlogEntry = (blogEntryForm: BlogEntryForm, fileInputID: string) =>\nasync (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { i18n, getImage } = extra;\n const t = i18n.getFixedT(extra.i18n.language, 'blogEntry');\n dispatch(patch({ spinner: true }));\n\n const blogEntry = {\n ...blogEntryForm\n } as BlogEntry;\n let imageResponse: ImageResponse;\n if (getImage(fileInputID)) {\n imageResponse = await postImage(fileInputID)(dispatch, getState, extra);\n if (!imageResponse) return;\n blogEntry.photo = imageResponse.url;\n }\n\n if (!blogEntry.photo) delete blogEntry.photo;\n const { converter } = await import('../../utils/markdown');\n blogEntry.contentHTML = converter.makeHtml(blogEntry.contentMD);\n\n const entity = getState().entities[blogEntry.entityID];\n const entityName = entity && entity.name;\n let savedBlogEntry: BlogEntry;\n try {\n if (blogEntry.id === 0) {\n savedBlogEntry = await postEntityBlogEntry(blogEntry)(dispatch, getState, extra);\n trackEvent('blogEntry', 'create', entityName);\n } else {\n savedBlogEntry = await putBlogEntry(blogEntry)(dispatch, getState, extra);\n trackEvent('blogEntry', 'update', entityName);\n }\n toast({\n style: StyleState.Success,\n message: t('Your blog entry was successully saved')\n })(dispatch, getState);\n extra.history.push(makeBlogEntryPath(savedBlogEntry.id, t));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('blogEntry', 'unhandledError', entityName);\n }\n};\n\nconst postEntityBlogEntry = (blogEntry: BlogEntry) => async (dispatch: Dispatch, getState: () => State, { history, i18n}: ExtraArguments) => {\n const t = i18n.getFixedT(i18n.language, 'blogEntry');\n const state = getState();\n const api = selectors.userApi(state);\n const res = await api.postEntityBlogEntries(blogEntry.entityID, { blogEntry });\n const update: Partial = {\n spinner: false,\n blogEntries: [\n res.blogEntry,\n ...state.blogEntries\n ]\n };\n dispatch(patch(update));\n return res.blogEntry;\n};\n\nconst putBlogEntry = (blogEntry: BlogEntry) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { blogEntries } = getState();\n const api = selectors.userApi(getState());\n const res = await api.putEntityBlogEntry(blogEntry.entityID, blogEntry.id, { blogEntry });\n const index = blogEntries.findIndex((be) => be.id === blogEntry.id);\n dispatch(patch({\n spinner: false,\n blogEntries: up.updateIn(`${index}`, res.blogEntry, blogEntries)\n }));\n return res.blogEntry;\n};\n\nexport const deleteBlogEntry = (blogEntryToDelete: BlogEntry) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { blogEntries } = getState();\n dispatch(patch({ spinner: true, modal: Modals.None }));\n const t = extra.i18n.getFixedT(extra.i18n.language, 'blogEntry');\n const api = selectors.userApi(getState());\n try {\n await api.deleteEntityBlogEntry(blogEntryToDelete.entityID, blogEntryToDelete.id);\n extra.history.push(makeEntityBlogPath(blogEntryToDelete.entityID, t));\n toast({\n style: StyleState.Success,\n message: t('Your blog entry was successully deleted.')\n })(dispatch, getState);\n dispatch(patch({\n spinner: false,\n blogEntries: up.reject((be) => be.id === blogEntryToDelete.id)\n }));\n } catch (err) {\n dispatch(patch({ blogEntries }));\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n\nexport const initializeBlogEntryForm = (blogEntryID: number) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n if (blogEntryID === 0) {\n dispatch(patch({\n pendingRoute: null\n }));\n return;\n }\n const { blogEntries } = getState();\n let blogEntry = blogEntries.find((be) => be.id === blogEntryID);\n if (!blogEntry) {\n const newQuery: Partial = { entityID: 0, blogEntryID };\n await initializeBlogEntries(newQuery)(dispatch, getState, extra);\n blogEntry = blogEntries.find((be) => be.id === blogEntryID);\n }\n const { pendingRoute } = getState();\n dispatch(patch({\n pendingRoute: pendingRoute === Routes.BlogEntryEdit ? null : pendingRoute\n }));\n};\n\nexport const initializeBlogPage = () => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const newQuery: Partial = { entityID: 0, blogEntryID: 0 };\n await initializeBlogEntries(newQuery)(dispatch, getState, extra);\n const { pendingRoute } = getState();\n dispatch(patch({ pendingRoute: pendingRoute === Routes.Blog ? null : pendingRoute }));\n};\n\nexport const initializeBlogEntryPage = () => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const params = getBlogEntryParams(extra.history.location, extra.i18n);\n const { blogEntries } = getState();\n // if blog entry already loaded, no need to re-retrieve from the API.\n if (blogEntries.some((be) => be.id === params.blogEntryID)) {\n dispatch(patch({ pendingRoute: null }));\n return;\n }\n\n const newQuery: Partial = { entityID: 0, blogEntryID: (params.blogEntryID || 0) };\n await initializeBlogEntries(newQuery)(dispatch, getState, extra);\n const { pendingRoute } = getState();\n dispatch(patch({ pendingRoute: pendingRoute === Routes.BlogEntry ? null : pendingRoute }));\n};\n\nexport const initializeEntityBlogPage = () => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const params = getEntityBlogParams(extra.history.location, extra.i18n);\n const newQuery: Partial = { entityID: params.entityID, blogEntryID: 0 };\n await initializeBlogEntries(newQuery)(dispatch, getState, extra);\n const { pendingRoute } = getState();\n dispatch(patch({ pendingRoute: pendingRoute === Routes.EntityBlog ? null : pendingRoute }));\n};\n\nconst initializeBlogEntries = (newQuery: Partial) => async (dispatch: Dispatch, getState: () => State, { history, i18n }: ExtraArguments) => {\n const state = getState();\n const { blogEntryQuery, competition, token } = state;\n newQuery.competitionID = competition.id;\n if (isEqual(blogEntryQuery, newQuery)) return;\n\n setBlogEntryQuery(newQuery as BlogEntryQuery)(dispatch, getState);\n dispatch(patch({ spinner: true }));\n const api = selectors.userApi(state);\n try {\n const { blogEntryID, entityID, competitionID } = newQuery;\n const res = await api.getBlogEntries(entityID, competitionID, blogEntryID, 1, token);\n dispatch(patch({\n ...res,\n spinner: false\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n\nconst setBlogEntryQuery = (blogEntryQuery: BlogEntryQuery) => async (dispatch: Dispatch, _getState: () => State) => dispatch(patch({\n blogEntryQuery,\n blogEntries: up.constant(defaultState.blogEntries),\n blogEntryPagination: up.constant({ nextPage: -1 }),\n blogEntryComments: up.constant({}),\n blogEntryCommentPagination: up.constant({}),\n blogEntryCommentsFlags: up.constant({}),\n blogEntryCommentsLikes: up.constant({}),\n blogEntryLikes: up.constant({})\n}, ActionType.SetBlogEntryQuery));\n\nconst pageBlogEntriesBase = (_page: number) => async (dispatch: Dispatch, getState: () => State) => {\n const state = getState();\n const { blogEntryPagination, blogEntries, blogEntryQuery } = state;\n const api = selectors.userApi(state);\n try {\n const { blogEntryID, entityID, competitionID } = blogEntryQuery;\n const res = await api.getBlogEntries(entityID, competitionID, blogEntryID, blogEntryPagination.nextPage);\n const update: Partial = {\n ...res,\n blogEntries: [\n ...blogEntries,\n ...res.blogEntries\n ]\n };\n dispatch(patch(update, ActionType.GetBlogEntries));\n } catch (err) {\n dispatch(patch({\n blogEntryPagination: { nextPage: -1 }\n }, ActionType.GetBlogEntries));\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n\nexport const pageBlogEntries = throttle(pageBlogEntriesBase, 500);\n","import up from 'updeep';\nimport * as selectors from '../selectors';\nimport { CompetitionEntityPledge, CompetitionEntityPledges } from '../../userApi';\nimport { Dispatch } from 'redux';\nimport { State } from '../state';\nimport { ExtraArguments } from '../extraArguments';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const saveCompetitionEntityPledge = (competitionEntityPledge: CompetitionEntityPledge) => async (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n const api = selectors.userApi(getState());\n\n try {\n const { converter } = await import('../../utils/markdown');\n competitionEntityPledge.contentHTML = converter.makeHtml(competitionEntityPledge.contentMD);\n let competitionEntityPledges: CompetitionEntityPledges;\n if (competitionEntityPledge.id === 0) {\n competitionEntityPledges = await api.postCompetitionEntityPledges({ competitionEntityPledge });\n trackEvent('entityPledge', 'create');\n } else {\n competitionEntityPledges = await api.putCompetitionEntityPledge(competitionEntityPledge.id, { competitionEntityPledge });\n trackEvent('entityPledge', 'update');\n }\n dispatch(patch({\n competitionEntityPledges,\n editingCompetitionEntityPledgeEntityID: 0,\n spinner: false\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('entityPledge', 'unhandledError');\n }\n};\n\nexport const destroyCompetitionEntityPledge = (competitionEntityPledge: CompetitionEntityPledge) => async (dispatch: Dispatch, getState: () => State, _extra: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n const api = selectors.userApi(getState());\n\n try {\n await api.deleteCompetitionEntityPledge(competitionEntityPledge.id);\n trackEvent('entityPledge', 'delete');\n dispatch(patch({\n competitionEntityPledges: {\n [competitionEntityPledge.competitionPledgeID]:\n up.omitBy((_cep: CompetitionEntityPledge, entityID: number) => entityID === competitionEntityPledge.entityID)\n },\n editingCompetitionEntityPledgeEntityID: 0,\n spinner: false\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n trackEvent('entityPledge', 'unhandledError', 'delete');\n }\n};\n","import { Dispatch } from 'redux';\nimport { State } from '../state';\nimport { findPledgeByUUID, userApi } from '../selectors';\nimport { CompetitionPledges } from '../../utils/userApiHelper';\nimport { addUserPoints } from './score';\nimport { ExtraArguments } from '../extraArguments';\nimport logger from '../../utils/logger';\nimport { trackEvent } from '../../utils/googleAnalytics';\n\nexport const createCalculatorPledgePoints = () => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const state = getState();\n const { user } = state;\n if (!user) return;\n const pledge = findPledgeByUUID(state, { uuid: CompetitionPledges.TakeCalculator });\n const api = userApi(state);\n try {\n const res = await api.postCompetitionPledgePoints(pledge.id);\n const { points } = res;\n if (points && points.points > 0) {\n addUserPoints(points, pledge.id)(dispatch, getState, extra);\n }\n trackEvent('calculator', 'create');\n } catch (err) {\n // Fail silently from user's perspective here.\n logger.error(err, `Failed to add user calculator points. userID: ${user.id}`);\n trackEvent('calculator', 'unhandledError', 'create');\n }\n};\nexport const updateFootprint = (footprint:number) => async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const state = getState();\n const { user, competition } = state;\n const api = userApi(state); \n try{\n const res = await api.postUserCompetitionFootprint(competition.id, {footprint}) \n } catch (err) {\n // Fail silently from user's perspective here.\n logger.error(err, `Failed to update footprint: ${user.id}`);\n trackEvent('calculator', 'unhandledError', 'updateFootprint');\n }\n};","import * as selectors from '../selectors';\nimport up from 'updeep';\nimport { Dispatch } from 'redux';\nimport { State } from '../state';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\nimport { ExtraArguments } from '../extraArguments';\nimport { CompetitionUserScoreQuery } from '../../userApi';\nimport { Routes } from '../../utils/routerHelper';\n\nexport const pageTopUserScores = (page: number, sort:string) => async (dispatch: Dispatch, getState: () => State) => {\n const state = getState();\n const { topCompetitionUserScoreQuery, competition } = state;\n const api = selectors.userApi(state);\n try {\n const res = await api.getCompetitionUserScores(competition.id, topCompetitionUserScoreQuery.entityID, page,\"\", sort || \"\");\n const update = {\n users: res.users,\n topCompetitionUserScoreQuery: {\n pagination: res.topUserScoresQuery.pagination\n } as CompetitionUserScoreQuery,\n topCompetitionUserScores: up.constant(res.topUserScores)\n };\n dispatch(patch(update));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n\nexport const initializeTopUserScoresPage = (entityID: number, term?:string) => async (dispatch: Dispatch, getState: () => State, { history, i18n }: ExtraArguments) => {\n dispatch(patch({ spinner: true }));\n const state = getState();\n const api = selectors.userApi(state);\n try {\n const { competition } = state;\n const res = await api.getCompetitionUserScores(competition.id, entityID, 1, term||\"\", \"-points\");\n dispatch(patch({\n pendingRoute: null as Routes,\n users: res.users,\n topCompetitionUserScoreQuery: res.topUserScoresQuery,\n topCompetitionUserScores: up.constant(res.topUserScores),\n spinner: false\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n};\n","import { Dispatch } from 'redux';\nimport { values } from 'lodash';\nimport { State } from '../state';\nimport { ExtraArguments } from '../extraArguments';\nimport { CompetitionPledges } from '../../utils/userApiHelper';\nimport logger from '../../utils/logger';\nimport { makePledgePathLiteral, getPledgeParams } from '../../utils/routerHelper';\nimport { Story, CompetitionUser, CompetitionPledge } from '../../userApi';\nimport { postCompetitionStories } from './story';\nimport * as selectors from '../selectors';\nimport { uuid } from '../../utils/uuid';\nimport { patch } from './patch';\nimport { handleUnexpectedError } from './handleUnexpectedError';\n\nexport const initializeSurveyPage = () =>\n async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { userPledgeCompletions, competitionPledges } = getState();\n const surveyPledge = values(competitionPledges).find((pledge) => pledge.uuid === CompetitionPledges.TakeSurvey);\n if (!surveyPledge) {\n handleUnexpectedError(new Error(`Could not find survey pledge by uuid ${CompetitionPledges.TakeSurvey}.`))(dispatch, getState);\n return;\n } else if (userPledgeCompletions[surveyPledge.id]) {\n const { history, i18n } = extra;\n dispatch(patch({\n pendingRoute: null\n }));\n history.push(makePledgePathLiteral(surveyPledge, i18n.t));\n return;\n }\n const state = getState();\n const { competitionUser } = state;\n if (competitionUser.qualtricsID) {\n dispatch(patch({ pendingRoute: null }));\n return;\n }\n\n const api = selectors.userApi(state);\n const qualtricsID = uuid();\n try {\n await api.postQualtricsID(qualtricsID, { headers: { 'Content-Type': 'text/plain' }});\n dispatch(patch({\n competitionUser: ({ qualtricsID } as CompetitionUser),\n pendingRoute: null\n }));\n } catch (err) {\n handleUnexpectedError(err)(dispatch, getState);\n }\n };\n\nexport const createSurveyStory = () =>\n async (dispatch: Dispatch, getState: () => State, extra: ExtraArguments) => {\n const { user, competitionPledges } = getState();\n const surveyPledge = values(competitionPledges).find((pledge) => pledge.uuid === CompetitionPledges.TakeSurvey);\n if (!surveyPledge) {\n logger.error(`Could not find survey pledge by uuid ${CompetitionPledges.TakeSurvey}.`);\n return;\n }\n const { i18n, history } = extra;\n history.push(makePledgePathLiteral(surveyPledge, i18n.t));\n await waitUntilPledgePageInitialized(surveyPledge, getState, extra);\n const t = i18n.getFixedT(i18n.language, 'survey');\n const story: Story = {\n contentMD: t('{{name}} completed the research survey.', { name: user.firstName || user.lastName }),\n competitionPledgeID: surveyPledge.id\n };\n return postCompetitionStories(story, [], '', '')(dispatch, getState, extra);\n };\n\nconst maxWaitTimeForPledgePage = 10 * 1000;\nconst waitUntilPledgePageInitialized = async (surveyPledge: CompetitionPledge, getState: () => State, extra: ExtraArguments) => {\n const { history, i18n } = extra;\n return new Promise((resolve, reject) => {\n const start = Date.now();\n const interval = setInterval(() => {\n try {\n const params = getPledgeParams(history.location, i18n);\n if (params.competitionPledgeID === surveyPledge.id) {\n const { pendingRoute } = getState();\n if (pendingRoute === null) {\n clearInterval(interval);\n resolve();\n return;\n }\n }\n } catch (err) {\n logger.warn(err);\n }\n if (Date.now() - start > maxWaitTimeForPledgePage) {\n clearInterval(interval);\n reject(new Error('Survey pledge page failed to initialize.'));\n return;\n }\n }, 1000);\n });\n};\n","import * as selectors from '../selectors';\nimport { State } from '../state';\nimport { Dispatch } from 'redux';\n\nexport const parseOpenGraph = (urls: string[]) => async (_dispatch: Dispatch, getState: () => State) => {\n const api = selectors.userApi(getState());\n return api.postOpenGraph(urls);\n};\n","import * as React from 'react';\nimport { Route, Switch, Redirect } from 'react-router';\nimport { History } from 'history';\nimport { Router } from 'react-router-dom';\nimport Dashboard from './Dashboard';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { State, Toast } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport actions from '../redux/actions';\nimport { connect } from 'react-redux';\nimport ToastComponent from '../shared/Toast';\nimport Home from './Home';\nimport { Routes, makePathnames } from '../utils/routerHelper';\nimport About from './About';\nimport Faq from './Faq';\nimport Blog from './Blog';\nimport Share from './Share';\nimport Missing from './Missing';\nimport { withLocalization, LProps } from '../utils/wrappers';\nimport Entity from './Entity';\nimport Pledge from './Pledge';\nimport User from './User';\nimport Account from './Account';\nimport StoryPage from './StoryPage';\nimport TeamsNewPage from './TeamsNew';\nimport EntityEdit from './EntityEdit';\nimport Teams from './Teams';\nimport EntityBlog from './EntityBlog';\nimport BlogEntry from './BlogEntry';\nimport BlogEntryEdit from './BlogEntryEdit';\nimport BlogEntryNewPage from './BlogEntryNew';\nimport Pledges from './Pledges';\nimport PledgeCategory from './PledgeCategory';\nimport Calculator from './Calculator';\nimport CompetitionTopUserScores from './CompetitionTopUserScores';\nimport EntityTopUserScores from './EntityTopUserScores';\nimport Survey from './Survey';\nimport MissingCompetition from './MissingCompetition';\nimport GlobalAbout from './GlobalAbout';\n\ninterface ManualProps {\n history: History;\n}\n\ninterface Props extends ManualProps {\n initialized: boolean;\n spinner: boolean;\n toast: Partial;\n isLoggedIn: boolean;\n hasJoined: boolean;\n initializeEntityPage: (h: History) => void;\n}\n\nconst getHomeComponent= (isLoggedIn:boolean, hasJoined:boolean) =>{\n if(isLoggedIn && hasJoined){\n return Dashboard\n }else if(!hasJoined){\n return Home;\n }\n}\n\nconst Layout = ({\n initialized,\n spinner,\n toast,\n isLoggedIn,\n hasJoined,\n history,\n t\n}: LProps) => {\n const paths = makePathnames(t); \n const homePaths = [\n Routes.Login, Routes.Signup, Routes.ForgotPassword,\n Routes.PasswordReset, Routes.Email\n ];//.map((route) => paths[route]).join('|');\n const acctPaths = [\n Routes.Account, Routes.Email\n ];//.map((route) => paths[route]).join('|'); \n \n return (\n \n
\n {spinner && \n
\n
\n
}\n {initialized && \n \n \n {isLoggedIn && } \n {isLoggedIn && }\n {!isLoggedIn && }\n {/** Content routes */}\n \n \n } exact={true} />\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 {acctPaths.map((p)=>\n \n )}\n\n {/** Authentication routes */}\n {homePaths.map((p)=>\n \n )}\n \n\n {/** Static */}\n \n \n \n\n {/** No route matches */}\n \n \n }\n {toast.on && }\n
\n \n );\n};\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n initialized: state.initialized,\n spinner: state.spinner,\n toast: state.toast,\n isLoggedIn: selectors.isLoggedIn(state),\n hasJoined: selectors.hasJoined(state),\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n initializeEntityPage: actions.initializeEntityPage\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('routes')\n)(Layout) as React.ComponentClass;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { UserRead, CompetitionUser, Competition, Entity, CompetitionUserScore, CompetitionScoreLevel } from '../../userApi';\nimport { State } from '../../redux/state';\nimport * as selectors from '../../redux/selectors';\nimport actions from '../../redux/actions';\nimport { LProps } from '../../utils/wrappers';\nimport UserHeader from '../../shared/UserHeader';\nimport UserStats from '../../shared/UserStats';\nimport UserScoreLevel from '../../shared/UserScoreLevel';\nimport Scoreboard from '../../shared/Scoreboard';\nimport Stories from '../../shared/Stories';\nimport PledgeCarousel from '../../shared/PledgeCarousel';\nimport Footer from '../../shared/Footer';\nimport EarnMorePoints from './EarnMorePoints';\nimport { asPage } from '../../utils/wrappers/asPage';\n{/*import CampusRanks from './CampusRanks'; Get rid of Campus Ranking on dashboard.*/}\n\ninterface Props {\n user: UserRead;\n competitionUser: CompetitionUser;\n competition: Competition;\n hasEmailPermittedByCompetition: boolean;\n university: Entity;\n healthFacility: Entity;\n team: Entity;\n score: CompetitionUserScore;\n userUniversityRank: number;\n pledgeCompletions: number;\n scoreLevel: CompetitionScoreLevel;\n nextScoreLevel: CompetitionScoreLevel;\n reinitializeDashboardIfNecessary: () => void;\n}\n\ninterface DashboardState {\n mobileSection: number;\n}\nenum MobileSection {\n ACCOUNT = 1,\n STORIES = 2,\n STATS = 4\n}\n\nconst initialState: DashboardState = {\n mobileSection: MobileSection.STORIES\n};\n\nclass Dashboard extends React.Component, DashboardState> {\n public state = initialState;\n\n public componentWillMount() {\n const { reinitializeDashboardIfNecessary } = this.props;\n reinitializeDashboardIfNecessary();\n }\n\n public render() {\n const {\n user, competitionUser, university, healthFacility, team, score,\n userUniversityRank, pledgeCompletions, scoreLevel, nextScoreLevel, competition\n } = this.props;\n return (\n
\n
\n \n
\n \n {score &&\n \n }\n \n
\n
\n \n
\n {/*{university && This gets rid of the 'Campus Ranking' on dashboard.*/}\n
\n {competitionUser.verified && }\n
\n
\n
\n
\n \n \n
\n
\n
\n
this.selectSection(MobileSection.STORIES)}>\n \n
\n
this.selectSection(MobileSection.ACCOUNT)}>\n \n
\n
this.selectSection(MobileSection.STATS)}>\n \n
\n
\n
\n );\n }\n\n private selectSection(index: number) {\n this.setState({\n mobileSection: index\n });\n }\n\n private getActiveClass(index: number) {\n return (index & this.state.mobileSection) === this.state.mobileSection ? 'cc__mobile_show' : 'cc__mobile_hide';\n }\n\n private getSrc(index: number, image: string) {\n const selected = index === this.state.mobileSection ? '-selected' : '';\n return `/assets/dashboard/mobile/${image}${selected}.png`;\n }\n\n private getSrcSet(index: number, image: string) {\n const selected = index === this.state.mobileSection ? '-selected' : '';\n return `/assets/dashboard/mobile/${image}${selected}@2x.png 2x,\n /assets/dashboard/mobile/${image}${selected}@3x.png 3x`;\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n university: selectors.userUniversity(state),\n healthFacility: selectors.userHealthFacility(state),\n team: selectors.userTeam(state),\n user: state.user,\n competitionUser: state.competitionUser,\n competition: state.competition,\n score: state.competitionUserScores[state.user.id],\n scoreLevel: selectors.userScoreLevel(state),\n nextScoreLevel: selectors.nextUserScoreLevel(state),\n userUniversityRank: selectors.userUniversityRank(state),\n pledgeCompletions: selectors.userTotalPledges(state),\n hasEmailPermittedByCompetition: selectors.hasEmailPermittedByCompetition(state)\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n reinitializeDashboardIfNecessary: actions.reinitializeDashboardIfNecessary\n}, dispatch);\n\nexport default asPage({ isGrey: true, requiresCompetitionStart: true, requiresCompetitionVerification: true })(compose(\n connect(mapStateToProps, mapDispatchToProps)\n)(Dashboard));\n","import * as React from 'react';\nimport { round, omit } from 'lodash';\nimport { i18nextContext, I18next, default as i18next } from '../i18nextShim';\n\ninterface LocalizationProps {\n t: i18next.TranslationFunction;\n i18n: I18next;\n formatNumber: (value: number, places?: number, options?: Intl.NumberFormatOptions) => string;\n}\n\nexport type LProps

= LocalizationProps & P;\n\ntype TranslatableComponent

= React.StatelessComponent> | React.ComponentClass> | React.SFC>;\n\nconst fauxT = i18next.t;\n\nexport const withLocalization =

(namespace = 'common', exclude: string[] = []) => {\n if (typeof namespace !== 'string') {\n throw new Error(`namespace must be string. received ${typeof namespace}.`);\n }\n return (Component: TranslatableComponent

>) => (props: P) => React.createElement(\n i18nextContext.Consumer,\n {\n children: (i18n: I18next) =>{\n const localizationComponent = {\n t: fauxT,\n i18n: i18next,\n formatNumber: (value: number, places: number = 0, options: Intl.NumberFormatOptions = {}) =>\n round(value, places).toLocaleString(i18n.language, options)\n }\n //const localizationComponentWithExclude = omit(localizationComponent, exclude);\n \n return (React.createElement(\n Component,\n Object.assign(localizationComponent, props))\n )\n }\n }\n );\n};\n","import * as React from 'react';\nimport { withRouter, RouteComponentProps } from 'react-router';\nimport { i18nextContext, I18next } from '../i18nextShim';\nimport { Routes, getCurrentRoute, goToRouteByName } from '../routerHelper';\n\ninterface RouterHelpers {\n currentRoute: string;\n pushRoute: (route: Routes) => void;\n goToRouteByName: (route: Routes) => void;\n}\n\nexport type RouterProps

= RouteComponentProps

& RouterHelpers;\n\ntype RouterComponent

= React.FunctionComponent> |\n React.ComponentClass>;\n\nexport const withRouterAndHelpers =

(Component: RouterComponent

) => {\n const wrapped = ({ history, location, match, ...props }: RouteComponentProps

) =>\n React.createElement(\n i18nextContext.Consumer,\n {\n children: (i18n: I18next) => {\n const pushRoute = (route: Routes) => history.push(`/${localStorage.competitionName}/${route}`);\n const currentRoute = getCurrentRoute(location, i18n);\n return React.createElement(\n Component,\n {\n history, location, match, pushRoute,\n goToRouteByName: (route: Routes) => goToRouteByName(route, history, i18n),\n currentRoute, ...props\n }\n );\n }\n }\n );\n return withRouter(wrapped);\n};\n","import * as React from 'react';\n\ninterface Props {\n labels: string[];\n percent: number;\n style: React.CSSProperties;\n}\n\nconst ProgressBar = ({\n percent, labels, style\n}: Props) => (\n \n

\n  
\n \n
\n
{labels[0]}
\n
{labels[1]}
\n
\n \n);\nexport default ProgressBar;\n","import * as React from 'react';\nimport { Modal, ModalBody, Button } from 'reactstrap';\nimport { CompetitionScoreLevel } from '../userApi';\nimport { getScoreLevelPhoto } from '../utils/userApiHelper';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { State, Modals } from '../redux/state';\nimport actions from '../redux/actions';\nimport { connect } from 'react-redux';\n\ninterface Props {\n scoreLevels: CompetitionScoreLevel[];\n isOpen: boolean;\n toggle: () => void;\n}\n\nconst ScoreLevelModal = ({\n isOpen, toggle, scoreLevels, formatNumber, t\n}: LProps) => (\n \n \n \n }\n \n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: ManualProps): Partial => ({\n savedCommentPromptID: state.savedCommentPromptID\n});\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: ManualProps): Partial => bindActionCreators({\n postComments: actions.postComments\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withLocalization('story')\n)(CommentPrompt) as React.ComponentClass;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Story, CompetitionPledge, TaggedUserIDs } from '../userApi';\nimport { LProps } from '../utils/wrappers';\nimport actions from '../redux/actions';\nimport { State } from '../redux/state';\nimport { connect } from 'react-redux';\nimport StoryForm from './StoryForm';\n\ninterface ManualProps {\n story: Story;\n}\n\ninterface Props extends ManualProps {\n pledge: CompetitionPledge;\n putStory: (story: Story, taggedUserIDs: TaggedUserIDs, fileInputID: string, storyFormID: string) => void;\n}\n\nconst StoryEditor = ({\n putStory, story, pledge\n}: LProps) => (\n \n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n pledge: ownProps.story.competitionPledgeID ? state.competitionPledges[ownProps.story.competitionPledgeID] : null\n});\nconst mapDispatchToProps = (dispatch: Dispatch, ownProps: ManualProps): Partial => bindActionCreators({\n putStory: actions.putStory\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps)\n)(StoryEditor) as React.ComponentClass;\n","import * as React from 'react';\nimport { ButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\n\ninterface Props {\n currentValue: string | number;\n values: Array;\n displayValues?: string[];\n onChange: (value: string) => void;\n}\n\ninterface State {\n isOpen: boolean;\n}\nconst initialState: State = {\n isOpen: false\n};\n\nclass Dropdown extends React.Component {\n public state = initialState;\n\n public render() {\n const { values, displayValues, currentValue } = this.props;\n const { isOpen } = this.state;\n const displayDict: any = {};\n values.forEach((element, i: number) => {\n displayDict[element.toString()] = displayValues[i];\n });\n return (\n this.setState({ isOpen: !isOpen })} className=\"cc__dropdown\">\n \n {displayDict && displayDict[currentValue] ? displayDict[currentValue] : currentValue}\n \n \n {values.map((value: string, i) => (\n this.onChange(value.toString())}\n >\n {displayDict && displayDict[value.toString()] ? displayDict[value.toString()] : value}\n \n ))}\n \n \n );\n }\n private onChange(value: string) {\n this.props.onChange(value);\n this.setState({ isOpen: false });\n }\n}\n\nexport default Dropdown;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\n\ninterface Props {\n fileInputID: string;\n className?: string;\n disabled?: boolean;\n banner?: boolean;\n prompt?: string;\n}\n\nconst bannerClassname = 'cc__image_uploader__add_banner';\n\nconst ImageUploadTrigger = ({\n t, fileInputID, prompt = '', className = '',\n disabled = false, banner = false\n}: LProps) => (\n document.getElementById(fileInputID).click()}\n >\n
{t('Click{t('Add photo or video')}
\n {prompt &&
{prompt}
}\n \n);\n\nexport default compose(\n withLocalization('imageUploader')\n)(ImageUploadTrigger) as React.SFC;\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose } from 'redux';\nimport { State } from '../../redux/state';\nimport { connect } from 'react-redux';\nimport { DataURLFromFile, getDataURLFromFileInput } from '../../utils/image';\n\ninterface ManualProps {\n id: string;\n disabled?: boolean;\n onChange: (dataURLFromFile: DataURLFromFile) => void;\n}\n\nclass ImageInput extends React.Component> {\n public state = { dataURL: '' };\n\n private async onChange() {\n const { onChange } = this.props;\n const dataURLFromFile = await getDataURLFromFileInput(this.props.id);\n if (!dataURLFromFile) return;\n onChange(dataURLFromFile);\n }\n\n public render() {\n const {\n id, disabled = false\n } = this.props;\n return (\n this.onChange()}\n accept=\"image/x-png,image/gif,image/jpeg,video/mp4,video/quicktime,video/mpeg,video/avi,video/3gpp,video/x-m4v\"\n style={{ position: 'absolute', left: '-999999px' }}\n />\n );\n }\n}\n\nconst mapStateToProps = (_state: State, _ownProps: Partial): Partial => ({});\n\nexport default compose(\n withLocalization('imageUploader'),\n connect(mapStateToProps)\n)(ImageInput) as React.SFC;\n","import * as React from 'react';\n// @ts-ignore\nimport ReactCrop = require('react-image-crop');\nimport { debounce, isEqual } from 'lodash';\nimport {\n DataURLFromFile, ImageMutation\n} from '../../utils/image';\nimport Button from 'reactstrap/lib/Button';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport 'react-image-crop/dist/ReactCrop.css';\nimport actions from '../../redux/actions';\nimport { connect } from 'react-redux';\nimport { State } from '../../redux/state';\nimport { UserRead } from '../../userApi';\nimport { uuid } from '../../utils/uuid';\nimport { ImageMutation as ServerImageMutation } from '../../userApi';\nimport { imageMutationToServerIM } from '../../utils/userApiHelper';\n\ninterface ManualProps {\n dataURLFromFile: DataURLFromFile;\n onChange: (dataURLFromFile: DataURLFromFile) => void;\n}\n\ninterface Props extends ManualProps {\n postImageMutation: (dataURLFromFile: DataURLFromFile, mutation: Partial) => Promise;\n user: UserRead;\n}\n\ninterface ImageEditorState extends ImageMutation {\n processedDataURL: DataURLFromFile;\n crop: ReactCrop.Crop; \n}\n\nconst initialState: ImageEditorState = {\n rotation: 0,\n backgroundColor: '',\n processedDataURL: null,\n pixelCrop: {\n height: 0,\n width: 0,\n x: 0,\n y: 0\n },\n crop: {\n height: 0,\n width: 0,\n x: 0,\n y: 0\n },\n image: null\n};\n\nconst getDefaultCrop = (_dataURLFromFile: DataURLFromFile) => ({\n x: 0, y: 0,\n width: 99,\n height: 99\n});\n\nconst getDefaultPixelCrop = (dataURLFromFile: DataURLFromFile) => {\n if (!dataURLFromFile) {\n return {\n x: 0, y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: 0, y: 0,\n width: dataURLFromFile.width * 0.99,\n height: dataURLFromFile.height * 0.99\n };\n};\n\nclass ImageEditor extends React.Component, ImageEditorState> {\n public state = initialState;\n private id = uuid();\n private setMutationD: (update: Partial) => void;\n private cropElement: any\n\n public async componentDidMount() {\n const { dataURLFromFile } = this.props;\n this.setMutationD = debounce((update: Partial) => this.setMutation(update), 5000);\n\n this.initializeDataURLFromFile(dataURLFromFile);\n }\n\n public async componentWillReceiveProps(nextProps: LProps) {\n const { dataURLFromFile } = this.props;\n if (dataURLFromFile !== nextProps.dataURLFromFile) {\n this.initializeDataURLFromFile(nextProps.dataURLFromFile);\n }\n }\n\n private async setMutation(update: Partial) {\n const { postImageMutation, onChange, dataURLFromFile, t } = this.props;\n const mutation = imageMutationToServerIM(update, 1, ServerImageMutation.ContentTypeEnum.Png);\n const mutatedImage = await postImageMutation(dataURLFromFile, mutation);\n onChange(mutatedImage);\n }\n\n private async cutCrop() { \n this.setMutation({ pixelCrop: this.state.pixelCrop, image:this.cropElement.imageRef });\n }\n\n private async initializeDataURLFromFile(dataURLFromFile: DataURLFromFile) {\n const processedDataURL = dataURLFromFile;\n this.setState({\n rotation: initialState.rotation,\n backgroundColor: initialState.backgroundColor,\n processedDataURL,\n crop: getDefaultCrop(dataURLFromFile),\n pixelCrop: getDefaultPixelCrop(dataURLFromFile)\n }); \n }\n\n public render() {\n const { processedDataURL, rotation, crop, pixelCrop: pc } = this.state;\n const { t } = this.props;\n return (\n
\n {/** The is the image the user actually sees */}\n {(processedDataURL) &&\n
\n {/* @ts-ignore*/}\n )=>{this.cropElement=ref}}\n onImageLoad={(img:HTMLImageElement)=>{console.log(\"Image load\"); this.setState({image:img})}}\n src={processedDataURL.dataURL}\n //getNewSize={(height:number, width:number)=>console.log(height, width)}\n crop={crop}\n onChange={(newCrop:any) => this.setState({ crop: newCrop, pixelCrop:newCrop })}\n />\n
\n }\n
\n this.setMutation({ rotation: 360 + ((rotation - 90) % 360) })}\n >\n this.setMutation({ rotation: ((rotation + 90) % 360) || 360 })}\n >\n this.cutCrop()}\n >\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State) => ({\n user: state.user\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({\n postImageMutation: actions.postImageMutation\n}, dispatch);\n\nexport default compose(\n withLocalization('imageEditor'),\n connect(mapStateToProps, mapDispatchToProps)\n)(ImageEditor) as React.SFC;\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport RouteLink from './RouteLink';\nimport { Routes } from '../utils/routerHelper';\nimport { isProduction } from '../utils/environment';\nimport * as moment from 'moment';\nimport { compose, bindActionCreators, Dispatch } from 'redux';\nimport { State } from '../redux/state';\nimport { connect } from 'react-redux';\nimport { Competition } from '../userApi';\n\nconst Separator = () => ( · );\n\ninterface Props {\n competition: Competition;\n \n}\n\nconst Footer = ({\n t,competition\n}: LProps) => (\n
\n
\n {competition && <>{t('About')}}\n {!competition && <>{t('About')}}\n {competition && <>{t('Blog')}}\n {competition && <>{t('Calculator')}}\n {!isProduction &&\n \n {t('Data')}\n \n }\n {/* tslint:disable-next-line react-a11y-anchors */}\n {t('Spread the word')} \n \n {/* tslint:disable-next-line react-a11y-anchors */}\n {t('Terms of use')}\n
\n \n
\n);\n\nconst mapStateToProps = (state: State): Partial => ({ \n competition: state.competition\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): Partial<{}> => bindActionCreators({\n \n}, dispatch);\n\nexport default compose(\n withLocalization('footer'), \n connect(mapStateToProps, mapDispatchToProps)\n)(Footer);\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport { FormText } from 'reactstrap';\nimport { compose } from 'redux';\n\ninterface Props {\n idealRatio: string;\n}\n\nconst FormTextAspectRatio = ({\n t, idealRatio\n}: LProps) => (\n \n {t('An')} \n {t('aspect ratio')} \n {t('of {{ratio}} will work best.', { ratio: idealRatio })}\n);\n\nexport default compose(\n withLocalization('aspectRatio')\n)(FormTextAspectRatio) as React.SFC;\n","import * as React from 'react';\nimport { uniqueId } from 'lodash';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { FormGroup, Input, Popover, PopoverBody, InputGroupAddon, InputGroupText, Spinner, InputGroup } from 'reactstrap';\nimport { State } from '../redux/state';\nimport { UserRead } from '../userApi';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport SearchResults from './SearchResults';\nimport actions from '../redux/actions';\n\ninterface ManualProps {\n onSelect: (user: UserRead) => void;\n}\n\ninterface Props extends ManualProps {\n isSearching: (key: string) => boolean;\n initializeResults: (key: string) => void;\n clearResults: (key: string) => void;\n search: (query: string, key: string) => void;\n}\n\ninterface SearchState {\n showResults: boolean;\n input: string;\n hasInputDebounce: boolean;\n}\n\nconst didSearchResultsReturn = (id: string, nextProps: LProps, props: LProps) =>\n props.isSearching(id) && !nextProps.isSearching(id);\n\nclass Search extends React.Component, SearchState> {\n public state = { showResults: false, input: '', hasInputDebounce: false };\n private id = '';\n private inputDebounce: number;\n\n public componentWillMount() {\n this.id = uniqueId('search_input');\n this.props.initializeResults(this.id);\n }\n\n public componentWillUnmount() {\n this.props.clearResults(this.id);\n }\n\n public componentWillReceiveProps(nextProps: LProps) {\n if (didSearchResultsReturn(this.id, nextProps, this.props)) {\n this.setState({ showResults: true });\n }\n }\n\n private select(result: UserRead) {\n const {\n clearResults, onSelect\n } = this.props;\n clearResults(this.id);\n onSelect(result);\n this.setState({ showResults: false, input: '' });\n }\n\n private updateInput(input: string) {\n if (this.inputDebounce) {\n clearTimeout(this.inputDebounce);\n }\n this.setState({ hasInputDebounce: Boolean(input), input });\n if (input) {\n this.inputDebounce = window.setTimeout(() => {\n this.setState({ hasInputDebounce: false });\n const { search } = this.props;\n if (this.state.input) {\n search(this.state.input, this.id);\n }\n }, 1000);\n }\n }\n\n public render() {\n const {\n t, isSearching\n } = this.props;\n const { hasInputDebounce } = this.state;\n return (\n
\n \n \n \n {t('Email')}\n \n this.updateInput(e.target.value)}\n placeholder={t('Search for user by email')}\n />\n \n {(hasInputDebounce || isSearching(this.id)) && }\n {!(hasInputDebounce || isSearching(this.id)) &&    }\n \n \n \n \n \n this.select(result)}\n close={() => this.setState({ showResults: false })}\n />\n \n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Partial => ({\n isSearching: (id: string) => state.isSearching[id]\n});\nconst mapDispatchToProps = (dispatch: Dispatch): Partial => bindActionCreators({\n initializeResults: actions.initializeSearchResults,\n clearResults: actions.clearSearchResults,\n search: actions.search\n}, dispatch);\n\nexport default compose(\n withLocalization('search'),\n connect(mapStateToProps, mapDispatchToProps)\n)(Search) as React.SFC;\n","import * as React from 'react';\nimport {\n ListGroup, ListGroupItem\n} from 'reactstrap';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { compose } from 'redux';\nimport { UserRead } from '../userApi';\nimport { displayFullName } from '../utils/userApiHelper';\nimport { TranslationFunction } from 'i18next';\nimport { connect } from 'react-redux';\n\ninterface ManualProps {\n id: string;\n onSelect: (user: UserRead) => void;\n t: TranslationFunction;\n close: () => void;\n}\n\ninterface Props extends ManualProps {\n results: UserRead[];\n}\n\nconst SearchResults = ({\n onSelect, results, t, close\n}: Props) => (\n \n {results.length === 0 &&\n {t('No results to display.')}\n }\n {results.length > 0 && results.map((result) => (\n onSelect(result)}\n >{displayFullName(result)}\n ))}\n \n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n results: selectors.searchResults(state, ownProps)\n});\n\nexport default compose(\n connect(mapStateToProps)\n)(SearchResults) as React.ComponentClass;\n","import * as React from 'react';\nimport { Badge } from 'reactstrap';\nimport { UserRead } from '../userApi';\nimport { displayFullName } from '../utils/userApiHelper';\nimport { State } from '../redux/state';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\ninterface ManualProps {\n taggedUserIDs: number[];\n removeUserTag?: (user: UserRead) => void;\n}\n\ninterface Props extends ManualProps {\n taggedUsers: UserRead[];\n}\n\nconst StoryTaggedUsers = ({\n taggedUsers, removeUserTag\n}: Props) => (\n
\n {taggedUsers.map((user) => (\n \n {displayFullName(user)}\n {removeUserTag &&\n removeUserTag(user)}\n > \n }\n \n ))}\n
\n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n taggedUsers: ownProps.taggedUserIDs.map((userID) => state.users[userID])\n});\n\nexport default compose(\n connect(mapStateToProps)\n)(StoryTaggedUsers);\n","import * as React from 'react';\nimport { getURLs, isURL } from '../utils/strings';\nimport ExternalLink from './ExternalLink';\nimport logger from '../utils/logger';\n\nfunction* stringsToJSX(strings: string[]) {\n for (let i = 0; i < strings.length; i++) {\n const s = strings[i];\n if (isURL(s)) {\n yield ({s});\n } else {\n const split = s.split(/[\\n\\r]+/g);\n for (let j = 0; j < split.length; j++) {\n yield split[j];\n if (j !== split.length - 1) {\n yield
;\n }\n }\n }\n }\n}\n\nconst displayContent = (content: string) => {\n try {\n const urls = getURLs(content);\n const init: [string[], string] = [[], content];\n const reduction: [string[], string] = urls.reduce(([parts, remainder], url, i) => {\n const index = remainder.indexOf(url);\n const update: [string[], string] = [\n parts.concat([\n remainder.slice(0, index),\n remainder.slice(index, index + url.length)\n ]),\n remainder.slice(index + url.length)\n ];\n return update;\n }, init);\n reduction[0].push(reduction[1]);\n const a: Array = [];\n for (const elem of stringsToJSX(reduction[0])) {\n a.push(elem);\n }\n return a;\n } catch (err) {\n logger.error(new Error(`displayContent: ${err.message}`));\n return [content];\n }\n};\n\nexport default displayContent;\n","import * as React from 'react';\nimport { ButtonGroup, Button, Tooltip } from 'reactstrap';\nimport { TranslationFunction } from 'i18next';\nimport { makeStoryPath } from '../utils/routerHelper';\n\ninterface Props {\n isCreator: boolean;\n t: TranslationFunction;\n storyID: number;\n editStory: () => void;\n openConfirmStoryDelete: () => void;\n}\n\nconst copyPermalink = (storyID: number) => {\n const input = document.getElementById(`cc__story_link__${storyID}`) as HTMLInputElement;\n input.select();\n document.execCommand('copy');\n};\n\ninterface StoryControlsState {\n tooltipOpen: boolean;\n}\n\nconst initialState: StoryControlsState = {\n tooltipOpen: false\n};\n\nclass StoryControls extends React.Component {\n public state = initialState;\n\n private copyLink() {\n const { storyID } = this.props;\n copyPermalink(storyID);\n this.setState({ tooltipOpen: true });\n setTimeout(() => {\n this.setState({ tooltipOpen: false });\n }, 5000);\n }\n\n public render() {\n const {\n isCreator, t, storyID, editStory, openConfirmStoryDelete\n } = this.props;\n return (\n
\n \n this.copyLink()}\n aria-label={t('Copy link')}\n >\n {isCreator && }\n {isCreator && }\n \n \n this.state.tooltipOpen && this.setState({ tooltipOpen: false })}\n target={`cc__story_controls__link__${storyID}`}\n >\n {t('Story link copied!')}\n \n
\n );\n }\n}\n\nexport default StoryControls;\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { CompetitionPledge, Story, TaggedUserIDs } from '../userApi';\nimport { LProps } from '../utils/wrappers';\nimport actions from '../redux/actions';\nimport { State } from '../redux/state';\nimport { connect } from 'react-redux';\nimport StoryForm from './StoryForm';\n\ninterface ManualProps {\n competitionPledgeID: number;\n}\n\ninterface Props extends ManualProps {\n pledge: CompetitionPledge;\n postCompetitionStories: (story: Story, taggedUserIDs: TaggedUserIDs, fileInputID: string, storyFormID: string) => void;\n}\n\nconst StoryCreator = ({\n postCompetitionStories, pledge\n}: LProps) => (\n \n);\n\nconst mapStateToProps = (state: State, ownProps: ManualProps): Partial => ({\n pledge: state.competitionPledges[ownProps.competitionPledgeID]\n});\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: ManualProps): Partial => bindActionCreators({\n postCompetitionStories: actions.postCompetitionStories\n}, dispatch);\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps)\n)(StoryCreator) as React.ComponentClass;\n","import * as React from 'react';\nimport { Alert } from 'reactstrap';\nimport { LProps, withLocalization } from '../utils/wrappers';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\nimport { CompetitionPledge } from '../userApi';\nimport { isUserTypeEligibleForPledge, getScoreLevelPhoto, isUserScoreEligibleForPledge } from '../utils/userApiHelper';\nimport { orJoin } from '../utils/strings';\nimport logger from '../utils/logger';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\ninterface ManualProps {\n pledge: CompetitionPledge;\n}\n\ninterface Props extends ManualProps {\n message: string;\n}\n\ninterface UserIneligibleForPledgeState {\n hasError: boolean;\n}\n\n// IMPORTANT: This does not handle release date eligibility.\nclass UserIneligibleForPledge extends React.Component, UserIneligibleForPledgeState> {\n public state = { hasError: false };\n\n public static getDerivedStateFromError(_error: Error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n public componentDidCatch(error: Error, info: React.ErrorInfo) {\n // You can also log the error to an error reporting service\n logger.error(error, info);\n }\n\n public render() {\n const { hasError } = this.state;\n if (hasError) return
;\n const { message } = this.props;\n return (\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state: State, ownProps: LProps): Partial => {\n const { user } = state;\n const { pledge, t, i18n, formatNumber } = ownProps;\n\n const typeIneligible = !isUserTypeEligibleForPledge(user, ownProps.pledge);\n if (typeIneligible) {\n return {\n message: t('You must be a {{userType}} user to take this action.', { userType: orJoin(pledge.userTypes.map((ut) => ut.toString()), i18n)})\n };\n }\n const { competitionScoreLevels, competitionUserScores } = state;\n const score = competitionUserScores[user.id];\n const isScoreIneligible = !isUserScoreEligibleForPledge(score, competitionScoreLevels, pledge);\n if (isScoreIneligible) {\n const nextScoreLevel = selectors.nextUserScoreLevel(state);\n const pointsToNextLevel = nextScoreLevel.threshold - score.points;\n const icon = getScoreLevelPhoto(nextScoreLevel) ? `\"${nextScoreLevel.name}\"`: undefined;\n const message = t('Earn {{pointsToNextLevel}} more points to achieve {{icon}} {{scoreLevel}} and take this action!', {\n pointsToNextLevel: formatNumber(pointsToNextLevel, 0),\n scoreLevel: nextScoreLevel.name,\n icon\n });\n return {\n message\n };\n }\n return {\n message: t('You are ineligible for this pledge')\n };\n};\n\nexport default compose(\n withLocalization('userIneligibleForPledge'),\n connect(mapStateToProps)\n)(UserIneligibleForPledge) as React.SFC;\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Button, Carousel, CarouselItem, CarouselControl } from 'reactstrap';\nimport { Dispatch, compose, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { CompetitionPledge } from '../userApi';\nimport { makePledgePath, Routes, makeSimpleRoutePath } from '../utils/routerHelper';\nimport { LProps, RouterProps, withRouterAndHelpers, withLocalization } from '../utils/wrappers';\nimport { State } from '../redux/state';\nimport * as selectors from '../redux/selectors';\n\ninterface Props {\n pledges: CompetitionPledge[];\n}\n\ninterface PledgeCarouselState {\n activeIndex: number;\n}\n\nclass PledgeCarousel extends React.Component & RouterProps<{}>, PledgeCarouselState> {\n public state = { activeIndex: 0 };\n\n private next() {\n const { activeIndex } = this.state;\n const { pledges } = this.props;\n if (activeIndex === pledges.length - 1) {\n this.setState({ activeIndex: 0 });\n } else {\n this.setState({ activeIndex: activeIndex + 1 });\n }\n }\n\n private previous() {\n const { activeIndex } = this.state;\n const { pledges } = this.props;\n if (activeIndex === 0) {\n this.setState({ activeIndex: pledges.length - 1 });\n } else {\n this.setState({ activeIndex: activeIndex - 1 });\n }\n }\n\n public render() {\n const {\n pledges, history,\n t, formatNumber\n } = this.props;\n const { activeIndex } = this.state;\n return (\n \n
\n
\n
{t('Suggested actions')}
\n {t('View all actions')} >\n
\n this.next()}\n previous={() => this.previous()}\n interval={60000}\n >\n {pledges.map((pledge, i) => (\n \n
\n
\n
{pledge.shortTitle}
\n
\n
\n {t('Points')} \n {formatNumber(pledge.points, 0)}\n
\n
\n 2')\n }}\n /> \n {formatNumber(pledge.savingsCO2Lbs, 0)}\n
\n
\n
\n history.push(makePledgePath(pledge, t))}\n >{t('Take action')}\n
\n
\n
\n {/** OPTIMIZATION: don't load photos unless they are viewable. */}\n {activeIndex === i && {pledge.shortTitle}}\n
\n
\n
\n ))}\n this.previous()}>\n {t('previous')}\n \n this.next()} />\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: Props): Props => ({\n pledges: selectors.carouselPledges(state)\n});\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default compose(\n withRouterAndHelpers,\n withLocalization('pledges'),\n connect(mapStateToProps, mapDispatchToProps)\n)(PledgeCarousel) as React.ComponentClass;\n","import * as React from 'react';\nimport { LProps, withLocalization } from '../../utils/wrappers';\nimport InviteAFriendPledge from './InviteAFriend';\nimport { compose } from 'redux';\n\nconst EarnMorePoints = ({\n t\n}: LProps<{}>) => (\n
\n
{t('Earn more points')}
\n
\n \n
\n);\n\nexport default compose(\n withLocalization('earnMorePoints')\n)(EarnMorePoints);\n","import * as React from 'react';\nimport { FormGroup, Input, FormFeedback, Button, FormText } from 'reactstrap';\nimport { isEmpty } from 'lodash';\nimport { CompetitionPledge, ValidationErrors, ValidationError } from '../../userApi';\nimport { TranslationFunction } from 'i18next';\nimport { InviteAFriendForm, InviteAFriendErrors, makeInviteAFriendErrors } from '../../utils/forms';\nimport { State, Modals } from '../../redux/state';\nimport * as selectors from '../../redux/selectors';\nimport { CompetitionPledges, estimatePointsAvailable } from '../../utils/userApiHelper';\nimport actions from '../../redux/actions';\nimport { Dispatch, bindActionCreators, compose } from 'redux';\nimport { withLocalization } from '../../utils/wrappers';\nimport { connect } from 'react-redux';\nimport { uuid } from '../../utils/uuid';\nimport EntityEmailDomains from '../../shared/EntityEmailDomains';\nimport LinkButton from '../../shared/LinkButton';\n\ninterface Props {\n pledge: CompetitionPledge;\n pointsAvailable: number;\n t: TranslationFunction;\n validationErrors: ValidationErrors;\n savedInviteAFriendFormID: string;\n hasCompetitionEnded: boolean;\n save: (form: InviteAFriendForm, formID: string) => void;\n removeInviteAFriendVE: (code: ValidationError.CodeEnum) => void;\n openEntityEmailDomainModal: () => void;\n}\n\ninterface InviteAFriendPledgeState {\n form: { name: string, email: string };\n errors: Partial;\n submitted: boolean;\n dirty: { [key: string]: boolean };\n}\n\nconst initialState: InviteAFriendPledgeState = {\n errors: {},\n form: { name: '', email: '' },\n dirty: {},\n submitted: false\n};\n\nconst didFormSave = (nextProps: Props, id: string) =>\n nextProps.savedInviteAFriendFormID === id;\n\nclass InviteAFriendPledge extends React.Component {\n public state = initialState;\n private id = uuid();\n\n public componentWillReceiveProps(nextProps: Props) {\n const { t } = this.props;\n if (didFormSave(nextProps, this.id)) {\n this.setState(initialState);\n this.id = uuid();\n } else if (nextProps.validationErrors !== this.props.validationErrors) {\n const { form, dirty, submitted } = this.state;\n const errors = makeInviteAFriendErrors({ ...form, dirty, submitted }, nextProps.validationErrors, t);\n this.setState({ errors });\n }\n }\n\n private update(update: Partial, validate: boolean = false) {\n const { validationErrors, t } = this.props;\n if (validate) {\n const { dirty, submitted } = this.state;\n let { form } = this.state;\n if (update.form) {\n form = { ...form, ...update.form };\n }\n const errors = makeInviteAFriendErrors({ ...form, dirty, submitted }, validationErrors, t);\n update.errors = errors;\n }\n this.setState(update as InviteAFriendPledgeState);\n }\n\n private markDirty(field: string) {\n const { validationErrors, t, removeInviteAFriendVE } = this.props;\n const dirty = { ...this.state.dirty, [field]: true };\n const { submitted } = this.state;\n const update: Partial = { dirty };\n const errors = makeInviteAFriendErrors({ ...this.state.form, dirty, submitted }, validationErrors, t);\n update.errors = errors;\n this.setState(update as InviteAFriendPledgeState);\n if (field === 'email') {\n removeInviteAFriendVE(ValidationError.CodeEnum.ErrUserEmailExists);\n }\n }\n\n private submit() {\n const { dirty, form } = this.state;\n const submitted = true;\n const { save, validationErrors, t } = this.props;\n const errors = makeInviteAFriendErrors({ ...form, dirty, submitted }, validationErrors, t);\n if (isEmpty(errors)) {\n save({ ...form, dirty, submitted }, this.id);\n }\n this.setState({ submitted, errors });\n }\n\n public render() {\n const { form, errors } = this.state;\n const { pledge, t, pointsAvailable, openEntityEmailDomainModal, hasCompetitionEnded } = this.props;\n return (\n
\n
\n {pledge.shortTitle}\n
\n {(pointsAvailable && !hasCompetitionEnded) &&
{pledge.points} {t('points')}
}\n {!pointsAvailable &&
{t('You\\'ve earned all points for this pledge')}
}\n \n this.update({ form: { ...form, name: e.target.value } })}\n onBlur={(_e) => this.markDirty('name')}\n value={form.name || ''}\n />\n \n {errors.name && {errors.name}}\n \n \n this.update({ form: { ...form, email: e.target.value } })}\n onBlur={(_e) => this.markDirty('email')}\n value={form.email || ''}\n />\n {errors.email && {errors.email}}\n \n this.submit()}\n >{t('Invite')}\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: State, _ownProps: {}): Partial => {\n const pledge = selectors.findPledgeByUUID(state, { uuid: CompetitionPledges.InviteAFriend });\n return {\n pledge,\n hasCompetitionEnded: selectors.hasCompetitionEnded(state),\n pointsAvailable: estimatePointsAvailable(state.userPledgeCompletions, pledge),\n validationErrors: state.inviteAFriendVE,\n savedInviteAFriendFormID: state.savedInviteAFriendFormID\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch, _ownProps: {}): Partial => bindActionCreators({\n save: actions.postInvite,\n removeInviteAFriendVE: actions.removeInviteAFriendVE,\n openEntityEmailDomainModal: () => actions.setModal(Modals.EntityEmailDomains)\n}, dispatch);\n\nexport default compose(\n withLocalization('inviteAFriend'),\n connect(mapStateToProps, mapDispatchToProps)\n)(InviteAFriendPledge) as React.SFC;\n","import * as React from 'react';\nimport { Popover, ListGroup, ListGroupItem, PopoverBody, Button } from 'reactstrap';\nimport { Routes, makeSimpleRoutePath, makeEntityPath, FaqSection, makeFaqPath, makeUserPath } from '../utils/routerHelper';\nimport ProfilePhoto from './ProfilePhoto';\nimport { UserRead, Entity, Competition } from '../userApi';\nimport { TranslationFunction } from 'i18next';\nimport { History } from 'history';\nimport LinkButton from './LinkButton';\nimport RouteLink from '../shared/RouteLink';\nimport { Link } from 'react-router-dom';\nimport { scrollToLoginForm } from '../routes/Home';\n\ninterface Props {\n t: TranslationFunction;\n history: History;\n logout: () => void;\n user: UserRead;\n university: Entity;\n competition: Competition;\n loggedIn: boolean;\n isProduction: boolean;\n}\n\ninterface NavBarDropdownState {\n isOpen: boolean;\n isMobileOpen: boolean;\n}\n\nexport default class NavBarDropdown extends React.Component {\n public state = { isOpen: false, isMobileOpen: false };\n\n public render() {\n const { t, history, logout, user, university, competition, loggedIn, isProduction} = this.props;\n return (\n
\n
\n
\n {t('close this.setState({isMobileOpen: false})}\n srcSet=\"/assets/navbar/mobile/times@2x.png 2x,\n /assets/navbar/mobile/times@3x.png 3x\" />\n
\n
\n {loggedIn && (\n
\n this.setState({isMobileOpen: false})}>{t('HOME')}\n this.setState({isMobileOpen: false})}>{t('ACTIONS')}\n this.setState({isMobileOpen: false})}>{t('PROFILE')}\n this.setState({isMobileOpen: false})}>{t('ACCOUNT')}\n this.setState({isMobileOpen: false})}>{t('TEAMS')}\n {university &&\n this.setState({isMobileOpen: false})}\n to={makeEntityPath(competition.id, university, t)}\n >{t('CAMPUS')}\n }\n
\n )}\n {!loggedIn && (\n
\n {t('ABOUT')}\n {!isProduction && {t('BLOG')}}\n {t('FAQ')}\n {university &&\n {t('Campus')}\n }\n
\n )}\n
\n {loggedIn && (\n
\n {t('Sign out')}\n
\n )}\n {!loggedIn && (\n
\n {history.push(makeSimpleRoutePath(Routes.Signup, t)); scrollToLoginForm(); }}\n style={{ width: '250px', margin: '0 auto', marginBottom: 20}}\n >{t('Get started')}\n {history.push(makeSimpleRoutePath(Routes.Login, t)); scrollToLoginForm(); }}\n style={{ width: '250px', margin: '0 auto'}}\n >{t('Login')}\n
\n )}\n\n
\n
\n {loggedIn && (\n this.openDropdown()}>\n \n \n )}\n this.openMobileDropdown()}>\n {t('toggle\n \n
\n \n \n \n history.push(makeUserPath(competition.id, user, t))}\n >{t('Profile')}\n history.push(makeSimpleRoutePath(Routes.Account, t))}\n >{t('Account')}\n {t('Sign out')}\n \n \n \n
\n );\n }\n private openDropdown() {\n this.setState({ isOpen: !this.state.isOpen });\n }\n private openMobileDropdown() {\n this.setState({isMobileOpen: true});\n }\n}\n","import * as React from 'react';\nimport { compose, Dispatch, bindActionCreators } from 'redux';\nimport { Button } from 'reactstrap';\nimport { withRouterAndHelpers, LProps, RouterProps, withLocalization } from '../../utils/wrappers';\nimport { connect } from 'react-redux';\nimport { Routes } from '../../utils/routerHelper';\nimport { scrollToLoginForm } from '.';\n\ninterface AuthButtonsProps {\n readOnly?: boolean\n}\n\nconst AuthButtons = ({ pushRoute, t, readOnly }: LProps & AuthButtonsProps>) => (\n
\n {!readOnly ?\n <>\n
\n {t('Sign up today & start reducing emissions.')}\n
\n {pushRoute(Routes.Signup); scrollToLoginForm(); }}\n id=\"home__signup_button\"\n >\n {t('Get started')}\n \n {pushRoute(Routes.Login); scrollToLoginForm(); }}\n id=\"home__login_button\"\n >\n {t('Login')}\n \n \n :\n <>\n
\n Joining a campus competition? Enter the url in this format
\n https://www.coolcampuschallenge.org/<competitionName>\n
\n \n }\n
\n);\n\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default compose(\n withLocalization('yada'),\n withRouterAndHelpers, \n connect(null, mapDispatchToProps)\n)(AuthButtons) as React.SFC;\n","export * from './initialize';\nexport * from './errors';\nexport * from './auth';\nexport * from './landingPage';\nexport * from './errors';\nexport * from './handleUnexpectedError';\nexport * from './patch';\nexport * from './toast';\nexport * from './modal';\nexport * from './story';\nexport * from './userEmail';\nexport * from './comment';\nexport * from './forgotPassword';\nexport * from './passwordReset';\nexport * from './entity';\nexport * from './pledge';\nexport * from './user';\nexport * from './userUpdate';\nexport * from './search';\nexport * from './inviteAFriend';\nexport * from './entityForms';\nexport * from './blogEntry';\nexport * from './image';\nexport * from './competitionEntityPledge';\nexport * from './score';\nexport * from './calculator';\nexport * from './topCompetitionUserScores';\nexport * from './survey';\nexport * from './openGraph';\n","import * as showdown from 'showdown';\nimport * as xss from 'xss';\nimport 'react-mde/lib/styles/css/react-mde-all.css';\nimport ReactMde from 'react-mde';\n\n// removes XSS scripts and adds _blank target to all links.\nexport const filterHTML = (html: string) => {\n const div = document.createElement('div');\n div.innerHTML = html;\n const frag = document.createDocumentFragment();\n frag.appendChild(div);\n frag.querySelectorAll('a').forEach((a) => a.setAttribute('target', '_blank'));\n const filterXSS = new xss.FilterXSS({});\n return filterXSS.process(frag.firstElementChild.innerHTML);\n};\n\nconst filterHTMLExt: showdown.ShowdownExtension = {\n type: 'output',\n filter: (html: string, _converter: showdown.Converter, _options: showdown.ConverterOptions) => {\n return filterHTML(html);\n }\n};\nshowdown.extension('filterHTML', filterHTMLExt);\n\nexport { ReactMde };\n\nexport const converter = new showdown.Converter({\n tables: true,\n simplifiedAutoLink: true,\n strikethrough: true,\n tasklists: true,\n extensions: ['filterHTML']\n});\n","export * from './withLocalization';\nexport * from './withRouterAndHelpers';\n"],"sourceRoot":""}