{"version":3,"sources":["componentsV2/theme.ts","config.ts","aV2/routes/routesList.ts","modules/shared/HeaderToken.ts","Utils/Logger.ts","atomic/atoms/Body/index.tsx","Utils/data/ssoManager/common.ts","componentsV2/core/Typography/index.tsx","Utils/flashHandler.ts","atomic/atoms/SVGIcon/index.tsx","constants/endpoints.ts","modules/Admin.ts","Utils/admin/account.ts","componentsV2/core/Button/index.tsx","atomic/atoms/Button/styles.ts","atomic/atoms/Button/index.tsx","Utils/identity/accountManagementTypes.ts","modules/Session.ts","atomic/atoms/Button/buttonConfigs.ts","screens/admin/shared/table/TableCell.tsx","Utils/admin.ts","containers/helpers/ErrorHelper.ts","atomic/atoms/Heading/index.tsx","constants/routes.ts","controllers/flowsBuilder/FlowsBuilderTriggerController/ScheduleDateTimeController/types.ts","Utils/constants.ts","history.ts","componentsV2/core/TextField/index.tsx","componentsV2/core/Link/index.tsx","Utils/msteams/index.ts","constants/analytics/benchmark/constants.ts","Utils/data/planUpgradeModal/index.tsx","atomic/atoms/LoadingPulse/index.tsx","componentsV2/core/Card/index.tsx","aV2/modules/onboarding/index.ts","hooks/useAPIStateManagement/index.tsx","hooks/useRequest/useRequest.tsx","aV2/utils/ErrorHandler.ts","queries/utils.ts","Utils/validation.ts","constants/progressValidator.ts","Utils/objectUtils/getter.ts","aV2/modules/onboarding/selectors.ts","languages/en/flows/builder/index.ts","Utils/user.ts","interfaces/user.ts","modules/Me.ts","interfaces/Feed/Reaction/index.ts","Utils/analytics/index.ts","Utils/date/index.ts","Utils/text.tsx","languages/en/singleWords.ts","interfaces/assembly.ts","atomic/atoms/Image/index.tsx","Utils/styles/display.tsx","Utils/data/ssoManager/error.ts","atomic/atoms/Dropdown/index.tsx","Utils/analytics/constants.ts","atomic/molecules/NewTextfield/index.tsx","Utils/Intercom.ts","atomic/atoms/Divider/index.tsx","vendors/assembly_metrics.ts","Utils/analytics/Metrics.ts","modules/admin/selector.ts","screens/admin/content/settings/Integrations/interfaces.ts","hooks/useFetch/endpoints.ts","screens/shared/LoadingPulse.tsx","modules/admin/billing/account/index.ts","atomic/atoms/Modal/index.tsx","atomic/atoms/IconButton_V2/styles.ts","atomic/atoms/IconButton_V2/index.tsx","atomic/molecules/Field/index.tsx","interfaces/analytics/benchmarking/interfaces.ts","hooks/useToggle/index.ts","hooks/useSplitSdkConfig/constants.ts","modules/UI-Reducers/UIReducers.ts","atomic/atoms/Avatar/styles.ts","atomic/atoms/Avatar/index.tsx","hooks/useFetch/redux.ts","hooks/useFetch/index.tsx","atomic/atoms/Link/index.tsx","atomic/molecules/Chip/index.tsx","atomic/molecules/ProgressValidator/index.tsx","atomic/atoms/CircleIndicator/index.tsx","atomic/molecules/ValidationText/index.tsx","hooks/useAPIStateManagement/stateManagementConstants.ts","atomic/atoms/TextField/index.tsx","atomic/molecules/TextField_V2/interface.ts","atomic/molecules/TextField_V2/styles.tsx","atomic/molecules/Dropdown_V2/styles.tsx","atomic/atoms/DropdownCard_V2/styles.tsx","atomic/molecules/Dropdown_V2/interfaces.ts","atomic/atoms/DropdownCard_V2/index.tsx","atomic/molecules/TextField_V2/index.tsx","atomic/molecules/TextField_V2/utils.tsx","atomic/atoms/Label/index.tsx","atomic/atoms/TextArea/index.tsx","atomic/molecules/DropdownGroup/index.tsx","atomic/molecules/DropdownWithMultiSelect/index.tsx","atomic/molecules/TextfieldWithChips/index.tsx","atomic/molecules/CalendarNavElement/index.tsx","atomic/molecules/CalendarComponent/index.tsx","atomic/molecules/CalendarInput/styles.ts","atomic/molecules/CalendarInput/TriggerButton.tsx","atomic/molecules/CalendarInput/index.tsx","atomic/molecules/TextFieldWithEmoticonPicker/index.tsx","Utils/styles/css.ts","atomic/molecules/FlowCheckbox/styles.ts","atomic/molecules/FlowCheckbox/index.tsx","atomic/molecules/Input/index.tsx","Utils/flows/scheduler/index.ts","controllers/GSuiteSSOController/index.tsx","Utils/data/identityManager/common.ts","Utils/data/botManager/common.ts","componentsV2/core/Modal/index.tsx","screens/admin/shared/table/TableRow.ts","atomic/templates/BasicModalTemplate/index.tsx","atomic/molecules/IconInfo/index.tsx","atomic/atoms/Clickable/index.tsx","hooks/useOnOutsideClick/index.ts","Utils/api.ts","constants/devices.ts","atomic/molecules/ToastContent/index.tsx","Utils/toast/index.tsx","queries/Profile/index.ts","Utils/profilePic.tsx","Utils/admin/rewards.ts","Utils/window.ts","atomic/atoms/IconButton/index.tsx","queries/Profile/utils.ts","Utils/trophySelector.ts","Utils/superadmin/constants.ts","atomic/atoms/IconButton_V2/interface.ts","modules/utils/serialize.ts","modules/admin/billing/account/selector.ts","atomic/molecules/InfoAlert/index.tsx","screens/admin/shared/table/Table.ts","atomic/atoms/Link_V2/styles.ts","atomic/atoms/Link_V2/index.tsx","modules/Home.ts","modules/admin/users/Manage.ts","atomic/atoms/Radio/index.tsx","atomic/molecules/RadioGroup/styles.ts","hooks/useHover/index.tsx","atomic/molecules/UpgradeInfo/index.tsx","atomic/atoms/FlowsOtherMultipleChoiceInput/index.ts","atomic/molecules/RadioGroup/index.tsx","atomic/atoms/AssemblyCurrencyIcon/index.tsx","Utils/styles/text.ts","atomic/atoms/LinkItem/index.tsx","containers/Roles.ts","languages/en/rewards/index.ts","modules/me/selector.ts","Utils/identity/configureAssemblyStatus.ts","aV2/modules/admin/billings/paymentsHistory/index.ts","modules/Checkout.ts","atomic/atoms/Checkbox/styles.ts","atomic/atoms/Checkbox/index.tsx","atomic/organism/PlanUpgradeAddPaymentModal/styles.ts","Utils/device/index.ts","img/profilePlaceholder.png","atomic/atoms/ToolTip/index.tsx","constants/layout.ts","atomic/molecules/CircularProgress/index.tsx","atomic/molecules/Popover/index.tsx","atomic/molecules/BenchmarkStatusIcon/styles.ts","atomic/molecules/Popover/styles.tsx","atomic/molecules/BenchmarkStatusIcon/index.tsx","interfaces/Home/index.ts","languages/en/home/index.ts","atomic/molecules/DropdownListItem_V2/styles.ts","atomic/molecules/DropdownListItem_V2/index.tsx","Utils/identity/allowedSSOs.ts","hooks/useFeatureSplit/index.ts","languages/en/settings/admin/flows/index.ts","Utils/data/identityManager/ssoOffice365.tsx","Utils/flows/scheduler/formRRulString/index.ts","Utils/flows/scheduler/dateAndTime/index.ts","atomic/molecules/TextFieldWithEmoticonPicker/styles.ts","atomic/molecules/FormikField/index.tsx","queries/Settings/identityManager.ts","screens/admin/shared/AdminBreadCrumps.tsx","modules/admin/shared/AdminTables.ts","Utils/XlsReader.ts","modules/admin/Utils.ts","modules/admin/rewards/GiftCatalog.ts","sass/carrot/icons/CarrotIcon.tsx","modules/admin/Rewards.ts","modules/admin/Users.ts","componentsV2/core/CloseButton/index.tsx","Utils/objectUtils/convertToArray.ts","modules/admin/rewards/Anniversaries.ts","atomic/organism/PlanUpgradeSelectTierModal/index.tsx","atomic/organism/PlanUpgradeAddPaymentModal/index.tsx","containersV2/PlanUpgradeAddPaymentModalContainer/index.tsx","Utils/data/planUpgradeModal/errorMessages.ts","atomic/organism/PlanUpgradeReviewModal/index.tsx","containersV2/PlanUpgradeModalContainer/index.tsx","constants/im/index.ts","Utils/mappers/index.ts","modules/admin/users/Reports.ts","modules/admin/Billing.ts","atomic/organism/ImageUploader/useImageUploader.tsx","atomic/organism/ImageCropperModal_V2/styles.ts","atomic/organism/ImageCropperModal_V2/index.tsx","atomic/organism/ImageUploader/index.presentational.tsx","atomic/organism/ImageUploader/index.tsx","atomic/atoms/LoadingCircle/index.tsx","Utils/flows/scheduler/flowFrequencyOptions/index.ts","atomic/molecules/DropdownListItem/index.tsx","Utils/identity/languages.ts","screens/admin/shared/xlsScript.tsx","modules/Notification.ts","modules/admin/users/Activity.ts","Utils/data/analytics/common.ts","controllers/admin/settings/insights/useAdminInsightsModel.ts","controllers/admin/settings/insights/useAdminInsightsLogic.ts","img/analytics/analytics-graph-no-data-image.svg","atomic/molecules/AnalyticsUpgradeFreePlan/index.tsx","img/analytics/analytics-graph-all-toggle-off-image.svg","img/error.svg","Utils/adminAnalytics/methods.ts","atomic/molecules/LinearGraph/index.tsx","atomic/molecules/ChartToggle/index.tsx","atomic/organism/ChartToggleGroup/index.tsx","Utils/analytics/common.ts","atomic/templates/LinearGraphTemplate/index.tsx","atomic/molecules/HightlightAnalyticsNumber/index.tsx","atomic/molecules/PercentageIndicator/index.tsx","atomic/organism/AnalyticsInfoPanel/index.tsx","atomic/molecules/BenchmarkInfoModal/styles.ts","atomic/molecules/BenchmarkInfoModal/index.tsx","atomic/organism/SingleAccordion/styles.ts","atomic/organism/SingleAccordion/index.tsx","atomic/pages/AdminAnalytics/styles.ts","atomic/pages/AdminAnalytics/index.tsx","controllers/admin/settings/insights/AdminInsightsPageController.tsx","modules/home/data.ts","atomic/organism/SearchDropdown/index.tsx","modules/home/Feed.ts","atomic/molecules/CircularProgress/interfaces.ts","atomic/organism/Autocomplete/styles.ts","atomic/organism/Autocomplete/OptionLoader.tsx","atomic/organism/Autocomplete/index.tsx","screens/404.tsx","img/error-404.png","atomic/atoms/IntegrationButtonBase/index.tsx","atomic/molecules/IntegrationButton/index.tsx","atomic/atoms/ProgressBar/styles.ts","atomic/atoms/ProgressBar/index.tsx","atomic/atoms/EmoticonPicker/index.tsx","atomic/molecules/EmoticonPickerPopover/index.tsx","hooks/usePopover/interface.ts","hooks/usePopover/index.ts","atomic/molecules/ToolTipV2/styles.ts","atomic/molecules/ToolTipV2/index.tsx","../ /^/.//.*/.svg$","atomic/atoms/SVGIcon/icons/Link.svg","atomic/atoms/SVGIcon/icons/ZipRecruiterLogo.svg","atomic/atoms/SVGIcon/icons/accountSetup.svg","atomic/atoms/SVGIcon/icons/active-notification.svg","atomic/atoms/SVGIcon/icons/activity-history.svg","atomic/atoms/SVGIcon/icons/add-comment.svg","atomic/atoms/SVGIcon/icons/add-new-flow.svg","atomic/atoms/SVGIcon/icons/add-new.svg","atomic/atoms/SVGIcon/icons/add-person-transparent.svg","atomic/atoms/SVGIcon/icons/add-person.svg","atomic/atoms/SVGIcon/icons/add-photo.svg","atomic/atoms/SVGIcon/icons/admin-assembly-axomo-logos.svg","atomic/atoms/SVGIcon/icons/admin-settings.svg","atomic/atoms/SVGIcon/icons/admin-with-gear.svg","atomic/atoms/SVGIcon/icons/admin.svg","atomic/atoms/SVGIcon/icons/adp-logo.svg","atomic/atoms/SVGIcon/icons/adp-mini-logo-white.svg","atomic/atoms/SVGIcon/icons/alarm.svg","atomic/atoms/SVGIcon/icons/anniversary.svg","atomic/atoms/SVGIcon/icons/anonymous-avatar.svg","atomic/atoms/SVGIcon/icons/anonymous-rounded.svg","atomic/atoms/SVGIcon/icons/anonymous.svg","atomic/atoms/SVGIcon/icons/answer.svg","atomic/atoms/SVGIcon/icons/api-filled.svg","atomic/atoms/SVGIcon/icons/api.svg","atomic/atoms/SVGIcon/icons/archive.svg","atomic/atoms/SVGIcon/icons/arrow-down.svg","atomic/atoms/SVGIcon/icons/arrow-dropdown.svg","atomic/atoms/SVGIcon/icons/arrow-left.svg","atomic/atoms/SVGIcon/icons/arrow-right.svg","atomic/atoms/SVGIcon/icons/arrow-thick-down.svg","atomic/atoms/SVGIcon/icons/arrow-thick-up.svg","atomic/atoms/SVGIcon/icons/arrow-up.svg","atomic/atoms/SVGIcon/icons/assembly-icon.svg","atomic/atoms/SVGIcon/icons/assembly.svg","atomic/atoms/SVGIcon/icons/assemblyLogo.svg","atomic/atoms/SVGIcon/icons/atmention.svg","atomic/atoms/SVGIcon/icons/attachment-icon.svg","atomic/atoms/SVGIcon/icons/attachment.svg","atomic/atoms/SVGIcon/icons/avatar.svg","atomic/atoms/SVGIcon/icons/axomo-logo.svg","atomic/atoms/SVGIcon/icons/back-arrow.svg","atomic/atoms/SVGIcon/icons/badge-bubble.svg","atomic/atoms/SVGIcon/icons/bambooHR-logo.svg","atomic/atoms/SVGIcon/icons/benchmark-doing-great.svg","atomic/atoms/SVGIcon/icons/benchmark-need-boost.svg","atomic/atoms/SVGIcon/icons/benchmark-top-performer.svg","atomic/atoms/SVGIcon/icons/beta-mono.svg","atomic/atoms/SVGIcon/icons/beta.svg","atomic/atoms/SVGIcon/icons/billing.svg","atomic/atoms/SVGIcon/icons/bin.svg","atomic/atoms/SVGIcon/icons/birthday-cake.svg","atomic/atoms/SVGIcon/icons/birthday.svg","atomic/atoms/SVGIcon/icons/block.svg","atomic/atoms/SVGIcon/icons/break-connection.svg","atomic/atoms/SVGIcon/icons/building.svg","atomic/atoms/SVGIcon/icons/calendar.svg","atomic/atoms/SVGIcon/icons/carat-down.svg","atomic/atoms/SVGIcon/icons/carat-left.svg","atomic/atoms/SVGIcon/icons/carat-right.svg","atomic/atoms/SVGIcon/icons/carat-up.svg","atomic/atoms/SVGIcon/icons/caret-rounded.svg","atomic/atoms/SVGIcon/icons/caret.svg","atomic/atoms/SVGIcon/icons/celebration-bubble-disabled.svg","atomic/atoms/SVGIcon/icons/celebration-bubble.svg","atomic/atoms/SVGIcon/icons/check-rounded.svg","atomic/atoms/SVGIcon/icons/check.svg","atomic/atoms/SVGIcon/icons/checkbox-checked.svg","atomic/atoms/SVGIcon/icons/checkbox-unchecked.svg","atomic/atoms/SVGIcon/icons/checkmark-circle.svg","atomic/atoms/SVGIcon/icons/clip-data-protection.svg","atomic/atoms/SVGIcon/icons/clock.svg","atomic/atoms/SVGIcon/icons/close-circle-filled.svg","atomic/atoms/SVGIcon/icons/close-circle-outlined.svg","atomic/atoms/SVGIcon/icons/close-circle.svg","atomic/atoms/SVGIcon/icons/close-rounded.svg","atomic/atoms/SVGIcon/icons/close.svg","atomic/atoms/SVGIcon/icons/cloud-upload.svg","atomic/atoms/SVGIcon/icons/content.svg","atomic/atoms/SVGIcon/icons/copy.svg","atomic/atoms/SVGIcon/icons/create-bubble.svg","atomic/atoms/SVGIcon/icons/crown-solid.svg","atomic/atoms/SVGIcon/icons/delete.svg","atomic/atoms/SVGIcon/icons/department.svg","atomic/atoms/SVGIcon/icons/disabled-search.svg","atomic/atoms/SVGIcon/icons/discussion.svg","atomic/atoms/SVGIcon/icons/dot.svg","atomic/atoms/SVGIcon/icons/download.svg","atomic/atoms/SVGIcon/icons/drag-reorder.svg","atomic/atoms/SVGIcon/icons/edit-person.svg","atomic/atoms/SVGIcon/icons/edit.svg","atomic/atoms/SVGIcon/icons/email-send.svg","atomic/atoms/SVGIcon/icons/emoticon.svg","atomic/atoms/SVGIcon/icons/error-warning.svg","atomic/atoms/SVGIcon/icons/exit-left.svg","atomic/atoms/SVGIcon/icons/exit.svg","atomic/atoms/SVGIcon/icons/expand-more.svg","atomic/atoms/SVGIcon/icons/external-link.svg","atomic/atoms/SVGIcon/icons/eye.svg","atomic/atoms/SVGIcon/icons/feed.svg","atomic/atoms/SVGIcon/icons/file-upload-disabled.svg","atomic/atoms/SVGIcon/icons/file-upload.svg","atomic/atoms/SVGIcon/icons/filter-by.svg","atomic/atoms/SVGIcon/icons/filter.svg","atomic/atoms/SVGIcon/icons/flow-prompt-card-indicator-closed.svg","atomic/atoms/SVGIcon/icons/flows.svg","atomic/atoms/SVGIcon/icons/format-icon.svg","atomic/atoms/SVGIcon/icons/formbuilder_settings.svg","atomic/atoms/SVGIcon/icons/gSuite-logo.svg","atomic/atoms/SVGIcon/icons/general-settings.svg","atomic/atoms/SVGIcon/icons/generic-file.svg","atomic/atoms/SVGIcon/icons/gif-selector-icon.svg","atomic/atoms/SVGIcon/icons/gif.svg","atomic/atoms/SVGIcon/icons/gift.svg","atomic/atoms/SVGIcon/icons/globe.svg","atomic/atoms/SVGIcon/icons/google-light.svg","atomic/atoms/SVGIcon/icons/graph.svg","atomic/atoms/SVGIcon/icons/groups-bubble.svg","atomic/atoms/SVGIcon/icons/hamburger.svg","atomic/atoms/SVGIcon/icons/hashtag.svg","atomic/atoms/SVGIcon/icons/home.svg","atomic/atoms/SVGIcon/icons/hourglass.svg","atomic/atoms/SVGIcon/icons/icon-circle-outlined.svg","atomic/atoms/SVGIcon/icons/icon-loop.svg","atomic/atoms/SVGIcon/icons/idcard.svg","atomic/atoms/SVGIcon/icons/info-circle.svg","atomic/atoms/SVGIcon/icons/info-filled.svg","atomic/atoms/SVGIcon/icons/info-icon.svg","atomic/atoms/SVGIcon/icons/info-outlined.svg","atomic/atoms/SVGIcon/icons/info.svg","atomic/atoms/SVGIcon/icons/job-title.svg","atomic/atoms/SVGIcon/icons/key.svg","atomic/atoms/SVGIcon/icons/leaderboard.svg","atomic/atoms/SVGIcon/icons/loader.svg","atomic/atoms/SVGIcon/icons/location.svg","atomic/atoms/SVGIcon/icons/lock-icon.svg","atomic/atoms/SVGIcon/icons/lock.svg","atomic/atoms/SVGIcon/icons/magnify-thick-handle.svg","atomic/atoms/SVGIcon/icons/magnify.svg","atomic/atoms/SVGIcon/icons/mail.svg","atomic/atoms/SVGIcon/icons/manager.svg","atomic/atoms/SVGIcon/icons/members-list.svg","atomic/atoms/SVGIcon/icons/minus-rounded.svg","atomic/atoms/SVGIcon/icons/minus.svg","atomic/atoms/SVGIcon/icons/modal-close.svg","atomic/atoms/SVGIcon/icons/more.svg","atomic/atoms/SVGIcon/icons/ms-teams.svg","atomic/atoms/SVGIcon/icons/multiple-choice.svg","atomic/atoms/SVGIcon/icons/muted.svg","atomic/atoms/SVGIcon/icons/new-notification.svg","atomic/atoms/SVGIcon/icons/news.svg","atomic/atoms/SVGIcon/icons/no_notification_icon.svg","atomic/atoms/SVGIcon/icons/note.svg","atomic/atoms/SVGIcon/icons/notebook-checklist.svg","atomic/atoms/SVGIcon/icons/notification-badge.svg","atomic/atoms/SVGIcon/icons/notification-bubble.svg","atomic/atoms/SVGIcon/icons/notification.svg","atomic/atoms/SVGIcon/icons/office-365-mini-logo.svg","atomic/atoms/SVGIcon/icons/office365-logo.svg","atomic/atoms/SVGIcon/icons/okta-logo.svg","atomic/atoms/SVGIcon/icons/oneLogin-logo.svg","atomic/atoms/SVGIcon/icons/oneLogin.svg","atomic/atoms/SVGIcon/icons/open-ended.svg","atomic/atoms/SVGIcon/icons/password.svg","atomic/atoms/SVGIcon/icons/pending-person.svg","atomic/atoms/SVGIcon/icons/people.svg","atomic/atoms/SVGIcon/icons/person-filled.svg","atomic/atoms/SVGIcon/icons/photo-camera.svg","atomic/atoms/SVGIcon/icons/play.svg","atomic/atoms/SVGIcon/icons/plus.svg","atomic/atoms/SVGIcon/icons/post.svg","atomic/atoms/SVGIcon/icons/power.svg","atomic/atoms/SVGIcon/icons/premium-2.svg","atomic/atoms/SVGIcon/icons/premium-crown-icon.svg","atomic/atoms/SVGIcon/icons/private.svg","atomic/atoms/SVGIcon/icons/prompt.svg","atomic/atoms/SVGIcon/icons/question-mark.svg","atomic/atoms/SVGIcon/icons/questions.svg","atomic/atoms/SVGIcon/icons/quick-setup.svg","atomic/atoms/SVGIcon/icons/reaction.svg","atomic/atoms/SVGIcon/icons/reset-zoom.svg","atomic/atoms/SVGIcon/icons/response.svg","atomic/atoms/SVGIcon/icons/retry.svg","atomic/atoms/SVGIcon/icons/return-arrow.svg","atomic/atoms/SVGIcon/icons/revert.svg","atomic/atoms/SVGIcon/icons/reward.svg","atomic/atoms/SVGIcon/icons/rewards.svg","atomic/atoms/SVGIcon/icons/right-carat.svg","atomic/atoms/SVGIcon/icons/round-close.svg","atomic/atoms/SVGIcon/icons/routine.svg","atomic/atoms/SVGIcon/icons/run-now.svg","atomic/atoms/SVGIcon/icons/saml-authentication.svg","atomic/atoms/SVGIcon/icons/scale.svg","atomic/atoms/SVGIcon/icons/search.svg","atomic/atoms/SVGIcon/icons/security-login.svg","atomic/atoms/SVGIcon/icons/setting-filled.svg","atomic/atoms/SVGIcon/icons/setting.svg","atomic/atoms/SVGIcon/icons/settings-2.svg","atomic/atoms/SVGIcon/icons/settings.svg","atomic/atoms/SVGIcon/icons/share.svg","atomic/atoms/SVGIcon/icons/shield.svg","atomic/atoms/SVGIcon/icons/shipping.svg","atomic/atoms/SVGIcon/icons/signin-slack.svg","atomic/atoms/SVGIcon/icons/slack-logo.svg","atomic/atoms/SVGIcon/icons/slack-mini-logo-white.svg","atomic/atoms/SVGIcon/icons/slack-mini-logo.svg","atomic/atoms/SVGIcon/icons/sort.svg","atomic/atoms/SVGIcon/icons/star-bubble.svg","atomic/atoms/SVGIcon/icons/star.svg","atomic/atoms/SVGIcon/icons/stop.svg","atomic/atoms/SVGIcon/icons/summary.svg","atomic/atoms/SVGIcon/icons/survey.svg","atomic/atoms/SVGIcon/icons/sync.svg","atomic/atoms/SVGIcon/icons/task-checklist.svg","atomic/atoms/SVGIcon/icons/team.svg","atomic/atoms/SVGIcon/icons/teams-channel.svg","atomic/atoms/SVGIcon/icons/thumbnail.svg","atomic/atoms/SVGIcon/icons/tick.svg","atomic/atoms/SVGIcon/icons/today.svg","atomic/atoms/SVGIcon/icons/trends.svg","atomic/atoms/SVGIcon/icons/triangle-down.svg","atomic/atoms/SVGIcon/icons/trigger.svg","atomic/atoms/SVGIcon/icons/trophy.svg","atomic/atoms/SVGIcon/icons/unarchive.svg","atomic/atoms/SVGIcon/icons/unassigned.svg","atomic/atoms/SVGIcon/icons/undo.svg","atomic/atoms/SVGIcon/icons/union-rounded.svg","atomic/atoms/SVGIcon/icons/union.svg","atomic/atoms/SVGIcon/icons/unscheduled.svg","atomic/atoms/SVGIcon/icons/user.svg","atomic/atoms/SVGIcon/icons/users-with-circle.svg","atomic/atoms/SVGIcon/icons/users.svg","atomic/atoms/SVGIcon/icons/view-all.svg","atomic/atoms/SVGIcon/icons/warning-circle.svg","atomic/atoms/SVGIcon/icons/warning-hallow.svg","atomic/atoms/SVGIcon/icons/warning-hollow.svg","atomic/atoms/SVGIcon/icons/warning-red.svg","atomic/atoms/SVGIcon/icons/warning-shield.svg","atomic/atoms/SVGIcon/icons/warning.svg","atomic/atoms/SVGIcon/icons/zoom-in.svg","atomic/atoms/SVGIcon/icons/zoom-out.svg","img/svgs/assembly-logo-mono.svg","atomic/molecules/AssemblyLanderLoadingScreen/styles.ts","atomic/molecules/AssemblyLanderLoadingScreen/index.tsx","componentsV2/custom/TextDivider/index.tsx","languages/en/signIn/index.ts","atomic/pages/SSOInfoCard/index.tsx","img/logos/assemblyColor@1x.png","img/logos/Logo_Assembly_Employee_Recognition_1x.webp","img/logos/Logo_Assembly_Employee_Recognition_3x.webp","componentsV2/core/Navbar/index.tsx","img/logos/assemblyColor@3x.png","aV2/Layout/onboarding.tsx","Utils/data/SAML/error.ts","languages/en/errors/index.ts","interfaces/ResponseError.ts","controllers/auth/SAMLAuthController/useSAMLAuthLogic.ts","queries/Auth/SAML/index.ts","controllers/auth/SAMLAuthController/index.tsx","hooks/useDataDog.ts","img/brokenBug.png","img/safariLogo.png","img/chromeLogo.png","img/edgeLogo.png","img/firefoxLogo.png","screens/ErrorBoundary.tsx","interactionLayer/useFetchBotConfig/useFetchBotConfig.ts","interactionLayer/useVerifyBotCode/useVerifyBotCode.tsx","atomic/pages/BotManagerAuthorize/BotManagerAuthorize.tsx","interactionLayer/useFetchIMConfig/useFetchIMConfig.ts","interactionLayer/useVerifyIMCode/useVerifyIMCode.ts","img/svgs/assembly-logo.svg","atomic/organism/HeaderNavbar/index.tsx","atomic/templates/SSOOnboardingTemplate/SSOOnboardingTemplate.tsx","atomic/atoms/ButtonSSO/index.tsx","atomic/pages/IdentityManagerAuthorize/IdentityManagerAuthorize.tsx","containers/hoc/NoAuthentication.tsx","containers/hoc/Authentication.tsx","pages/signin/useFetchSSOConfig/useFetchSSOConfig.ts","controllers/MSTeams/useInteractionLayer.ts","controllers/MSTeams/usePreferredSSO.ts","pages/signin/SSOComponent.tsx","atomic/organism/CreateYourPassword/styles.ts","atomic/organism/CreateYourPassword/index.tsx","atomic/molecules/OrDivider/index.tsx","atomic/organism/SigninOptions/interface.ts","atomic/molecules/SigninSubText/index.tsx","atomic/organism/SigninOptions/styles.ts","atomic/organism/SigninOptions/index.tsx","img/email-verification.svg","atomic/organism/ValidateYourEmail/index.tsx","aV2/modules/login/index.ts","aV2/modules/login/selectors.ts","aV2/utils/Slack.ts","aV2/modules/slackOnboard/index.ts","aV2/utils/constants/slackOnboarding.ts","aV2/modules/slackOnboard/selectors.ts","aV2/screens/shared/ExistingAssemblyDiv.tsx","aV2/screens/Login/signInWithSAML.tsx","aV2/screens/Login/forgotPassword.tsx","aV2/Layout/verticallyCentered.tsx","aV2/screens/Login/forgotPassword/EmailSent.tsx","aV2/screens/Login/forgotPassword/VerifyToken.tsx","Utils/validators/password.ts","aV2/screens/Login/ResetPassword.tsx","aV2/screens/Login/resetPassword/ResetPasswordSuccess.tsx","aV2/modules/employeeSignup/index.ts","aV2/modules/employeeSignup/selectors.ts","aV2/screens/shared/TermsAndPrivacy.tsx","Utils/analytics/interfaces.ts","aV2/screens/Onboarding/EnterEmail.tsx","componentsV2/core/OTPInput/BaseOtpInput.tsx","aV2/screens/Onboarding/EnterCode.tsx","atomic/molecules/PhoneField/styles.ts","atomic/molecules/PhoneField/index.tsx","aV2/screens/Onboarding/EnterProfile.tsx","aV2/screens/Onboarding/EnterCompanyName.tsx","Utils/analytics/gtag.ts","aV2/screens/EmployeeSignup/EnterEmail.tsx","modules/onboarding/EmployeeSignup.ts","aV2/screens/EmployeeSignup/EnterProfile.tsx","componentsV2/core/Menu/MenuItem/index.tsx","componentsV2/custom/BirthDayMonthPicker/index.tsx","aV2/screens/shared/onboarding/SetupSuccess.tsx","aV2/screens/EmployeeSignup/EnterDetails.tsx","aV2/screens/EmployeeSignup/VerifyMagicLink.tsx","componentsV2/custom/AddToSlackButton/index.tsx","img/Slack_buttons/add_to_slack@1x.png","img/Slack_buttons/add_to_slack@2x.png","img/Slack_buttons/sign_in_with_slack@1x.png","img/Slack_buttons/sign_in_with_slack@2x.png","modules/session/selectors.ts","aV2/screens/SlackOnboarding/SignInWithSlack.tsx","aV2/screens/SlackOnboarding/SignupSuccess.tsx","aV2/screens/SlackOnboarding/EmailSignin.tsx","aV2/routes/index.tsx","containers/hoc/Authorization.tsx","containers/hoc/SuperAdminAuthorization.tsx","hooks/useSignout/index.ts","containers/SignOut.tsx","atomic/organism/CreateYourPassword/useCreateYourPasswordLogic.ts","atomic/organism/CreateYourPassword/validationSchema.ts","controllers/auth/CreatePasswordController/useCreatePassword.ts","queries/Auth/createPassword/index.ts","controllers/auth/CreatePasswordController/index.tsx","controllers/auth/GoogleOneTapLoginController/index.tsx","hooks/useAuth/index.ts","queries/Auth/GoogleOneTap/index.ts","controllers/auth/SAMLAuthController/SAMLAuthModalController.tsx","img/MS-team-configure-popup-bg.svg","atomic/molecules/MSTeamConfigurePopupContent/index.tsx","controllers/MSTeams/useMSTeamsConfig.ts","controllers/MSTeams/MSTeamsTabConfig.tsx","atomic/atoms/Card/index.tsx","atomic/molecules/GifContainer/index.tsx","hooks/useMultipleJobsPolling/index.ts","queries/Polling/index.ts","controllers/signup/UserSetupController/index.tsx","languages/en/flows/index.ts","pages/signin/SSOAuthorize/SSOAuthorize.presentational.tsx","pages/signin/useVerifySSOCode/useVerifySSOCode.ts","pages/signin/SSOAuthorize/SSOAuthorize.tsx","pages/signin/SSOErrors/SSOErrors.presentational.tsx","pages/signin/SSOErrors/useSSOError.ts","pages/signin/SSOErrors/SSOErrors.tsx","screens/admin/shared/navbar/Sidebar.tsx","Utils/admin/urls.ts","img/assembly-placeholder-logo.svg","componentsV2/custom/DropdownMenu/index.tsx","screens/header/AvatarDropdown.tsx","screens/header/HeaderWithMenu.tsx","screens/admin/shared/Navbar.tsx","screens/Header.tsx","screens/header/FlashBar.tsx","screens/superadmin/AccountsDashboard.tsx","componentsV2/custom/ButtonWithArrow/index.tsx","componentsV2/core/HelperText/index.tsx","componentsV2/core/BootstrapInput/index.tsx","screens/superadmin/ChangeCurrencyModal/index.tsx","screens/superadmin/SearchBar.tsx","modules/admin/superadmin.ts","modules/admin/superadmin/selector.ts","Utils/superadmin/billingTransitions.ts","screens/superadmin/AccountsDashboardV2.tsx","screens/superadmin/Analytics.tsx","screens/superadmin/Reports.tsx","routers/chunks.tsx","routers/ProtectedRoute/ProtectedRoute.tsx","routers/routesComponent.tsx","routers/routers.tsx","ToastContainer.tsx","App.tsx","modules/sagas/index.ts","store.ts","modules/admin/Integrations.ts","modules/admin/settings/CustomAllowance.ts","aV2/modules/admin/slack/index.ts","aV2/modules/admin/settings/myRewards/index.ts","hooks/useAPIStateManagement/reducer.ts","modules/Index.ts","modules/style-switcher-reducers/headerStyleReducers.ts","modules/style-switcher-reducers/headeractiveReducer.ts","modules/style-switcher-reducers/headerBannerStyleReducers.ts","modules/style-switcher-reducers/headerBannerActiveReducer.ts","modules/style-switcher-reducers/sidebarStyleReducers.ts","modules/style-switcher-reducers/sidebarActiveReducer.ts","index.tsx"],"names":["palette","primary","main","secondary","cyan1","cyan2","cyan4","cyan6","cyan7","cyan9","gray1","gray2","gray3","gray4","gray5","gray6","gray7","gray8","gray9","gray10","gray11","athensGray","mischka","silver","dustRed2","dustRed4","dustRed6","dustRed7","dustRed9","dayBreakBlue2","volcano","volcano2","volcano6","volcano7","sunriseYellow6","polarGreen6","polarGreen7","blue1","blue4","blue7","blue9","geekBlue1","geekBlue2","geekBlue3","geekBlue4","geekBlue5","geekBlue6","geekBlue7","geekBlue8","geekBlue9","gold1","gold2","gold3","gold4","gold5","gold6","gold7","gold9","gold10","purple1","purple2","purple4","purple7","purple9","disabledGray","darkText","greenLight","genoa","jetStream","lightGray1","lightGray2","lightGray3","lightGray4","lightGray5","lightGray6","darkGray1","drakGray2","darkGray3","darkGray7","fedora","darkGray9","alto","thunder","coffee","paleSlate","new","white","aqua","aqua2","blue","blue2","green","green1","green2","green4","green7","green9","orange2","orange3","orange6","orange7","orange9","lime2","brown","azalea","skyblue","red","red1","red2","red6","red7","ceriseRed","lightBlue","white2","white3","white4","yellow","yellow2","yellow3","yellow4","sunriseYellow","office365Logo","magenta2","inherit","action","hoverOpacity","typography","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightSemibold","fontWeightBold","fontSize","fontFamily","join","adminFontFamily","breakPoints","lg","md","sm","xs","animations","AdminMain","prop","opacity","y","duration","stagger","MAX_CUSTOM_ALLOWANCE","WEB_BASE_URL","config","API_URL","STRIPE_PUBLISHABLE","SLACK_APP_URL","IP_STACK_ACCESS_TOKEN","GIPHY_KEY","APP_URL","SOURCE","SPLIT_AUTH_KEY","SENTRY_KEY","MS_TEAMS","ENTITY_ID","NAME","DATA_DOG","applicationId","clientToken","service","env","ADP_MARKETPLACE_URL","MIXPANEL_KEY","PUSHER","KEY","GOOGLE_RECAPTCHA_SITE_KEY","console","log","process","PLAN_IDS","tier1","tier2","tier3","tier4","defaultApiUrl","REACT_APP_API_URL","API_URL_WITH_V2","API_URL_WITH_V3","GET_PLATFORM","isFromMSTeams","LANDER_URL","HELP_URL","TERMS_URL","PRIVACY_URL","IOS_URL","SIGNUP_SUCCESS","EMAIL_SIGNIN","EMAIL_SIGNUP","SIGN_IN","SIGN_OUT","FORGOT_PASSWORD","FORGOT_PASSWORD_SUCCESS","FORGOT_PASSWORD_VERIFY","RESET_PASSWORD","RESET_PASSWORD_SUCCESS","ENTER_EMAIL","ENTER_CODE","ENTER_COMPANY_NAME","EMPLOYEE_ENTER_EMAIL","EMPLOYEE_SET_PROFILE","EMPLOYEE_SET_PROFILE_FROM_INVITE","EMPLOYEE_SET_DETAILS","EMPLOYEE_VERIFY_MAGIC_LINK","SLACK_ONBOARD","SLACK_SIGN_IN","SLACK_SIGN_IN_V2","SLACK_ADD_TO","SLACK_USER_AUTH","SLACK_SELECT_CHANNELS","SLACK_SELECT_DEFAULT_CHANNEL","SLACK_SELECT_DEFAULT_CURRENCY","SLACK_SELECT_USERS_FOR_ACCESS","SLACK_HANDLE_MEMBERS","SLACK_SPECIFIC_MEMBERS","SLACK_AUTO_MANAGE_MEMBERS","SLACK_ASSEMBLY_ANNOUNCEMENT","SLACK_SUCCESS","ADP_SIGNIN","IM_AUTHORIZE","IM_AUTHORIZE_SSO","sso","BOT_AUTHORIZE","BOT_AUTHORIZE_FN","SSO_SIGNIN_AUTHORIZE","SSO_SIGNIN_AUTHORIZE_FN","SSO_AUTHORIZE_FN","ssoType","SSO_AUTHORIZE_MODAL_FN","SSO_SIGNIN_AUTHORIZE_MODAL","SSO_SIGNUP_AUTHORIZE_MODAL","SAML_AUTHORIZE_MODAL","SSO_SIGNUP_AUTHORIZE","SSO_SIGNUP_AUTHORIZE_FN","SSO_ERRORS","SSO_ERRORS_FN","errorCode","HOME","MSTEAM_CONFIG","SUPER_ADMIN_ANALYTICS","SUPER_ADMIN_DASHBOARD_V2","ADMIN","ADMIN_WORKSPACE_GENERAL","ADMIN_WORKSPACE_ALLOWANCES","ADMIN_WORKSPACE_ALLOWANCES_MANAGE","ADMIN_WORKSPACE_INTEGRATIONS_SLACK","ADMIN_WORKSPACE_INTEGRATIONS_TEAMS","ADMIN_WORKSPACE_INTEGRATIONS","ADMIN_WORKSPACE_INSIGHTS","ADMIN_RECOGNITION_SETTINGS","ADMIN_RECOGNITION_ACTIVITY","ADMIN_RECOGNITION_PARTICIPATION","ADMIN_FLOWS_PERMISSIONS","ADMIN_USER_MANAGE","ADMIN_USER_MANAGE_IDENTITY","ADMIN_USER_INVITE","ADMIN_USER_EARNINGS","ADMIN_CELEBRATIONS_ANNIVERSARIES","ADMIN_CELEBRATIONS_BIRTHDAYS","ADMIN_REWARDS_GIFT_CARDS","ADMIN_REWARDS_CULTURE","ADMIN_REWARDS_CHARITY","ADMIN_REWARDS_REPORT","ADMIN_REWARDS_SWAGS","ADMIN_BILLING_ACCOUNT","ADMIN_BILLING_HISTORY","ADMIN_BILLING_HISTORY_INVOICE","ADMIN_BILLING_METHOD","ADMIN_SAML_AUTHENTICATION","HELP_CENTER","CLIENT_APP","API_VERSION_V2","AuthHeaders","headers","XClient","window","location","hostname","port","Pragma","HeadersWithoutAuth","HeadersWithoutAuthV2","clientAPIVersion","AuthHeadersV2","PRINT_ON","checkIfProduction","text","shouldShow","variantMap","body1","lineHeight","fontWeight","ThemeV2","fontStyle","body1Bold","body1Medium","body1Italic","body2","body2Bold","body2Medium","body3","body3Bold","body3Medium","body4","body4Bold","body4Medium","subHead1","subHead2","subHead2Bold","subHead2Medium","subHead3","BodyText","styled","div","props","textAlign","color","padding","margin","Body","children","parentClassName","className","variant","inline","disabled","style","undefined","dataTestId","variantFromMap","fontColor","paletteColor","bodyStyle","useMemo","as","MemoizedBody","React","memo","displayName","SSOOptions","SSOTypes","ButtonContent","SIGN_UP","COMING_SOON","SSOContent","GOOGLE","ssoParam","logo","OFFICE365","iconColor","theme","ADP","SLACK","LIFION","styles","root","themeV2","adminRoot","getFontWeight","weight","CustomTypography","classes","rest","classNames","AdminTypography","withStyles","defaultProps","showSuccessMessage","message","dispatch","flashMessage","type","showErrorMessage","flashErrorMessage","showInfoMessage","StyledIcon","span","size","rotate","flip","getTransform","stroke","hoverColor","SVGIcon","svg","icon","require","default","e","error","dangerouslySetInnerHTML","__html","GET_INTEGRATION_STATUS","GET_BOT_OAUTH_CONFIG","AUTHORIZE_BOT","SLACK_BOT_INTEGRATION_DATA","MSTEAMS_BOT_INTEGRATION_DATA","SLACK_SET_ACTIVE_CHANNEL","SLACK_CREATE_ACTIVE_CHANNEL","MSTEAMS_SET_ACTIVE_CHANNEL","MSTEAMS_CREATE_ACTIVE_CHANNEL","GET_CUSTOM_EMOJI","SET_CUSTOM_CURRENCY","SKIP_CUSTOM_CURRENCY","SEND_WELCOME_MESSAGE","GET_IDENTITY_MANAGER_DATA","GET_SSO_SIGNIN_CONFIG","GET_SSO_SIGNUP_CONFIG","GET_SSO_OAUTH_CONFIG","SSO_SIGNIN","SSO_SIGNUP","GET_JOB_STATUS","GET_MULTIPLE_JOBS_STATUS","ANALYTICS_PEOPLE_SUMMARY","ANALYTICS_PROFILE_INFORMATION","ANALYTICS_RECOGNITION_SUMMARY","ANALYTICS_PEOPLE_GRAPH_DATA","ANALYTICS_RECOGNITION_GRAPH_DATA","ANALYTICS_CORE_VALUES_GRAPH_DATA","ANALYTICS_BADGES_GRAPH_DATA","ANALYTICS_OVERALL_ENGAGEMENT","GET_PREFERRED_SSO","GET_INTEGRATION_DATA","GET_PAGINATED_INTEGRATION_DATA","GET_PAGINATED_INTEGRATION_DATA_MAIN","GET_IM_ENTITY_COUNT","GET_ASSEMBLY_UNIQUE_SHORT_CODE","GET_PROFILE_INFO","USER_VERIFY_TOKEN","UPDATE_PROFILE_INFO","UPDATE_FLOW_PERMISSIONS_AND_GIF_SETTINGS","GET_CURRENT_PLAN","GET_REDEEM_INFO","QUICK_SETUP_GUIDE","GET_PAGINATED_MEMBERS","GET_AXOMO_INFO","ESTABLISH_AXOMO_CONNECTION","BREAK_AXOMO_CONNECTION","FETCH_INVENTORY_SWAGS","TOGGLE_REWARD_ITEMS","TOGGLE_REWARDS_VISIBILITY","AXOMO_REWARD_CATALOGUE","AXOMO_PLACE_ORDER","UPDATE_REWARD_ITEM","UPDATE_SHIPPING_COST","GET_SAML_DETAILS","UPDATE_SAML_DETAILS","ENABLE_SAML_DETAILS","DISABLE_SAML_DETAILS","UPDATE_SAML_QUICK_SETTINGS","ADMIN_CUSTOM_REWARD","ADMIN_CUSTOM_REWARD_EDIT","AUTHENTICATE_SAML","GET_SAML_AUTH_CONFIG","GOOGLE_ONE_TAP_AUTH","FLOWS_ONBOARDING_JOB","GET_FLOW_POST_DOWNLOAD_URL","GET_LOGO_UPLOAD_SIGNED_URL","DELETE_ATTACHMENT_FILE","GET_IM_SETUP_JOB","GET_IM_CONFIG","GET_IM_INTEGRATION_DATA","VERIFY_CREATE_PASSWORD_TOKEN","GET_LOGIN_OPTIONS","CREATE_PASSWORD","GET_MERGE_LINK_TOKEN","AUTHORIZE_MERGE_PUBLIC_TOKEN","UPDATE_GENERAL_SETTINGS","requestType","endpointURL","PAGINATED_INTEGRATION_DATA_ITEMS_LIMIT","apiEndpoints","EMPLOTER_INFO_SETTINGS","ADMIN_REQUEST_STATUSES","BLANK","UPDATING","adminProcessError","actions","Logger","response","statusCode","status","requestFailed","ErrorMessages","serverError","href","history","push","data","responseData","msg","processErrorResponse","code","_","get","networkError","GOT_MY_EMPLOYER","GOT_COMPANY_DETAILS","GOT_PAYMENT_DETAILS","REQUEST_FAILED","ADMIN_REQUEST_STATUS","gotMyEmployer","employer","updateIntercom","employerId","_id","employerName","name","rewardsPayment","hasRewardsPayments","adminActions","gotCompanyDetails","companyDetails","updateRequestStatus","gotPaymentDetails","paymentDetails","errorMessage","updateEmployerInfoAction","a","axios","put","res","result","success","state","requestStatus","id","featureList","getTierForPlanId","planId","currentPlans","Object","keys","tier","forEach","tierVal","FEATURE_STATUS","ENABLED","DISABLED","FEATURE_LIST","HISTORY_DURATION_IN_MONTHS","PER_SEAT_PRICE","CHARGEABLE","CULTURE_REWARDS","CHARITY_REWARDS","AXOMO_SWAGS","GIFT_CARD_REWARDS","INTERNATIONAL_GIFT_CARD_REWARDS","CASH_EQUIVALENT_REWARDS","EMPLOYEE_LIMIT","INTEGRATIONS_LIMIT","CUSTOM_ALLOWANCE","BIRTHDAY_BOT","ANNIVERSARY_BOT","PREMIUM_CUSTOMER_SUPPORT","RECOGNITION_MESSAGES","CORE_VALUES","PAID_ALLOWANCE","SWITCH_PLAN","CUSTOM_CURRENCY","CUSTOM_BRAND_LOGO","PRIVATE_MESSAGE","ACCOUNT_MANAGEMENT_SELECTION","FEED_SEARCH","ADMIN_ANALYTICS","ALLOW_ADP_IDENTITY_MANAGER","ALLOW_MERGE_IDENTITY_MANAGER","SAML","ALLOW_TO_CHANGE_USER_INVITE_AND_REQUEST_PERMISSION","ALLOW_TO_CHANGE_ASSEMBLY_CURRENCY","ALLOW_TO_CHANGE_ASSEMBLY_LOGO","getFeatureDeatilsForPlan","currentPlan","feature","features","find","feature_","isFeatureEnabled","requiredFeature","FAQData","customCurrency","QUESTION","ANSWER","NAME_TITLEIZED_PLURAL","downgradeToBusinessFeatureLoss","downgradeToTeamFeatureLoss","downgradeToFreeFeatureLoss","StyledButton","contained","height","borderRadius","backgroundColor","textDecoration","boxShadow","containedPrimary","darken","containedSecondary","label","textTransform","fontStretch","letterSpacing","Button","blink","keyframes","ButtonTextWrapper","isLoading","enableCaret","ButtonWrapper","button","sizeVariant","isFullWidth","buttonColors","textColor","hasBoxShadow","background","borderColor","hover","active","disabledTextColor","disabledBackground","disabledBorderColor","LoadingWrapper","IconWrapper","isEndIcon","StyledAssemblyIcon","AssemblyCurrencyIcon","ButtonText","ButtonTextInner","DropdownCaret","LoadingDot","forwardRef","ref","useState","buttonFocused","setButtonFocus","value","onClick","font","loadingText","onMouseUp","onMouseDown","caretOpen","assemblyCurrency","ariaDescribedby","caretIconSize","loaderColor","loadingPlaceholder","handleMouseDown","useCallback","handleMouseUp","handleMouseLeave","iconWrapperArgs","onMouseLeave","LoadingCircle","currencyName","FontWeight","REGULAR","SEMIBOLD","MemoizedButton","accountManagementTypes","ALL_USERS","BUSINESS_UNIT","DEPARTMENT","WORK_LOCATION","SELECTED_USERS","GROUPS","COMPANIES","CHANNELS","ORGANIZATIONAL_UNIT","authenticateUserSaga","watchAuthenticateUserSaga","LOGIN_USER","VERIFY_FORGOT_PASSWORD","SIGNOUT_USER","processError","sessionActions","AUTHENTICATE_USER","AUTHENTICATED","UNAUTHENTICATED","AUTHENTICATION_ERROR","AUTHENTICATION_RESET","FORGOTPASSWORDEMAILSENT","FORGOT_PASSWORD_VERIFIED","RESET_SESSION_STATE_MESSAGES","forgotPasswordVerified","user","authenticated","unauthenticated","auth_error","payload","reset_auth","forgotPasswordEmailSent","email","resetStateMessages","clearLocalStorage","appSource","getAppSource","key","localStorage","removeItem","setAppSource","signOutAction","rebootIntercom","signoutAsyncAction","post","authenticateUser","me","updateMyDetails","getUserInfoAction","userSessionCreatedAction","accessToken","handleUserSignin","to","isOnboardingComplete","isFirstLogin","roles","isOwner","includes","ONBOARDING_SETUP","USER_ACCOUNT_SETUP","route","RoutesList","isSourceDeviceIPhone","setItem","meActions","gotMyDetails","GET_MY_USER_INFO","takeEvery","userInfoSaga","emailSent","resetEmail","userVerified","warning","info","disabledStyle","showMoreDefault","showMore","iconButtonColors","focus","textWithBackground","iconWithoutBackground","lighten","outlined","alpha","golden","secondary2","large","medium","small","head","body","deleted","goToMainAppHome","checkAdmin","role","isAdmin","rol","checkSuperAdmin","test","checkManager","getter","getAllowanceValueForUser","allowanceType","profile","regularAllowance","customAllowance","getAllowanceTypeLiteralForUser","getUserStatusTypeLiteralForUser","getUserBirthday","birthday","birthDay","date","birthMonth","getMonthFromDateObject","getUserAnniversary","hiredday","hireDay","hireMonth","hireYear","year","moment","format","renames","errorkeys","assignKey","indexOf","fontSizes","h1","h2","h3","h4","h5","h6","h7","fontStyles","regular","bold","Heading","createElement","getTag","marginTop","marginBottom","DEFAULT_PATH","V2_HOME","V2_REWARDS","V2_SETTINGS","POST","V2_POST_PAGE","FLOWS","FLOWS_FEEDS","EXTERNAL_PATH","AUTH_SAML","FlowFrequencyOptions","APP_CURRENCY_NAME","APP_RECOGNITION","APP_NAME","titleize","DEFAULT_TIMEZONE","GET_APP_CURRENCY","toUpperCase","currency","APP_CURRENCY_STR","singular","APP_CURRENCY_PLURAL_STR","plural","NAME_PLURAL","NAME_TITLEIZED","NAME_ALL_CAPS","NAME_ALL_CAPS_PLURAL","APP_CURRENCY_WITH_SPACES","APP_CURRENCY_WITH_SPACES_PLURAL","APP_VERBS","RECOGNITION","RECOGNITION_PAST","RECOGNITION_TITLEIZED","GAVE_RECOGNITION","MENTIONED","FLASHBAR_AUTOHIDE_DURATION","FLASHBAR_TYPES","SUCCESS","FAILURE","INFO","ALLOWANCE_TYPES","CUSTOM","NO_ALLOWANCE","REWARD_TYPES","GIFT_CARD","CASH_EQUIVALENT","DONATION","DEFAULT_COUNTRY","IMPACT_DATA","emoji","huge","above","IMPACT_CUSTOM_OPTIONS_VALUES","MANAGER_ONLY","ADMINS_ONLY","MANAGER_AND_CUSTOM_ALLOWANCES","EVERYONE","PRIVATE_MESSAGE_OPTIONS_VALUES","IMPACT_CUSTOM_OPTIONS","PRIVATE_MESSAGE_OPTIONS","COOKIE_CONSTANTS","FROM_IDENTITY_MANAGER_AUTHORIZE","SEEING_FIRST_TIME","ASSEMBLY_TOKEN","ASSEMBLY_USER","createBrowserHistory","INPUT_HEIGHT","useStyles","makeStyles","spacing","width","hasLabel","input","border","position","common","boxSizing","transition","transitions","create","errorInput","formLabel","formLabelFocused","errorFormLabel","helperFormLabel","CustomTextField","placeholder","rootStyle","onChange","onKeyPress","helperText","multiline","autoFocus","autoComplete","inputProps","shrink","htmlFor","focused","adminLabel","AdminLink","component","RouterLink","AnchorLink","useAdminStyle","linkStyleName","WEB_APP_SOURCE","source","getItem","setMSTeamsAsSource","isSourceMSTeams","inIframe","NEED_A_BOOST_CONTENT","TOP_PERFORMER_CONTENT","DOING_GREAT_CONTENT","TOP_PERFORMER_CONTENT_PROFILE_INFO","DOING_GREAT_CONTENT_PROFILE_INFO","NEED_A_BOOST_CONTENT_PROFILE_INFO","NEED_A_BOOST_HEADER","DOING_GREAT_HEADER","TOP_PERFORMER_HEADER","NEED_A_BOOST_BUTTON","GIVE_RECOGNITION_BUTTON","ADD_INFO_BUTTON","ACCORDING_SUMMARY_HEADER","ACCORDING_SUMMARY_SUBHEADER","BENCHMARK_TOP_PERFORMER_COMMENT","BENCHMARK_DOING_GREAT_COMMENT","BENCHMARK_NEED_A_BOOST_COMMENT","BENCHMARK_NEED_A_BOOST_BUTTON","BENCHMARK_ERROR_HEADER","BENCHMARK_ERROR_COMMENT","BENCHMARK_ERROR_TOOLTIP","BENCHMARK_KEY_HEADER","BENCHMARK_KEY_CONTENT","BENCHMARK_TALK_WITH_MANAGER","BENCHMARK_KEYS","header","content","templateHeading","tiersRadioOptions","uniqueId","selectTierHeading","tier1Name","tier2Name","tier3Name","tier4Name","selectTierSubHeadingHeader","selectTierSubHeading","selectTierPrimaryButtonText","addPaymentPrimaryButtonText","addPaymentSecondaryButtonText","addPaymentHeading","addPaymentSubHeadingHeader","addPaymentSubHeading","upgradeReviewHeading","upgradeReviewSubHeadingHeader","getUpgradeReviewSubHeading","newPlanName","renewalDate","price","upgradeReviewPlanHeading","getUpgradeReviewCardLast4DigitsDetail","cardLast4Digits","getUpgradeReviewTeamMembersDetail","teamMembersString","upgradePlanIntegrationInfo","isAnchor","openInNewTab","upgradeReviewPrimaryButtonText","upgradeReviewSecondaryButtonText","upgradeReviewInputPlaceholders","cardNumber","cardExpiration","cardCVC","promoCode","LoadingPulse","hasPadding","container","justifyContent","loading","card","minWidth","bullet","display","transform","CREATE_ACCOUNT","VERIFY_CODE","RESEND_CODE","COMPLETE_PROFILE","INVITE_EMAILS","SET_COMPANY_NAME","createAccount","request","url","method","meta","verifyCode","userId","codeToVerify","resendCode","setCompanyName","companyName","completeProfile","fullName","password","phone","userFullName","requestsReducer","actionType","onSuccess","mutations","updateData","local","useStateManagement","reduxKey","useDispatch","requestStartStateChange","requestDetails","apiCallAction","requestSuccessStateChange","apiCallSuccessAction","requestErrorStateChange","apiCallErrorAction","makeAPICall","params","useRequest","apiName","onError","onRequestStart","initialLoadingState","resetResponseOnRequest","useAPIStateManagement","setLoading","setError","setResponse","fireRequest","substitutions","endpointInfo","substitutedURL","substitution","replace","then","catch","errorObject","finally","resetRequest","ERROR_CODES","handleErrorAction","errorAction","errorData","errorStatus","values","defaults","withCredentials","makeAxiosRequest","makeAPICallWithDataReturn","FULL_NAME_REQ_ERROR","PASSWORD_REQ_ERROR","isValidFullNameWithSpaces","fullname","trim","match","validateFullName","length","validatePhoneNumber","phoneNumber","parsePhoneNumber","isValidPhoneNumber","validatePassword","isValidEmail","EmailValidator","validateDisplayName","STRENGTH_NONE","STRENGTH_STRONG","STRENGTH_NORMAL","STRENGTH_WEAK","hash","reduce","newHash","getRequestLoadingStatus","v2Onboarding","pending","getEmailRegistered","getCompanyName","getVerifyRequestLoadingStatus","getCompleteProfileRequestLoadingStatus","getInviteEmailRequestLoadingStatus","getResendCodeRequestLoadingStatus","ONLY_ONCE","DAILY","WEEKLY_ON","BIWEEKLY_ON","QUARTERLY_ON_THE","ANNUALLY_ON","EVERY_WEEKDAY","BUILDER_VISIBILITY_BLOCK","TITLE_TEXT","CONFIGURE_VISIBILITY_ACCORDION_ITEM_TEXT","RESPONSE_NOTIFICATIONS_VISIBILITY_ACCORDION_ITEM_TEXT","CUSTOM_OPTION_TEXT","PARTICIPANTS_ONLY_OPTION_TEXT","ENTIRE_ORGANIZATION","PARTICIPANTS_ONLY","OWNER_ONLY","BODY_CONTENT_TITLE","BODY_CONTENT_SUBTITLE","SHARE_SHEET_MODAL","HEADING","FLOW_MEMBERS","DESCRIPTION","CHOOSE_PARTICIPANTS","CHOOSE_VIEWERS","PARTICIPANTS_BLOCK","MODAL_HEADING","TITLE","VIEWERS_BLOCK","RESPONSE_SETTINGS","RESPONSES_ARE","NOT_ANONYMOUS","ANONYMOUS","OPTIONALLY_ANONYMOUS","CHANGE_SETTINGS","ANONYMOUS_SETTINGS_BLOCK","MODAL_TITLE","SUBTITLE","LINK_SETTINGS_BLOCK","LINK_ACCESS_SETTINGS","ONLY_GROUP_I_SELECT_LABEL","EVERYONE_CAN_ACCESS_LABEL","ANYONE_WITH_LINK_CAN_ACCESS_LABEL","WHO_CAN_ACCESS_FLOW_LABEL","CAN_ACCESS_FLOW_DESCRIPTION","ANYONE_IN_WORKSPACE_LABEL","NO_ONE_SELECTED_LABEL","SHARE_YOUR_FLOW_LABEL","FLOWS_LINK_VISIBILITY_LABEL","ALL_RESPONSES_ARE_NOT_ANONYMOUS","ALL_RESPONSES_ARE_OPTIONALLY_ANONYMOUS","ALL_RESPONSES_ARE_ANONYMOUS","MONTHLY_ON_THE","WELCOME_TO_BUILDER_TOAST","title","subTitle","serializeUser","firstName","capitalizeFirstLetter","lastName","isUserAdmin","some","_role","MemberRole","Admin","Owner","isUserOwner","isUserManager","isManager","canCurrentUserGiveRecognition","currentUser","UserStatus","OBSERVER","RECEIVER","isDeactivatedUser","memberState","MemberState","DEACTIVATED","setCurrentUserFirstLogin","JSON","stringify","AllowanceType","AllowanceCycle","GET_USER_INFO","UPDATE_USER_ACCOUNT_SETTINGS","GET_MY_REWARDS_HISTORY","IMAGE_UPLOAD_STATUS","GOT_MY_POINTS_TO_REDEEM","GOT_MY_POINTS_TO_GIVE","GOT_MY_DETAILS","GOT_MY_IP_DETAILS","GOT_MY_REWARDS_HISTORY","PROFILE_IMAGE_UPLOAD_SUCCESS","PROFILE_IMAGE_UPLOAD_RESET","PROFILE_IMAGE_UPLOAD_FAILURE","gotMyPointsToRedeem","pointsEarned","gotMyPointsToGive","pointsToGive","gotMyRewardsHistory","myRewardsHistory","resetImageUpload","profileImageUploadedSuccessfully","profileImageUploadFailed","gotMyIPDetails","details","parse","getUpdatedCurrencyAction","assemblyId","bootIntercom","user_id","externalId","userShoutoutStatus","Analytics","postAuthActions","raven","Raven","setUserContext","getMyIPDetails","country","countryCode","ipDetails","imageUploadStatus","ReactionType","initAnalytics","mixpanel","init","identifyUserForAnalytics","identify","register","Email","Name","Platform","signoutEvent","reset","trackPageView","pageName","pageURL","referrer","document","eventProps","track","ANALYTICS_EVENTS","PAGE_VIEW","registerSuperProps","superProps","registerUserProps","userProps","userID","getUserID","$distinct_id","people","set","registerPropsFromUser","Department","department","allowance","allowanceValue","points","userStatus","totalPointsGiven","Birthday","Anniversary","trackEvent","eventName","BEGIN_YEAR","dateObject","month","monthNumber","months","getMonthsToShow","map","mon","getDaysForMonth","monthMoment","daysInMonth","isFeb","Array","from","v","k","getDateFromDateObject","getDateObjectFromMomentDate","momentDate","Number","validateMonthDayAndYear","day","isValid","getHireYearOptions","END_YEAR","yearOptions","convertTZ","tzString","Date","toLocaleString","timeZone","getCurrentDateForTimeZone","toISOString","MENTION_REGEX","DOMAIN_REGEX","getProfileFullName","isValidDomain","httpRegExp","RegExp","getTaggedUsersFromMessage","taggedUsers","isNotification","replacedText","reactStringReplace","filter","employee","isDeleted","getFirstLetterOfName","slice","getFirstLastName","fullNameStr","split","index","getFullName","replaceAll","search","replacement","sortUsingName","users","sort","b","aName","bName","toLowerCase","truncate","n","useWordBoundary","this","subString","substr","lastIndexOf","convertUsersForSearch","arr","keyMap","username","obj","mapKeys","getCoworkersOptions","coworkers","coworker","tagLabel","getIds","array","getCoworkersFromIds","ids","acc","filterExceptCurrentUser","currentUserId","OK","CANCEL","ADMIN_LOWER","LOADING","OR","FOR","A","AN","FLOW","POSTED","PRIVATELY","ONLY","OWNER","PARTICIPANTS","OPTION","OTHER","TRY","AGAIN","SOMEONE","AssemblyCurrencyType","PrivateMessageAndImpactLevelValues","CurrencyLevel","CreditState","ImageWrapper","img","placeholderImage","imgLoaded","ImagePlaceholderAnimation","ImagePlaceholder","Image","src","srcset","alt","srcSet","onLoad","Flex","inlineFlex","flexDirection","alignItems","borderBottom","flexWrap","flex","gap","alignContent","FlexCSS","css","themeStyles","createTheme","displayNone","displayFlex","displayBlock","displayInlineBlock","displayInlineFlex","flexJustifyBetween","flexJustifyAround","flexJustifyStart","flexJustifyEnd","flexJustifyCenter","flexAlignItemsCenter","flexAlignItemsBaseline","flexAlignItemsStart","flexAlignItemsEnd","flexAlignItemsStretch","flexDirectionRow","flex1","flex2","flex3","flex4","flex5","flex6","flex7","flex8","top","right","bottom","left","marginRight","SSOErrorCodes","ErrorData","ASSEMBLY_NOT_ACTIVE","primaryText","secondaryText","buttonText","urlToPush","buttonIcon","ASSEMBLY_NOT_FOUND","ASSEMBLY_ALREADY_EXISTS","SIGNIN_VIA_SLACK","SIGNIN_VIA_ADP","SIGNIN_VIA_OFFICE365","SIGNIN_VIA_GOOGLE","SIGNIN_VIA_SAML","SIGNIN_WITH_EMAIL","USER_NOT_FOUND","SLACK_USER_NOT_IN_ASSEMBLY","SSO_USER_NOT_IN_ASSEMBLY","OFFICE365_USER_NOT_IN_ASSEMBLY","ADMIN_APPROVAL_REQUESTED","SLACK_TEAM_MISMATCH","OFFICE365_TENANT_MISMATCH","SLACK_SIGN_IN_DISABLED","SSO_SIGN_IN_DISABLED","OFFICE365_SIGNIN_DISABLED","SLACK_SIGN_UP_DISABLED","SSO_SIGN_UP_DISABLED","OFFICE365_SIGN_UP_DISABLED","CONSENT_REQUIRED","ACCESS_DENIED","USER_CANCELLED","SERVER_ERROR","POPUP_CLOSED_BY_USER","IMMEDIATE_FAILED","COOKIES_NOT_ALLOWED","INTERNAL_ERROR","INTERNAL_ERROR_LIFION","ADP_SIGN_IN_DISABLED","ADP_USER_NOT_IN_ASSEMBLY","NEW_ADP_USER_ERROR","LIFION_SIGNIN_BLOCKED","ssoToBeReplacedErrorCodes","getSSOErrorData","subErrorCode","samlName","headerText","bodyText","menuItemStyle","selectedMenuItemId","isFilter","hasCalendar","zIndex","overflow","borderStyle","cursor","paddingLeft","paddingRight","fill","rippleVisible","filterMenuItem","Dropdown","menuItems","openPopup","filterPlaceholder","removeBorder","isDropdownOpen","toggleDropdown","InputElement","Input","OutlinedInput","handlePopup","event","item","showPopup","stopPropagation","handleOnChange","child","selectedId","target","renderValue","menuItem","Caret","caretStyles","pointerEvents","svgColor","svgIcon","handleOnClick","menuProps","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","MenuListProps","disablePadding","paper","onMenuItemClick","IconComponent","startAdornment","displayEmpty","MenuProps","open","showDropdown","closePopup","onPopoverClick","AnalyticsEvents","ACCOUNT_SIGN_UP","ACCOUNT_VERIFICATION","ACCOUNT_SETUP_COMPANY_NAME","ACCOUNT_SETUP_PROFILE_NAME","ACCOUNT_SETUP_QUICK_INVITES","ACCOUNT_SETUP_COMPLETE","CREATE_POST_START","CREATE_POST_GIVEN","CREATE_POST_GIVE_ERROR","RECOGNITION_PARTICIPATION_START","RECOGNITION_PARTICIPATION_EXIT","RECOGNITION_PARTICIPATION_POST","RECOGNITION_PARTICIPATION_POST_ERROR","SAML_CONFIG_ENABLE_START","SAML_CONFIG_SAVE_TEST_ERROR","SAML_CONFIG_SAVE_TEST_SUCCESS","PAGE_NAMES","REDEEM","SETTINGS","ADMIN_PAGE_NAME","path","substring","sub","LEFT_DRAWER_EVENT_NAME","RIGHT_DRAWER_EVENT_NAME","INVITE_MEMBER_EVENTS","INVITE_START","COPY_INVITE_LINK","INVITE_COMPLETE","MANAGE_USERS_EVENTS","INVITE_MEMBER_EVENT","FEED_EVENTS","StyledTextfield","TextField","offset","muiTextFieldHeight","activated","$removeElevation","NewTextfield","hasError","maxRows","minRows","suffix","prefix","onBlur","onInputFocus","InputLabelPropsObj","onSuffixAdornmentClick","propInputProps","InputProps","removeElevation","spellCheck","fullWidth","endAdornment","newInputProps","defaultValue","onFocus","InputLabelProps","appID","Intercom","app_id","hide_default_launcher","openIntercomMessenger","Divider","Client","environment","clientInformationObject","platform","isNil","viewport","outerWidth","outerHeight","Bowser","navigator","userAgent","browser","os","lander","campaignLander","campaignReferrer","Error","eventObject","campaign","client","clientInformation","apiEndpoint","eventTypes","REGISTRATION","PROFILE_COMPLETE","SUBSCRIPTION","EventType","eventType","cookie","load","userIdStored","save","employerSelector","regularAllowanceSelector","getEmployerCustomCurrencySelector","getEmployerCustomIconSelector","customIcon","getEmployerAssemblyIconSelector","createSelector","DEFAULT_CURRENCY","CURRENCY_NAME","customUrl","hexCode","getEmployerCustomLogoSelector","getRewardsPaymentStatus","slackInfo","IntegrationProvidersEnum","ConnectionStatusEnum","IntegrationStatusEnum","AUTHORIZE_SSO","SIGN_IN_SSO","CONFIGURE_IDENTITY_MANAGER","GET_IDENTITY_MANAGER_SETTINGS_DATA","DISCONNECT_IDENTITY_MANAGER","SWITCH_ACCOUNT_PREVIEW","SWITCH_ACCOUNT","GET_BOT_MANAGER_DATA","DISCONNECT_BOT_MANAGER","GET_PENDING_REQUESTS","AUTO_APPROVE_MEMBERS","endpoints","justify","sizeUnit","resetBillingInvoicesSaga","watchAccountPlanChangeSagas","TIERS","CURRENT_PLAN","SWITCH_TIER_PREVIEW","SWITCH_TIER","ADD_PAYMENT","GET_ACCOUNT_TIERS","resetBillingInvoices","getAccountTiers","getCurrentPlanRequest","switchAccountPreview","switchAccountTiers","addPaymentMethod","getData","activePlan","availablePlans","plan","accountDetails","cards","creditCards","ChildWrapper","showMobileFullScreen","SimpleModal","isOpen","handleClose","onClose","BackdropProps","mixBlendMode","ButtonSize","normal","IconButtonRoot","rounded","isSelected","iconBgColor","IconButton","buttonRef","Small","Field","fieldValue","isMultiSelectEnable","useField","field","hasDropdown","formValues","touched","useFormikContext","setFieldTouched","setFieldValue","handleChange","valueOrEvent","secondArg","BenchmarkStatus","useToggle","initialValue","toggleValue","setToggleValue","setToggle","setToggleValueSynchronous","prevToggleValue","setToggleToFalse","setToggleToTrue","models","operations","SplitNames","TreatmentTypes","SHOW_USER_PROFILE","HIDE_USER_PROFILE","TOGGLE_NOTIFICATIONS","RESIZE_WINDOW","SHOW_INCOMPLETE_ONBOARDING","HIDE_INCOMPLETE_ONBOARDING","UPDATE_GIVE_CARROTS_UI","ADD_EMOJI_TO_MESSAGE","EMPLOYEES_SET_UP_UPDATES","GIVE_CARROTS_UI_STATUSES","ADD_EMOJI_STATUS","EMPLOYEES_SETUP_STATUSES","UN_KNOWN","HAS_EMPLOYEES","NO_EMPLOYEES","uiActions","showUserProfile","hideUserProfile","toggleNotifications","showIncompleteOnboarding","hideIncompleteOnboarding","resizeWindow","windowSize","updateGiveCarrotsUI","updateEmployeesSetupStatus","addEmojiToMessage","userProfileToShow","showNotification","giveCarrotUIStatus","employeeSetupStatus","emojiToAdd","onlineStatusColors","passive","inactive","AvatarContainer","restrictHeight","AvatarBackground","Img","hide","StyledOnlineStatus","onlineStatus","onlineStatusBorderColor","StyledAvatarText","Avatar","onHoverClick","isAnonymous","iconSize","getColor","bg","onLoadingComplete","useEffect","canShowAvatarText","renderImageFallback","avatarText","colors","MemoizedAvatar","ReduxActionTypes","requestParams","apiCallClearAction","getApiCallResponse","getApiCallError","apiCallReducers","newApi","api","useFetch","onFailure","useCache","reduxKeyRefStr","getTime","useRef","current","isMakeRequestCalled","setIsMakeRequestCalled","setIsLoading","useSelector","defaultMessage","makeRequest","options","Link","ChipWrapper","clickable","ChipLabel","ChipDeleteIcon","ChipAvatar","Chip","avatar","validation","onDelete","onDeleteHandler","ProgressValidator","strength","strengthItem","checked","CircleIndicator","indicator","ValidationText","API_CALL_BEGIN","API_CALL_SUCCESS","API_CALL_ERROR","StyledOutlinedInput","isvalidinput","iconbackgroundcolor","domain","StyledIconButton","$endIcon","InputWrapper","$disabled","StyledClickable","Clickable","iconBackgroundColor","innerRef","endIcon","onIconClick","onEndIconClick","clearTextEnabled","onClearClick","InputAdornment","labelWidth","notched","toString","MemoizedTextField","TextFieldType","TextFieldSizes","labelYPosition","textFieldInputHeight","renderStatusColor","defaultColor","isFocused","isActivated","TextInputFieldWrapper","FormLabel","inputSize","TextFieldRoot","InputIcon","InputDropdownButton","InputClearButton","dropdownItems","TextFieldInput","hasPrefix","hasSuffix","renderInputPlaceholder","AppendText","p","PrefixText","HelperText","ChipMoreItem","NoOption","TextFieldRootWrapper","StyledDropdownListItem","DropdownListItem","DropdownCategoryLabel","DropdownCardWrapper","DropdownCardBackground","DropdownPlacement","DropdownColor","DropdownSizes","DropdownVariants","StyledPopper","Popper","DropdownCard","anchorEl","dropdownPlacement","Bottom","isDropdownPositionFixed","popperWidth","offsetWidth","placement","disablePortal","modifiers","enabled","preventOverflow","boundariesElement","popperOptions","positionFixed","TransitionProps","Grow","textFieldId","disableClearButton","selectedItems","enableChip","limitTags","isEditable","inputIconColor","onSelectItemChange","hasDropdownFilter","setIsFocused","setIsDropdownOpen","containerRef","setAnchorEl","filterByValue","setFilterByValue","filteredDropdownItems","setFilteredDropdownItems","currentSelectedItems","setCurrentSelectedItems","renderChipItems","setRenderChipItems","hasValue","suffixEnabled","Text","prefixEnabled","canDropdownOpen","isArray","more","handleFocus","handleDropdownOpen","currentTarget","handleDropdownClose","handleClearClick","hasFocus","addChipItem","chipLabel","every","chipItem","deleteChipItem","chipItems","deleteLastChipItem","chipId","handleMenuItemClick","dropdownItem","items","chip","itemValue","onOutsideClickHandler","useOnClickOutside","chipsMoreCount","filteredItems","element","getFilteredItems","resultItems","addedItemIds","renderDropdownItems","category","prefixIcon","prefixImg","deleteItem","onItemClick","onKeyDown","readOnly","Normal","BottomStart","Label","InputLabel","StyledTextArea","textarea","TextArea","rows","optionsList","DropdownGroup","onChangeList","selectedOptions","arrayOf","shape","string","oneOfType","number","isRequired","autoCompleteStyle","textFieldRoot","borderWidth","alignSelf","DropdownWithMultiSelect","onInputChange","noOptionsText","disableLimit","onAutoChange","valueChanged","renderOptionLabel","option","displayText","renderOptions","renderTags","tagValue","getTagProps","renderInput","getOptionSelected","Autocomplete","filterSelectedOptions","multiple","autoHighlight","getOptionLabel","renderOption","MemoizedDropdownWithMultiSelect","TextFieldWithChips","textFieldValue","onTextFieldChange","newInputValue","inputOptions","concat","x","freeSolo","disableClearable","MemoizedTextFieldWithChips","navButtons","navContainer","dropdown","CalendarNavElement","isRightCalendar","isRangePicker","changeDates","yearDropdownValues","formattedMonthNames","monthsShort","getFullYear","onMonthDropdownChange","newTargetDate","setMonth","onYearDropdownChange","setFullYear","handlePreviousMonthClick","DateUtils","addMonths","handleNextMonthClick","disableLeftNavButton","getMonth","disableRightNavButton","customDatePicker","outline","paddingBottom","CaptionComponent","Calendar","handleDateChange","activeDate","handleDayClick","numberOfYearsAllowedFromCurrentYear","selectedDays","disabledDays","i","getYearDropdownValues","showOutsideDays","enableOutsideDaysClick","captionElement","navbarElement","onDayClick","Header","Footer","Wrapper","TriggerButton","Children","cloneElement","PrimaryTriggerButton","onPrimaryButtonClick","SecondaryTriggerButton","onSecondaryButtonClick","CalendarInput","showDropdownIcon","hideCalendarIcon","triggerComponent","heading","footerProps","stopEventPropagation","timezone","setOpen","textFieldRef","customButtonRef","openPopover","inputValue","primaryTriggerComponent","secondaryTriggerComponent","onPrimaryTrigger","onSecondaryTrigger","renderTriggerComponent","Popover","isEmpty","today","onFooterClick","footerLabel","renderEmoji","customEmoji","imageUrl","baseEmoji","String","fromCodePoint","parseInt","unified","TextFieldWithEmoticonPicker","textField","setTextFieldValue","emoticon","emoticonValue","setEmoticonValue","EmoticonPickerPopover","onEmoticonSelect","togglePopover","ellipsisStyle","StyledWrapper","hasInfo","hasAvatar","InfoStyle","StyledCheckbox","Checkbox","StyledAvatar","StyledBody","FlowCheckbox","showAvatar","avatarName","checkboxProps","avatarProps","avatarIcon","PENDING","progressValidator","validationTexts","Component","TextField_V2","TextField_V3","RadioGroup","SingleSelectAutoComplete","iconHasBackground","helperTextVariant","radioOptions","componentType","dropDownProps","isTextFieldV2orV3","isCheckbox","showClearIcon","AssemblyCurrencyTypes","oneOf","pluralName","individualItemTypes","bool","MemoizedInput","getWeekDetails","selectedDay","getDay","tempDate","startOfMonth","addDays","arrayOfSelectedDays","weekNumber","isLastWeek","hasAllWeekDays","isEqual","hasWeekDaysInParsedRRule","isSameDay","currentDate","receivedDay","getDayIdsForCustomOccurrence","GOOGLE_SSO_FLOW","HookComponent","clientId","scope","initError","setInitError","handleFailure","loaded","useGoogleLogin","responseType","signIn","gapi","auth2","getAuthInstance","grantOfflineAccess","GSuiteSSOController","flow","setClientId","setScope","AUTHORIZE","onRequestSuccess","oauthScopes","handleSuccess","emptyFunction","accountManagementTypeLanguageMap","identityManagerSteps","WHAT_IS_THIS","SETUP_INFO","AUTHORIZE_ADP","SELECT_PEOPLE","CONFIGURE_INVITES","CREATE_ACCOUNTS","STEP_WHAT_IS_THIS_NEXT","STEP_WHAT_IS_THIS_CANCEL","STEP_SETUP_UP_INFO_NEXT","STEP_AUTHORIZE_ADP_NEXT","STEP_SELECT_PEOPLE_NEXT_DEFAULT","STEP_SELECT_PEOPLE_NEXT_EDIT","STEP_SELECT_PEOPLE_NEXT_ALL_USERS","STEP_SELECT_PEOPLE_NEXT_SELECTED_USERS","STEP_CONFIGURE_INVITES_NEXT","STEP_CONFIGURE_INVITES_BACK","STEP_CREATE_ACCOUNTS_NEXT_DEFAULT","STEP_CREATE_ACCOUNTS_NEXT_QUEUED_INVITES","STEP_CREATE_ACCOUNTS_BACK","getSelectUsersNextButtonText","accountManagementType","count","pluralize","selectPeopleEntityTableHeadings","allList","newList","removeList","getEntityTableSearchBoxPlaceHolder","entity","placeholderText","userSelectSelectedUsersIconInfo","subHeading","modalText","DISCONNECT","NEVER_MIND","SURE","BotManageContent","SUB_HEADING","INSTALL_BUTTON_TEXT","INSTALLED_TEXT","DISCONNECT_BUTTON_TEXT","ChannelSelectionContent","TAB1_LABEL","TAB2_LABEL","HELPER_TEXT","BACK_BUTTON_TEXT","NEXT_BUTTON_TEXT","CustomCurrencyContent","ICON_PICKER_DEFAULT_ICON","ICON_PICKER_PLACEHOLDER_TEXT","ICON_PICKER_HELPER_TEXT","INPUT_VALUE","INVALID_ERROR","CHECK_IF_SINGULAR","BotSuccessContent","BUTTON_FEED_TEXT","BUTTON_INVITE_TEXT","LINK_TEXT","AutoApproveMembersContent","PRIMARY_BUTTON_TEXT","SECONDARY_BUTTON_TEXT","PLACEHOLDER_TEXT","DESCRIPTION_TEXT","TwoColumnEntitySelectorContent","PENDING_TEXT","SELECT_TEXT","DESELECT_TEXT","REJECT_TEXT","NO_MATCH_FOUND","SelectPeopleLoadingStateContent","BODY","LOADING_GIF","BotTypeOptions","integrationProviderText","MSTEAM","BotTypeManager","MSTEAMS","BotManager","uri","helperLink","BotAnnouncementRadioValues","ANNOUNCE","DONT_ANNOUNCE","BotAnnouncementRadioOptions","BotAnnouncementContent","SEE_WELCOME_MESSAGE","SEE_ANNOUNCEMENT","ANNOUNCEMENT_SNEAK_PEAK","BotFlowContent","UPGRADE_TEXT","GIF_LOADING_TEXT","FINISH_STEP","GET_STARTED","NEXT","BACK","SKIP_CUSTOMIZING_CURRENCY","UPGRADE_NOW_TO_CHANGE","HEAD_TO_MY_FEED","INVITE_MEMBERS_NOW","NOT_NOW","GO_TO_SLACK_CHANNEL","CLOSE","SAVE_CHANGES","DISCONNECT_SLACK","warningText","SETUP_NOT_COMPLETE","NOT_ANNOUNCED","crumbText","INTEGRATIONS","TEAMS","errorText","SELECT_CHANNEL","ENTER_CHANNEL_NAME","CHANNEL_NAME_TOO_LONG","INVALID_CHARACTERS","GENERIC_ERROR","quickSettingsText","SEND_ANNOUNCEMENT_QUESTION","NOT_ANNOUNCED_YET","WHICH_TEAM","WHERE_ASSEMBLY_POSTS","defaultSlackChannelPage","SELECT_DEFAULT_CHANNEL","CREATE_CHANNEL_PLACEHOLDER","teamsSelectTeamsPage","DROPDOWN_PLACEHOLDER","DROPDOWN_HELPER_TEXT","HEADER","SUBHEADER","teamsChannelPage","CREATE_CHANNEL_HELPER_TEXT","SUB_HEADER","AnnounceAssemblyContent","LABEL","ANNOUNCE_BUTTON_TEXT","SUCCESS_HEADING","SUCCESS_BODY","SUCCESS_BUTTON_TEXT","TabChannelOrganismText","INPUT_HELPER_TEXT","INPUT_PLACEHOLDER","breakpoints","down","customClass","selected","TableRow","topWrapper","headerButton","iconButton","maxWidth","whiteSpace","textOverflow","childrenWrapper","childrenPadding","maxHeight","disableContentScroll","overflowY","buttonsWrapper","alignActionButtons","borderTop","primaryAndSecondaryButtonsWrapper","marginLeft","ModalWrapper","Modal","BasicModalTemplate","primaryButton","secondaryButton","tertiaryButton","onModalClose","hasTitleSection","hideCloseIcon","dataIntroId","EndButton","paddingTopBottom","paddingLeftRight","iconTextGap","IconInfo","endButton","handler","listener","contains","addEventListener","removeEventListener","addSourceToURL","URL","DEVICES","DEVICE","StyledSVGIcon","ContentWrapper","ToastContent","defaultToastOptions","toast","POSITION","BOTTOM_LEFT","dismissAllToasts","dismiss","useCurrentPlanFetchQuery","useQuery","staleTime","Infinity","useProfileInfoFetchQuery","useUpdateFlowSettings","queryClient","useQueryClient","useMutation","FLOWS_PERMISSIONS_TEXTS","PERMISSION_CHANGED_SUCCESSFULLY","cacheObject","getQueryData","assembly","updatedCacheObject","creation","setAssemblyFlowPermissionValue","creationPermission","participationCriteriaAccessibility","everyone","splice","criteriaAccessibilityForParticipation","contentStackAccessibility","GIVE_POINTS_STACK","stackAccessibility","gifAccessibility","setQueryData","PERMISSION_CHANGE_ERROR","avatarColor","avatarImage","UserNameAvatar","firstLetter","colorProp","styleProps","ProfilePic","image","original","relativeUrl","getImageForCustomReward","cultureReward","image_url","profilePlaceholder","lastChar","charCodeAt","countriesData","registerLocale","GIFT_CARD_TYPES","FIXED","VARIABLE","checkGiftCardItemType","giftCard","valueType","GIFT_CARD_DENOMINATIONS_US","GIFT_CARD_DENOMINATIONS_EUR","GIFT_CARD_DENOMINATIONS_INR","getDenomsForGiftcards","currencyCode","minVal","maxVal","denoms","valueToAdd","incrementBy","Math","floor","getDisplayAmount","faceValue","countrySymbol","getSymbolFromCurrency","getCountryName","getName","sortByNumber","fieldName","getParser","newWindow","opener","self","isWindows","getPlatformType","SimpleIconButton","defaultCurrency","SMALL","MEDIUM","LARGE","HUGE","ABOVE","isFeatureEnabledInCurrentPlan","cacheValue","payloadValue","CURRENCY_NAME_PLURAL","deserializeDate","checkAndReplaceDeletedUserInArray","userArray","u","deserializePost","likes","toUsers","like","createdAt","updatedAt","deserializeNotification","notification","serializedNotification","comment","deserializeComment","serializePlan","unique_id","getCurentPlan","getAccountDetails","hasActiveCreditCard","isActive","checkPaidAllowanceAccess","featureDetails","checkInviteAndApprovalAccess","checkChangeCustomLogoAccess","checkChangeCustomCurrencyAccess","checkCustomAllowanceAccess","checkBirthdayBotAccess","checkAnniversaryBotAccess","checkSwitchPlanAccess","switchPlanDetails","checkCustomCurrencyAccess","checkPrivateMessageAccess","checkIMUserGroupAccess","checkAdminAnalyticsAccess","checkADPIdentityManagerAccess","checkMergeHRISAccess","getAllPlans","plans","plansDict","getSwitchAccountRequestLoadingStatus","v2AdminAccount","getAddPaymentRequestLoadingStatus","focusColor","alertType","customVariant","iconWrapper","alertText","closeButtonWrapper","InfoAlert","isHidden","isDismissible","bodyVariant","closeClickCallback","onCloseClick","closeKeyPressCallback","onCloseKeyPress","in","tabIndex","closeIconColor","Table","SharedStyle","StyledRouterLink","underline","StyledAnchor","MemoizedLink","HOME_INFO","HOME_FEED","PROFILE_INFO","REDEEM_INFO","homeProcessError","homeActions","GET_HOME_INFO_SUCCESS","GET_COWORKER_INFO_SUCCESS","getHomeInfoSuccess","getCoWorkerInfoSuccess","getHomeDetailsAction","remainingPoint","employees","worker","USERS","GET_USERS_SUCCESS","UPDATE_EMPLOYEE_SUCCESS","UPDATE_EMPLOYEES_SUCCESS","USER_MANAGE_REQUEST_FAILED","getUsersSuccess","updateEmployeeSuccess","updateEmployeesSuccess","deleteEmployeesSuccess","getUsersAction","cb","editEmployeeAction","editBulkEmployeesAction","deleteEmployeesAction","userIds","udpatedUsers","updatedUser","CustomRadio","Radio","disableRipple","StyledIconInfo","StyledFlexContainer","ExtraContent","useHover","model","isHovering","Boolean","handlePopoverOpen","handlePopoverClose","buttonContent","UpgradeInfoComponent","upgradeText","onUpgradeClick","toolTipText","onMouseEnter","ToolTip","multipleChoiceStyle","FlowsOtherMultipleChoiceInput","isBorderVisible","radioSize","CustomRadioGroup","labelColor","labelHeaderVariant","labelVariant","onOtherInputValueChange","otherInputValue","otherInputRef","newValue","optionDisabled","optionLabel","optionValue","optionLabelHeader","labelHeader","upgradeInfo","iconInfo","inlineChildren","FormControlLabel","control","StyledSpan","lineHeightForFont","blendMode","StyledImg","MemoizedAssemblyCurrencyIcon","LinkItem","ADMIN_ROLES","checkIfAdmin","REWARDS","CREATE_CULTURE_REWARD_LIMITED_REWARD_TEXT","CREATE_CULTURE_REWARD_OPTIONS_HEADING","UPLOAD_REWARD_IMAGE","UPLOAD_REWARD_IMAGE_SIZE_RECOMMENDATION","IMAGE_CROPPER_MODAL_HEADING","IMAGE_CROPPER_MODAL_SUBMIT_TEXT","IMAGE_CROPPER_MODAL_CANCEL_TEXT","REWARD_NAME_INPUT_PLACEHOLDER","REWARD_NAME_INPUT_LABEL","REWARD_NAME_INPUT_HELPER_TEXT","REWARD_DESCRIPTION_INPUT_PLACEHOLDER","REWARD_DESCRIPTION_INPUT_LABEL","REWARD_DESCRIPTION_INPUT_HELPER_TEXT","GET_REWARD_TROPHIES_INPUT_PLACEHOLDER","currencyNamePlural","REWARD_LIMIT_INPUT_OPTIONS_TEXT","CREATE_REWARD","EDIT_REWARD","REWARD_TYPES_OPTIONS_LABEL","CREATE_CULTURE_REWARD","EDIT_CULTURE_REWARD","CULTURE_REWARD_CREATED","CULTURE_REWARD_UPDATED","CREATE_CULTURE_REWARD_ERROR","UPDATE_CULTURE_REWARD_ERROR","CREATE_CULTURE_REWARD_ERROR_MESSAGE","REQUIRED","NAME_MAX_CHAR","NAME_MIN_CHAR","DESCRIPTION_MAX_CHAR","VALID_NUMBER","meSelector","myAllowanceType","myCustomAllowance","configureAssemblyStatus","QUEUED","PROCESSING","ERROR","INVOICES","GET_BILLING_INVOICES","GET_BILLING_INVOICE","RESET_BILLING_INVOICES","getBillingInvoices","afterId","limit","asPromise","getBillingInvoice","invoiceId","startDate","endDate","invoices","invoicesList","existingInvoice","invoicesInfo","PLATFORM_PAYMENT","PLATFORM_PAYMENT_V2","PLATFORM_PAYMENT_DETAILS","PLATFORM_PROMO_CODE","ADD_CREDIT_CARD","paymentFailure","PROCESS_PAYMENT_SUCCESS","PROCESS_PAYMENT_ERROR","PROMO_CODE_ERROR","PROMO_CODE_SUCCESS","PROCESS_PAYMENT_RESET","paymentSuccess","paymentReset","promoCodeFailure","promoCodeSuccess","applyPromoCodeAction","successMessage","payment_status","promoCodeError","StyledInput","StyledLabel","checkboxSize","StyledCheckboxSpan","$isFocused","$margin","$padding","labelMargin","labelPadding","stopClickPropagation","onKeyUp","mapHexCodeToEmoticon","CARD_OPTIONS","base","invalid","hideIcon","SOURCE_DEVICE","setSourceDeviceAsIPhone","device","IPHONE","arrow","tooltip","CustomToolTip","mobile","tablet","laptop","tabletV2","laptop2","progress","overlayText","valueColor","shadowClass","shadowColor","progressIndicatorClass","CircularProgressComponent","showValue","showCircularShadow","showBenchmarkStatus","benchmarkStatus","thickness","isProfileInfo","TriggerActionType","Container","SVGContainer","ErrorContainer","PopoverHeader","PopoverContent","PopoverElement","ReferenceContentContainer","ClickHolder","elementPadding","containerPadding","popoverPosition","triggerAction","popoverContent","ReferenceContent","referenceContent","xAxisOffset","yAxisOffset","onOutsideClick","closeOnPopoverClick","isPopoverOpen","togglePopoverOpen","referenceElement","setReferenceElement","popperElement","setPopperElement","popperAttributes","usePopper","update","checkTriggerAndToggle","requiredAction","click","handleHoverToggle","handleContainerClick","onPopoverKeypress","popper","BenchmarkStatusIcon","onShowTipsClick","useHistory","onGiveRecognitionClick","routesList","onAddInfoClick","onCheckTipsClick","TOP_PERFORMER","DOING_GREAT","NEED_A_BOOST","selectedIcon","headerContent","bodyContent","onButtonClick","PopoverContainer","Icon","speed","viewBox","foregroundColor","cx","cy","r","PostTypes","FeedTypes","YOU","EMOTICON_PICKER_TEXT","DropdownItemContainer","disableHoverActions","PrefixContainer","DropdownItem","getItemLabel","handleClick","displayLabel","renderPrefix","isPrefixIconRequired","MERGE","IdentitySSO","GSUITE","isUpgradeNeeded","BAMBOO","getIdentityManagerDetails","im","mergeDetails","isSSOAllowed","getSSOIDByParam","getSSOButtons","identityManagers","buttons","j","identityManager","buttonConfig","integrationStatus","useFeatureSplit","splitName","treatment","useTreatments","FLOW_CREATION_PERMISSIONS_TITLE","FLOW_CREATION_PERMISSIONS_SUBTITLE","LEARN_MORE_TEXT","LEARN_MORE_URL","FLOW_PERMISSIONS_HELPER_TEXT","CREATE_FLOW_PERMISSIONS_TITLE","CREATE_FLOW_PERMISSIONS_SUBTITLE","ADD_EVERYONE_PERMISSION_TITLE","ADD_EVERYONE_PERMISSION_SUBTITLE","ADD_GIVE_POINTS_PERMISSION_TITLE","ADD_GIVE_POINTS_PERMISSION_SUBTITLE","GIF_FORMAT_HEADING","GIF_FORMAT_SUB_TITLE","GIF_FORMAT_SELECT_LABEL","CURRENCY_SETTINGS_TEXTS","EMOJI_LABEL","stepsWizardTitle","steps","introInfoItems","badgeColor","introHeading","introSecondHeading","recommendation","userSelectHeading","userSelectSubHeading","userSelectRadioGroupOptions","invitesHeading","invitesSubHeading","invitesRadioGroupOptions","approvalHeading","approvalSubHeading","approvalRadioGroupOptions","createAccountsHeading","createAccountsSubHeading","createAccountsSubHeadingQueued","setupConfigurePopupHeading","setupConfigurePopupText","time","timeArray","calculatedTime","hours","minutes","getDateMonthYear","receivedDate","getDate","getYear","getUTCTimeFromDate","getUTCHours","getUTCMinutes","padStart","getUTCDateFromDate","getUTCDate","getUTCMonth","getUTCFullYear","getDefaultFlowStartDate","schedule","parsedString","RRule","parseString","rule","dtstart","addHours","StyledTextField","FormikField","formik","getFieldProps","getFieldMeta","useJobStatusQuery","jobId","refetchInterval","useGenericAPIQuery","AdminBreadCrumps","thirdText","link","INITIAL_STATE","ADMIN_TABLE_INITIALIZE_FILTER","ADMIN_TABLE_APPLY_FILTER","ADMIN_TABLE_REMOVE_FILTER","ADMIN_TABLE_REMOVE_ALL_FILTERS","ADMIN_TABLE_UPDATE_INPUT","ADMIN_TABLE_RESET_INPUTS","tableName","defaultValues","currentTable","filters","uuidv4","initializeNewFilter","resetFilterInputValues","applyFilter","removeFilter","removeAllFilters","updateInput","PLACEHOLDER_EMAIL","writeToXLS","sheetName","fileName","XLSX","wb","utils","book_new","ws","json_to_sheet","SheetNames","Sheets","wbout","write","bookType","bookSST","createObjectURL","Blob","s2ab","download","s","buf","ArrayBuffer","view","Uint8Array","revokeObjectURL","importEmails","file","successCallback","emails","fileType","Papa","complete","results","flat","uniq","readXlsxFile","mails","emailsUploaded","apply","getCountryAndCurrenyCodes","giftCards","countries","currencyCodes","filterFixedValueDenominations","denominations","denom","hasDenom","utid","filterVariableValueDenominations","minValue","maxValue","filterDenomsAgainstCardItems","employerRewards","cardsDict","brandKey","employerReward","CUSTOM_REWARD","GET_GIFTS_CATALOG","SET_DENOMINATION_GIFT","UNSET_DENOMINATION_GIFT","SET_ALL_DENOMINATION_GIFT","UNSET_ALL_DENOMINATION_GIFT","SET_ALL_CATALOG_GIFT","UNSET_ALL_CATALOG_GIFT","TOGGLE_GIFT_CARD","GET_CULTURE_REWARDS_SUCCESS","CREATE_CUSTOM_REWARD_SUCCESS","EDIT_CUSTOM_REWARD_SUCCESS","DELETE_CUSTOM_REWARD_SUCCESS","GET_GIFT_CATALOG_SUCCESS","GET_GIFT_CARDS_COUNTRIES_SUCCESS","GET_DONATIONS_COUNTRIES_SUCCESS","GET_GIFT_CARD_CURRENCY_CODE_SUCCESS","SET_GIFT_DENOMINATION_SUCCESS","TOGGLE_GIFT_CARD_SUCCRSS","REWARDS_MANAGE_REQUEST_FAILED","UPDATE_CATATLOG_REQUEST_STATUS","getCultureRewardsSuccess","rewards","getGiftsCatalogSuccess","updateCatalogRequestStatus","gotGiftCardCountries","gotDonationCountries","gotGiftCardCurrencyCodes","editCustomRewardSuccess","reward","deleteCustomRewardSuccess","createCustomRewardSuccess","newReward","setGiftDenominationSuccess","updatedEmployerRewards","toggleGiftCardSuccess","getCultureRewards","toggelCustomRewardsAction","cultureRewardId","deleteCustomRewardsAction","delete","getGitfsCatalogAction","donations","giftCardDetails","donationCardDetails","doantionCountries","setUnsetGitfDenominationAction","rewardType","setUnsetAllGitfDenominationAction","setUnsetAllCatalogDenominationAction","tango","toggleGitfCardAction","catalogRequestStatus","giftCardsArray","donationsArray","denominationArray","giftCardCountries","exsistingCurrecyCodes","giftCardCurrencyCodes","donationCountries","denomination","rewardsArray","cultureRewards","omit","CarrotIcon","emojiType","strokeWidth","fillRule","d","ACTIVATE_REWARDS_PAYMENT","DEACTIVATE_REWARDS_PAYMENT","REWARDS_PAYMENT_DETAILS","REWARDS_PAYMENT_SETUP_OVERVIEW","REWARDS_PAYMENT_REVIEW","TOTALS_REPORT","REPORTS","GET_TOTAL_EARNED_CARROTS","CLEAR_TOTAL_EARNED_CARROTS","REWARDS_PAYMENT_REVIEW_SUCCESS","REWARDS_PAYMENT_SETUP_OVERVIEW_SUCCESS","STORE_REWARDS_CREDIT_CARD","STORE_REWARDS_ALLOWANCE_CREDIT_CARD","GOT_TOTALS_REPORT","GOT_REWARDS_REPORT","GOT_TOTAL_EARNED_CARROTS","REQUEST_START_FRESH_SUCCESS","rewardsActions","gotPaymentSetupOverview","overviewData","rewardsPaymentsReviewSuccess","paymentsReview","storeRewardsAllowanceCreditCard","allowanceInfo","gotTotalsReportSuccess","report","gotTotalEarnedCarrots","totalCarrotsEarned","gotRewardsReportSuccess","reports","requestStartFreshSuccess","activateRewardsPayment","deactivateRewardsPayment","getRewardsPaymentDetails","getRewardsSetupOverview","expectedDefaultAllowance","getRewardsReportAction","getTotalEarnedCarrots","totalEarned","requestStartFresh","totalsReport","billingAddress","creditCard","brand","existingTotalCarrotsEarned","startFreshRequestStatus","INVITE_USERS","INVITE_USERS_V3","INVITE_USERS_EDIT_V3","INVITE_USERS_CREATE_V3","INVITE_USERS_EMAILS","APPROVE_INVITED_USERS","DELETE_INVITED_USERS","ADD_INVITED_USERS_SUCCESS","GET_INVITED_USERS_SUCCESS","UPDATE_INVITED_USER_SUCCESS","UPDATE_INVITED_USERS_SUCCESS","DELETE_INVITED_USER_SUCCESS","USER_REQUEST_FAILED","getInvitedUsersSuccess","updateInvitedUserSuccess","addInvitedUsersSuccess","deleteInvitedUserSuccess","updateInvitedUsersSuccess","invites","getInviteUsersAction","uploadInviteUserAction","addedMembers","updateInvitedUsersAction","errors","updatedData","approveQueuedInvitedUsersAction","submitJob","userInviteIds","deleteQueuedInvitedUsersAction","memberIds","remindInviteUserAction","memberId","approveInviteUserAction","overideCb","stateUpdatedBy","approvedUserDetails","approveOverrideInviteUserAction","forceOverride","userInvite","denyInviteUserAction","stateUsers","modalCloseButton","CloseButton","xmlns","BIRTHDAY","BIRTHDAY_DEACTIVATE","ANNIVERSARY","ANNIVERSARY_DEACTIVATE","ACTIVATION_STATUS","ACTIVATING","FETCH_BIRTHDAY_SUCCESS","ACTIVATE_BIRTHDAY_SUCCESS","ANNIVERSARY_ACTIVIATION_STATUS","anniversaryActions","fetchBirthdaySuccess","birthdayAllowance","activateBithdaySuccess","activateAnniversarySuccess","updateActivationStatus","fetchBirthday","activateBirthday","isUpdate","deactivateBirthday","activateAnniversary","deactivateAnniversary","activationStatus","integrationInfo","PlanUpgradeSelectTierModal","onNextClick","radioOptionsData","onRadioChange","isButtonsLoading","tierNames","showIntegrationSubText","handleRadioChange","errorInfoAlert","expirationFieldRow","promoCodeField","cardInput","cardExpiryInput","cardCVCInput","PlanUpgradeAddPaymentModal","onNevermindClick","setName","setPromoCode","promoCodeHelperText","onApplyClick","stripe","useStripe","elements","useElements","checkout","isAddPaymentLoading","setAddPaymentLoading","getStripeToken","callback","cardElement","getElement","CardNumberElement","createToken","createTokenError","token","handleApplyClick","handleNextClick","PlanUpgradeAddPaymentModalContainer","loadStripe","stripePromise","listTitle","ul","li","PlanUpgradeReviewModal","PlanUpgradeModalContainer","tiersRadioOptionsData","defaultTier","selectedTier","setSelectedTier","planUpgradeDetails","setPlanUpgradeDetails","previewPlanUpgrade","setPreviewPlanUpgrade","isReviewButtonsLoading","setIsReviewButtonsLoading","last4","handleError","onGetSwitchAccountPreview","preview","activeEmployeeCount","add","stripePreview","subscriptionCost","getSwitchAccountPreview","planUniqueId","handleSelectTierNextClick","handleAddPaymentNextClick","handleAddPaymentNevermindClick","onSwitchAccountSuccess","onSwitchAccountFailure","switchAccount","handleReviewNextClick","coupon","handleReviewNevermindClick","INTEGRATION_DATA_KIND","COMPANY","TEAM","EMPLOYEE","USERS_PARTICIPATION","USERS_EARNING","GET_USERS_PARTICIPATION_SUCCESS","GET_USERS_EARNING_SUCCESS","USER_REPORTS_REQUEST_FAILED","getUsersParticipationSuccess","getUsersEarningSuccess","getUsersParticipationAction","getUsersEarningsAction","participation","earnings","CANCEL_SUBSCRIPTION_RESPONSE_STATUSES","CANCELED","CANCEL_FAILED","NO_STATUS","SUBSCRIPTION_INFO","CANCEL_SUBSCRIPTION","billingProcessError","BILLING_REQUEST_FAILED","UPDATE_SUBSCRIPTION_CANCEL_RESPONSE","billingActions","cancelSubscriptionSuccess","updateSubscriptionCancelResponse","cancelSubscription","subscriptionCancelResponse","useImageUploader","aspectRatio","minHeight","fileSizeLimit","onImageEditingDone","getInitialCrop","unit","aspect","imageRef","setFileName","setSrc","scaledMaxHeight","setScaledMaxHeight","scaledMaxWidth","setScaledMaxWidth","scaledMinHeight","setScaledMinHeight","scaledMinWidth","setScaledMinWidth","cropModalOpen","setModalOpen","crop","setCrop","removeRef","onSelectFile","files","reader","FileReader","onload","readAsDataURL","onImageLoaded","maxWidthRatio","minWidthRatio","minHeightRatio","maxHeightRatio","naturalWidth","naturalHeight","clientHeight","clientWidth","initialCrop","updatedHeightPercentage","updatedWidthPercentage","onInputClick","onCancel","onDone","imgCrop","modifiedCrop","canvas","scaleX","scaleY","originWidth","originHeight","getContext","drawImage","toDataURL","getCroppedImg","onCropChange","StyledModal","ModalHeader","StyledHeading","ModalContent","ModalFooter","ImageCropperModal","isModalOpen","handleModalClose","onSubmitClick","MemoizedImageCropperModal","selectPictureContainer","selectPictureOverlay","selectPictureImage","selectPictureInput","DisplayImageUploader","overlayIcon","accept","ruleOfThirds","imageAlt","ImageUploader","limits","MIN_DIMENSIONS","WIDTH","HEIGHT","MAX_DIMENSIONS","FILE_SIZE_LIMIT","returnedHookValues","headingText","cancelButtonText","doneButtonText","loader","animation","clip","hasWeekDays","getWeekCountInWords","getFlowFrequencyOptions","selectedCustomRecurrenceTypes","dayNumber","monthAndDate","weekDetails","WEEKLY","BIWEEKLY","MONTHLY","QUARTERLY","MONTHLY_LAST","QUARTERLY_LAST","ANNUALLY","ONCE","repeatEvery","repeatEveryCount","REPEAT_DAYS","dayNames","selectedDayIds","val","dayInNumber","getDayNameFromNumber","includeWeekDays","includeAllDays","isTheDaySame","REPEAT_ALL_DAYS","REPEAT_WEEK_DAYS","REPEAT_WEEKS","REPEAT_YEARS","repeatOnMonth","REPEAT_MONTHS","listDisplayText","listOption","listThumbnail","listSvgWrapper","hideImage","setImage","handleImageError","renderImg","IDENTITY_SSO_REDIRECT_DEFAULT","INVALID_COMPANY_NAME_ERROR","NOTIFICATION","READ_NOTIFICATIONS","notificationActions","GET_NOTIFICATIONS_SUCCESS","UPDATE_NOTIFICATIONS_COUNT","getNotificationsSuccess","notifications","updateNotificationsCount","getNotificationsAction","notificationCount","updateNotificationsReadAction","ACTIVITY","GET_ACTIVITY_SUCCESS","getUsersActivitySuccess","posts","getActivityAction","incomingPosts","REMOVE_FEED_POST_SUCCESS","deletedPost","feedId","PREVIOUS_COMPARISON_STRING","weeklyTimelineDropdownItems","valueDropdownItems","viewDropdownItems","PEOPLE_SUMMARY_TEMPLATE","subText","subTextLink","headerTooltip","RECOGNITION_SUMMARY_TEMPLATE","PROFILE_INFORMATION_TEMPLATE","convertNumberToPercentage","num","decimalPoint","parseFloat","toFixed","calculateValues","total","percentage","previous","engagementRank","circularProgress","dataNumber","percentChange","comparisonString","serializeGraphData","graphData","lines","isLastTimeDurationData","getTimeStamps","selectedTimelineId","selectedViewId","assemblyCreatedAt","fromTime","utc","toTime","quarter","useAdminInsightsModel","adminAnalyticsAccess","currentCompanyName","makeOverallEngagementRequest","overallEngagementResponse","overallEngagementRequestLoading","overallEngagementError","makePeopleSummaryRequest","peopleSummaryResponse","peopleSummaryRequestLoading","peopleSummaryError","makeRecognitionSummaryRequest","recognitionSummaryResponse","recognitionSummaryRequestLoading","recognitionSummaryError","makeProfileInfoRequest","profileInfoResponse","profileInfoRequestLoading","profileInfoError","makePeopleDataRequest","peopleDataResponse","peopleDataError","makeRecognitionDataRequest","recognitionDataResponse","recognitionDataError","makeCoreValuesDataRequest","coreValuesDataResponse","coreValuesDataError","makeBadgesDataRequest","badgesDataResponse","badgesDataError","badgesGraphData","coreValuesGraphData","recognitionGraphData","peopleGraphData","profileInfoData","responseItem","recognitionSummaryData","peopleSummaryData","overallEngagementStatus","metadata","usePageLogic","isSuperAdmin","weeklyTimelineDropdownArray","valueDropdownArray","viewDropdownArray","reverse","weeklyTimelineItems","monthlyTimelineItems","selectedValue","setSelectedValue","selectedValueTimeline","setSelectedValueTimeline","selectedPeopleTimeline","setSelectedPeopleTimeline","selectedRecognitionTimeline","setSelectedRecognitionTimeline","isUpgradeModalOpen","setUpgradeModalOpen","peopleView","setPeopleView","recognitionView","setRecognitionView","valueView","setValueView","showBookCallModal","toggleBookCallModal","showTipsModal","toggleTipsModal","onViewDropdownChange","optionId","currentlyActiveItem","setValue","currentTimeline","setTimeline","selectedItem","onTimelineDropdownChange","toggleUpgradeModalOpen","onValueDropdownChange","getBadgesGraphData","grouping","getCoreValuesGraphData","getPeopleGraphData","getRecognitionGraphData","selectedChartData","selectedChartError","selectedValueId","selectedValueTimelineId","selectedPeopleTimelineId","selectedRecognitionTimelineId","selectedPeopleViewId","selectedRecognitionViewId","selectedValueViewId","innerWrapper","upgradeButton","AnalyticsUpgradeFreePlan","isFreePlan","assemblyName","BannerImage","getDateFormattedString","timeDuration","startMonth","endMonth","styleById","dashed","strokeDasharray","DashedLine","series","lineGenerator","xScale","yScale","useTooltipStyles","chartItems","listStyle","chartItem","chartItemText","chartItemNumberIndicator","graphPlaceholder","chartStyling","axis","ticks","grid","line","ChartTooltip","formattedString","point","serieId","LinearGraph","chartData","linesDisabled","dataLength","SliceTooltip","isPlaceholderActive","renderPlaceholderContent","imageSrc","placeholderHeader","placeholderSubHeader","AnalyticsGraphErrorImage","AnalyticsGraphAllToggleOff","AnalyticsNoDataImage","axisLeftValues","allYValues","yValues","highestValue","max","yAxisValues","maxValueLimit","ceil","generateAxisLeftValues","xAxisTickValues","xAxisData","showOneTickForValues","xAxisFormat","curve","chartColor","lineWidth","enablePoints","axisBottom","tickSize","tickPadding","tickValues","min","stacked","axisLeft","enableGridY","enableSlices","enableCrosshair","isInteractive","sliceTooltip","layers","toggleText","ChartToggle","mouseEntered","setMouseEntered","toggleIcon","handleMouseEnter","chartToggle","ChartToggleGroup","toggleItems","toggleOnClick","toggleItem","loadingContainer","chartHeight","chartWidth","LinearGraphTemplate","chartError","initializeLocalState","dataFromProps","Map","itemLocalState","setItemLocalState","toggleData","localItem","isLinesDisabled","dataPercentage","timeComparisonText","headerContainer","tooltipContainer","HighlightAnalyticsNumber","infoData","getChangeDetails","changeValue","rx","ry","circleContainer","PercentageIndicator","CircularProgress","panelContainer","gridTemplateColumns","borderLeft","AnalyticsInfoPanel","isPercentageIndicators","statusUpdate","subHeader","numberOfItems","panelData","random","dataItem","BenchMarkInfoModalRoot","BenchMarkInfoModalHeader","BenchMarkInfoModalBody","BenchMarkInfoModalTitle","BenchMarkInfoModalBodyHeading","BenchMarkInfoModalBodyText","BenchMarkInfoModalBodyLink","BenchMarkInfoModalFooter","BenchMarkInfoModal","onBookACallClick","handleGiveRecognitionClick","scrollTo","handleViewBlogPostClick","handleBookACallClick","AccordionWrapper","AccordionSummary","AccordionDetails","AccordionContent","SvgIconWrapper","SingleAccordion","summaryContent","detailsContent","isAccordionOpen","toggleAccordionOpen","setHeight","accordionContentRefElement","handleToggleClick","accordionContentHeight","scrollHeight","AdminAnalyticsContainer","Breadcrumbs","InfoTypeContainer","InfoTypeHeader","GraphContainer","GraphTitleContainer","BookCallButton","BookCallModal","GraphDropdownContainer","MultiDropdownContainer","BenchmarkContainer","BenchmarkContentHeading","BenchmarkContent","KeyTypeContainer","TypeContainer","AdminAnalyticsPage","monthlyTimelineDropdownItems","handleBookCallModalClick","PEOPLE_SUMMARY_HEADER","RECOGNITION_SUMMARY_HEADER","RECOGNITION_GRAPH_HEADER","CORE_VALUES_BADGES_HEADER","onPeopleViewDropdownChange","onRecognitionViewDropdownChange","onValueViewDropdownChange","onPeopleTimelineDropdownChange","onRecognitionTimelineDropdownChange","onValueTimelineDropdownChange","peopleTimelineItems","recognitionTimelineItems","valueTimelineItems","overallEngagementIcon","overallEngagementHeader","overallEngagementComment","showBookCallButton","AccordionSummaryContent","benchmarkingError","Helmet","AdminInsightsPageController","useAdminInsightsLogic","AdminAnalytics","orderSortFilterMenuItems","formGroup","caption","cancelButton","clearFilter","dropdownFooter","keywords","currencyMin","currencyMax","FEED","FEED_ADMIN","COMMENT_ADMIN","commentId","feedActions","removePost","keepCarrots","urlPath","feedID","VariantTypes","inputBaseRightPadding","StyledPaper","Paper","StyledDynamicPaper","StyledLoader","StyledChip","AutocompleteOptionLoader","uniqueKey","LOADING_SKELETON","AutoCompleteCore","autoSelect","groupByCategory","disableCloseOnSelect","textboxSize","textboxValue","onTextboxValueChange","filterOptionsFunction","ListboxProps","checkIfDisabled","expandableDropdown","setInputValue","onInputValueChange","onTagDelete","INDETERMINATE","groupBy","now","loadingSkeletonOption","generateInfiniteOptions","optionToTestAgainst","filterOptions","closeIcon","PaperComponent","OptionLoader","getOptionDisabled","tags","tag","popupIcon","convertedValue","PageNotFound","logoHolder","IntegrationButtonBase","showUpgradeInfo","linkText","finalText","IntegrationButton","colorMap","none","danger","flowProgress","progressBarSizes","StyledProgressBarWrapper","StyledProgressBar","ProgressBar","EmoticonPicker","sheetSize","native","MemoizedEmoticonPicker","PopoverWrapper","usePopover","childrenWithPopoverProps","MemoizedEmoticonPickerPopover","PositionStrategies","strategy","Fixed","setIsPopoverOpen","ToolTipText","toolTipSize","ToolTipRoot","iconHoverColor","toolTipComponent","showTooltipByDefault","positionStrategy","isTooltipOpen","setTooltipOpen","renderToolTipComponent","webpackContext","req","webpackContextResolve","__webpack_require__","o","resolve","module","exports","AssemblyLanderBg","StyledImage","InnerWrapper","AssemblyLanderLoadingScreen","assemblyLogo","MemoizedAssemblyLanderLoadingScreen","TextDivider","renderRootColor","renderTextColor","classnames","CREATE_YOUR_PASSWORD","VALIDATE_YOUR_EMAIL","signInWithText","SIGN_IN_BUTTON_TEXT","RETURN_TO_SIGN_IN_TEXT","RESET_PASSWORD_TEXT","IS_THIS_CORRECT_TEXT","SIGN_IN_WITH_SAML_TEXT","SAML_WITH_SSO_TEXT","ssoName","SAML_WITH_NO_PREFERRED_SSO_TEXT","SAML_WITH_NO_PREFERRED_SSO_BODY_TEXT","SAML_WITH_PASSWORD_TEXT","SAML_ONLY_HEADER_TEXT","SAML_ONLY_BODY_TEXT","CREATE_PASSWORD_BODY_TEXT","StyledRoot","StyledSubText","SSOInfoCard","buttonOnClick","buttonProps","buttonColour","buttonVariant","buttonStatus","colour","passwordVal","onPasswordChange","passwordErrors","linkPath","flexGrow","appBar","grow","logoStyle","slackOnboardStep","AppBar","Toolbar","assemblyLogoWeb1x","assemblyLogoWeb3x","LinearProgress","paddingTop","SAMLAuthErrorCodes","WIRES_CROSSED","TRY_AGAIN","TAKE_ME_BACK","HttpsStatus","OAUTH_CODE_INVALID","INVALID_PARAMETER","CREATE_MEMBER_ERROR","SAML_NOT_ENABLED","USER_NOT_ACTIVE","useSAMLAuthLogic","useLocation","setToken","setAssemblyId","setSamlName","setErrorCode","parsedParams","ignoreQueryPrefix","tokenFromURL","assemblyIdFromURL","errorCodeFromURL","microsoftTeams","notifyAppLoaded","notifySuccess","hasToken","useAuthenticateSAMLQuery","hasAssemblyId","jwtToken","errorCodeValue","useSAMLConfigFetchQuery","samlConfigData","SAMLAuthController","getSAMLErrorData","handleButtonClick","Grid","useDataDog","isAuthenticated","datadogRum","setUser","member","ErrorBoundary","onBackHomeClick","setState","unSupprortedBrowser","origin","detect","isSupportedBrowser","version","brokenCarrot","safariLogo","chromeLogo","firefoxLogo","edgeLogo","useFetchBotConfig","REDIRECT_URI","isConnectingBot","setIsConnectingBot","isAutoLogin","setIsAutoLogin","onGetSSOConfigSuccess","authorizeUri","redirectToIM","redirectUri","auto","useVerifyBotCode","isVerifyingCode","setIsVerifyingCode","verifyError","setVerifyError","authorizeSuccess","isCodePresent","BotManagerAuthorize","botType","useParams","useFetchIMConfig","imConfig","setIMConfig","isConnectingIM","setIsConnectingIM","imConfigData","onAuthorizeClick","useVerifyIMCode","makeAuthorizeRequest","CookieHandler","remove","makeSigninRequest","headerLogoLink","HeaderNavbar","customLogo","logoOnClick","AssemblyLogo","SSOOnboardingTemplate","logoURL","onLogoClick","LoginType","IdentityManagerAuthorize","ssoId","isConnectingOrVerifying","connectionBody","welcomeHeading","welcomeBody","ComposedComponent","NotAuthentication","PropTypes","router","object","prevProps","connect","auth","Authentication","fullPath","pathname","ButtonSSO","loginType","SignIn","SignUp","ComingSoon","startIcon","useFetchSSOConfig","authInModal","isConnectingSSO","setIsConnectingSSO","ssoAuthorizeURI","setSSOAuthorizeURI","ssoURL","msTeamsOAuthStart","authenticate","failureCallback","reason","authorizeURI","signinSSORequest","signinRequestLoading","signupSSORequest","signupRequestLoading","preferredSSOSelector","useIntegrationLayer","preferredSSO","fireGetPreferredSSORequest","usePreferredSSO","context","loginHint","buttonWrapper","flexBasis","buttonWrapperFull","buttonRoot","SSOComponent","onSSOClick","showPreferred","showAsPrimary","setErrorMessage","slackModels","slackOperations","officeModels","officeOperations","adpModels","adpOperations","redirectToURL","handleSlackClick","handleOfficeClick","verifyGoogleSSOCode","basePath","handleGoogleSSOError","handleADPClick","gSuiteSSOFlow","SlackButton","OfficeButton","ADPButton","LifionButton","GSuiteButton","doNotShowErrorMessage","infoAlertDismissible","isExpandOnFocusEnabled","StyledNewPasswordTextFieldWrapper","StyledReEnterPasswordTextFieldWrapper","CreateYourPassword","showError","dirty","handleSubmit","onSubmit","textBox","orText","OrDivider","SigninOptionsType","SigninOptionsLayoutType","StyledLink","LinkV2","SigninSubText","linkOneText","linkOnePath","linkTwoText","linkTwoPath","StyledDivider","StyledSigninSubText","StyledSubmitButton","PasswordComponent","initialValues","SigninOptionsLayoutHeader","SigninOptionsLayout","samlButtonLoading","setSAMLButtonLoading","samlURL","templateType","SAML_WITH_NO_PREFERRED_SSO","samlProps","onSAMLClick","encodedSAMLUrl","encodeURIComponent","modalURL","subTextProps","headerProps","samlIcon","samlButtonText","NO_PREFERRED_SSO","ssoComponentProps","SigninOptions","signinOptionsType","SAML_ONLY","SAML_WITH_SSO","SAML_WITH_PASSWORD","passwordProps","createPasswordProps","CREATE_PASSWORD_WITH_NO_PREFERRED_SSO","SAML_WITH_CREATE_PASSWORD","SSO_ENFORCED","ValidateYourEmail","PlaceHolderImage","LOGIN_OPTIONS","LOGIN_WITH_PASSWORD","TRIGGER_SET_PASSWORD","FORGOT_PASSWORD_VERIFY_TOKEN","v2Session","getForgotPasswordRequestLoadingStatus","getTriggerResetPasswordRequestLoadingStatus","getVerfiyTokenRequestLoadingStatus","getResetPasswordRequestLoadingStatus","getEmailIdForResetPassword","getSigninOptionsRequestLoadingStatus","getSigninWithPasswordRequestLoadingStatus","errorCodes","SLACK_ERROR_MESSAGES","SLACK_ERROR_TYPES","ONBOARDING_FLOW","SLACK_ONBOARDING_STEPS","AUTHORIZE_SIGNIN_WITH_SLACK","AUTHORIZE_SIGNIN_WITH_SLACK_V2","AUTHORIZE_USER_AUTH_SLACK","AUTHORIZE_ADD_TO_SLACK","SLACK_APP_INFO","SLACK_VERIFY_MESSAGE","SLACK_CHANNELS","SLACK_ACTIVE_CHANNELS","DEFAULT_SLACK_CHANNEL","SLACK_CUSTOM_EMOJIS","CREATE_DEFAULT_SLACK_CHANNEL","SLACK_MEMBERS","INVITE_SLACK_MEMBERS","ONBOARD_SLACK_MEMBERS","SLACK_HRIS_SETTINGS","SLACK_MEMBERS_ALL","SLACK_MEMBERS_FULL","SLACK_MEMBERS_SPECIFIC","SLACK_START_MEMBER_ONBOARDING","SLACK_ANNOUNCEMENT","SLACK_MEMBER_ONBOARDING_STATUS","GET_ACTIVE_SLACK_CHANNELS","GET_SLACK_CUSTOM_EMOJIS","UPDATE_ACTIVE_SLACK_CHANNELS","GET_DEFAULT_SLACK_CHANNEL","UPDATE_DEFAULT_SLACK_CHANNEL","GET_SLACK_MEMBERS","UPDATE_SLACK_MEMBERS_IN_STORE","GET_SLACK_HRIS_SETTINGS","UPDATE_SLACK_HRIS_SETTINGS","UPDATE_SLACK_MEMBERS","UPDATE_SPECIFIC_SLACK_MEMBERS","baseUrl","authorizeSignInWithSlack","authorizeAddToSlack","userAuthenticated","slackChannels","activeChannels","defaultChannel","slackMembers","customEmojis","short_names","customCategory","slackMembersAdded","members","MEMBER_TYPES","getSlackConfigInfo","slackMembersSelector","getSlackMembersSerialzed","titlelize","real_name","thumbImage","image_48","image_512","serializeSlackMembers","slackMember","memberTypeString","memberType","slackMemberType","isAssemblyUser","existing","alignitems","Existing","Typography","gutterBottom","SIGNIN_STATE","SSOSignInOptions","SigninWithPasswordOptions","onSubmitPassword","setFieldError","goThrough","loginWithPassword","successAction","toPath","errorOrAbortAction","onForgotPassword","triggerSetPassword","signinState","preventDefault","emailErrors","encodedEmail","loginOptions","samlData","passwordData","verifyData","hasSAMLDisconnectedError","handleSSOClick","ssoOption","ssoLoading","getSSOOptionsForSSO","getSAMLName","getSubTextProps","hasTwoLinks","renderVerifyState","ssoData","loadingSigninWithPassword","SSO_ENFORCED_BODY_TEXT","lifionURI","emailTouched","isButtonDisabled","wrapper","SplitTreatments","names","REMOVE_PASSWORD_BASED_AUTH","treatments","ON","slackConfigInfo","userEmail","footer","terms","ForgotPassword","forgotPassword","subtitleStyle","textFieldStyle","withRouter","VerticallyCenteredLayout","offsetHeight","SignInLink","emailStyle","buttonStyle","ForgotPasswordLink","VerifyToken","verifyToken","verifyFailed","forgotPasswordVerifyToken","mainText","Fragment","PASSWORD_LANGUAGE","passwordValidators","Yup","matches","validators","validateSync","calculateValidationTexts","validationText","calculateStrength","validCount","checkPasswordMaxLength","maxLen","checkForNameAndMailId","passwordChecker","Fuse","shouldSort","threshold","distance","maxPatternLength","minMatchCharLength","checkPasswordStrength","newValidationTexts","newStrength","ResetPassword","mailId","confirmPassword","resetPassword","handlePasswordChange","passwordTouched","handleConfirmPasswordChange","confirmPasswordTouched","isPasswordStrengthStrong","marginTop24","marginBottom12","REGISTER_EMPLOYEE_WITH_EMAIL","REGISTER_EMPLOYEE_WITH_DOMAIN","GET_EMPLOYER_DETAILS","VERIFY_MAGIC_LINK","VERIFY_INVITE_TOKEN","SET_PROFILE_FOR_INVITE_TOKEN","SET_PROFILE_FOR_EMPLOYEE","SET_DETAILS_FOR_USER","SET_SKIP_DETAILS_FOR_USER","registerEmployeeWithDomain","getSetProfileRequestLoadingStatus","getRegisterRequestLoadingStatus","getSetDetailsRequestLoadingStatus","v2EmployeeSignup","RegistrationMethods","ERROR_STATES","AdapterCustomLink","EnterEmail","onSigninClick","$email","emailError","getRedirectUrl","handleEmailChange","chatClick","renderErrorLayout","errorState","headeText","RedirectComponent","domainEmployer","slackVerifying","URLSearchParams","slackErrorMessage","isStyleObject","SingleOtpInputWithoutStyles","getClasses","c","shouldAutoFocus","select","separator","isLastChild","isFirstChild","isDisabled","inputStyle","hasErrored","isInputNum","errorStyle","focusStyle","numValueLimits","firstInput","lastInput","maxLength","PureComponent","SingleOtpInput","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","OtpInput","activeInput","getOtpValue","handleOtpChange","otp","otpValue","focusInput","numInputs","focusNextInput","focusPrevInput","changeCodeAtFocus","handleOnPaste","pastedData","clipboardData","pos","shift","handleOnKeyDown","keyCode","checkLength","renderInputs","inputs","onInput","onPaste","containerStyle","assign","EnterCode","resendCodeSuccess","codeErrors","codeVerified","newUserId","isRequestLoading","isResendRequestLoading","otpContainerStyle","isInputNu","secondaryDivStyle","successDivStyle","progresStyle","errorDivStyle","PhoneInput","PhoneField","FormControl","FormHelperText","MemoizedPhoneField","EnterProfile","trackCriteo","criteo_q","deviceType","account","quantity","phoneNumberValue","fullNameErrors","phoneNumberErrors","mapPhoneNumberToPhone","countryCallingCode","nationalNumber","handleNameChange","fullNameTouched","handlePhoneNumberInput","handlePhoneNumberChange","script","async","marginBottom24","form","bottomDiv","EnterCompanyName","onCreateCompanyClick","companyNameErrors","companyNameTouched","closeEnterProfileModal","scriptText","createTextNode","appendChild","fireConversionForSignup","setProfile","CreateAssemblyLink","LanderLink","SET_ASSEMBLY_TYPE","ENTER_EMAIL_COMP_STATUS","componentDidMount","loadEmployerDetails","onSignupClick","companyId","registerEmployeeWithEmail","getPageStatus","getEmployerName","renderDomainErrors","renderError","renderSuccess","renderScreen","noRequireAuth","UPDATE_INVITE_USER_DATA","REMOVE_INVITE_USER_DATA","GOT_DATA_FOR_TOKEN","GOT_EMPLOYER_INFO","VERIFIED_MAGIC_LINK","MAGIC_LINK_NOT_VALID","SIGNUP_REQUEST_FAILED","updateInviteUserData","inviteUser","removeInviteUserData","gotTokenDetailsSuccess","gotEmployerInfoSuccess","verifyMagicLinkFailed","verifiedMagicLinkSuccess","SET_PROFILE_TYPES","inviteToken","setProfileForEmployee","loginAndRedirectUser","setProfileForInviteToken","redirectToSignup","renderInvalidToken","invalidInviteToken","getInviteTokenVerified","employeeSignupActions","StyledMenuItem","MenuItem","useSelectStyles","dropIcon","selectMonth","selectDay","useDateSelectStyles","selectYear","getClassNameforField","SelectInput","inputClasses","selectClasses","placeHolderInList","monthValue","Select","InputBase","BirthDayMonthPicker","dayValue","onMonthChange","onDayChange","dayOptions","DayMonthYearPicker","yearValue","onYearChange","SetupSuccess","SubTextComponent","firstLogin","EnterDetails","setupInitialData","birthdateTouched","hireateTouched","displayNameTouched","birthDate","hiredDate","onSkipClicked","setSkipDetailsForEmployee","displayNameParsed","displayNameErrors","hiredateError","birthdateError","setDetailsForEmployee","handleDisplayNameChange","handleBirthMonthChange","handleBirthDayChange","handleHireMonthChange","handleHireDayChange","handleHireYearChange","actionDiv","skipButtonLabel","VerifyMagicLink","checkAndVerifyLink","magicLink","getMagicLinkVerified","addToSlack","isUserAuthenticated","SignInWithSlack","isAutoSignIn","isAuto","handleAutoSignIn","userAuth","signInV2","getSlackUrls","slackAddAPIUrl","slackSigninAPIUrl","slackUserAuthUrl","slackSigninV2APIUrl","slackConnecting","onSlackClick","onAuthorizeSuccess","onboardingFlow","onboardingStep","getPathToSlackComplete","onAuthorizeFailure","slackError","slack","handleSlackIntegration","parsed","qs","parseURL","addToSlackSlackAPI","signInWithSlackAPI","userAuthSlackAPI","signInWithSlackAPIV2","authorizeUserAuthSlack","authorizeSignInWithSlackV2","addToSlackSlackAPIV2","currentUrl","redirectUrl","CLIENT_ID","DEV_CLIENT_ID","SCOPES","SIGN_IN_WITH_SLACK","user_scope","ADD_TO_SLACK","SLACK_AUTHORIZE_USER","SIGN_IN_WITH_SLACK_V2","employeeSignupFrom","renderHeader","renderBody","signupwithslack","giveFirstButton","renderSubtext","getSlackAppInfo","emailLabel","SignupSuccess","activateLink","setTimeout","buttonDisabled","bodyHead","bodyTitle","textCenter","EmailSignin","signUp","emailWrapper","emailText","SignInWithSAMLHOC","SignInWithSAML","EnterEmailHOC","Routes","exact","render","ForgotPasswordSuccess","ForgotPasswordVerify","ResetPasswordSuccess","EmployeeEnterEmail","requireAuth","EmployeeSetDetails","Authorization","allowedRoles","WrappedComponent","hasRole","SuperAdminAuthorization","useSignout","signoutUser","removeQueries","Signout","passwordValidationText","usePasswordWithValidator","setValidationText","setStrength","validateFormikForm","resultErrors","isPasswordValid","validationSchema","required","when","is","useCreatePassword","createPasswordType","setCreatePasswordType","emailForToken","setEmailForToken","newPassword","setNewPassword","SAMLLoginOptions","setSAMLLoginOptions","useVerifyCreatePasswordTokenQuery","verifyTokenData","useGetLoginOptionsQuery","isLoginOptionsLoading","useCreatePasswordQuery","createPasswordData","isCreatePasswordQueryLoading","saml","tokenInvalid","handleSaveButtonClick","useCreateYourPasswordLogic","createYourPasswordProps","useFormik","validate","StyledInvalidDiv","CreatePasswordController","setSSOType","setSSOLoading","ssoTypeVal","GoogleOneTapLoginController","setCode","useMemberNotAuthenticated","idToken","useAuthenticateGoogleOneTapCode","SAMLAuthModalController","decodeURIComponent","MSTeamConfigurePopupContent","MSTeamConfigurePopupContentBG","useMSTeamsConfig","setupMSTeamsConfig","setValidityState","registerOnSaveHandler","saveEvent","setSettings","contentUrl","entityId","MS_TEAMS_CONFIG","suggestedDisplayName","MSTeamsTabConfig","CardRoot","Card","GifBackground","SvgWrapper","GifContainer","onGifRemoveClick","lazyload","useInView","triggerOnce","skip","inView","calculatedSrc","useMultipleJobsPollingV2","preJobsAPI","postJobsAPI","jobIds","setJobIds","isPostJobsEnabled","setIsPostJobsEnabled","jobsFailureError","setJobsFailureError","preJobAPIData","isPreJobAPILoading","preJobAPIError","postJobAPIData","isPostJobAPILoading","postJobAPIError","refetchPostJobAPI","refetch","responseIDs","job","useMultipleJobsStatusQuery","jobData","jobError","successfulJobs","failedJobs","isJobStatusSuccessful","isJobRunning","CardContainer","StyledGifContainer","MainContainer","UserSetupController","SSOAuthorizePresentational","useVerifySSOCode","signinRequest","signupRequest","fromTab","notifyFailure","DisplayComponent","GSuiteComponent","SSOAuthorize","fetchSSOModels","SSOErrorsPresentational","useSSOError","SSOErrors","nested","itemText","selectedText","AdminMenuCategory","AdminRouteIndex","AdminRoutesList","workspace","recognition","flows","celebration","billing","security","AdminMenu","rewardsSwagsTreatment","AXOMO_REWARDS","isCombinedUsersManageInviteEnabled","COMBINED_USERS_MANAGE_INVITE","workspaceOpen","setWorkspaceOpen","recognitionOpen","setRecognitionOpen","flowsOpen","setFlowsOpen","usersOpen","setUsersOpen","celebrationOpen","setCelebrationOpen","rewardsOpen","setRewardsOpen","billingOpen","setBillingOpen","securityOpen","setSecurityOpen","selectedMenuItem","setSelectedMenuItem","mainRoutePath","matchedSubPagePath","formattedPath","endsWith","getMainRoutePath","selectedCategory","getUpdatedSelectedIndex","adminRewardsFilteredList","CONTROL","userNavList","navItem","List","ListItem","ListItemIcon","ListItemText","disableTypography","Collapse","timeout","unmountOnExit","DropdownMenu","onActionClick","dropdownMenu","handleActionsPopoverClose","actionsPopover","toggleOverlay","Fade","AdapterLink","AvatarDropdown","MenuList","menuPopoverStyle","LoadableNotification","Loadable","renderListItemLink","itemProps","HeaderWithMenu","showMenu","onMenuClicked","onNotifClick","homeIconClicked","toggleMenu","prevState","clickAway","isSmallScreen","renderCompanyLogo","userLoggedIn","RenderRightDiv","homeButton","linkStyle","RenderDropDown","listItemStyle","listItemTextStyle","divider","headerRoot","containerDiv","leftDiv","shouldShowMenuToggle","Fab","rightDiv","Hidden","mdUp","hamburger","smDown","isOpened","dropCollapseDiv","dropCollapseDivShow","isContinueSetupOpen","ui","withWidth","badgeRootStyle","badgeIconStyle","badgeStyle","badgeNoStyle","notificationDropList","SidebarMenuRouters","alertParent","menuOpen","menuLeft","menuCollapseWithResize","bind","innerWidth","setMenuFalse","setMenuTrue","Drawer","anchor","drawerPaper","Sidebar","colorHeader","headerActiveStyle","colorSidebar","sidebarActiveStyle","colorHeaderBanner","headerBAnnerActiveStyle","admin","borderRight","fullList","variantIcon","CheckCircleIcon","WarningIcon","ErrorIcon","InfoIcon","MySnackbarContent","other","SnackbarContent","messageStyle","iconVariant","close","MySnackbarContentWrapper","amber","FlashBar","getMessageVariant","isError","handleExited","processQueue","removeMessage","flashId","queue","messageInfo","prevMessageId","Snackbar","autoHideDuration","onExited","getLatestMessage","AccountsDashboard","loadDashboard","updateBillingStatus","employerIdNewStatus","confirm","employerProcessingStatuses","toLower","employers","billingStatus","page","ACCOUNT","PAID_REWARD","employerProcessingStatus","displayBillingStatus","camelCase","startCase","TableCell","availableTransistions","billingTransitions","TableHead","TableBody","joinedOn","ownerEmail","employeeCount","billingAction","CLOSED","ACTIVE","INACTIVE","DENIED_BY_ADMIN","UNVERIFIED","UNVERIFIED_BY_ADMIN","SOFTVERIFIED","SOFTVERIFIED_BY_ADMIN","VERIFIED_BY_ADMIN","ButtonWithArrow","focusable","flexShrink","userSelect","Styles","BootstrapInput","dropdownButtonIcon","slackSettingsModal","buttonHolder","ChangeCurrencyModal","addEmoji","selectedEmoji","emojiOpen","onEmojiClick","handleEmojiRequestClose","handleCurrencyChange","handleCurrencyPluralChange","onUpdateClick","isSet","currencyEmoji","currencyIconURL","onUpdate","targetOrigin","selectedEmployer","customCompanyIcon","emojiPopover","SearchBar","searchTextFieldValue","handleSearchChange","onSearchClick","onExportClick","LOAD_ACCOUNTS","UPDATE_BILLING_STATUS","UPDATE_ACCOUNT_MEDIA","parseUrl","accounts","totalAccounts","settings","getAccountsSelector","convertToArray","IMAGE_LIMITS","AccountsDashboardV2","updateBillingStatusAction","alert","onImageUploadError","onCropperDone","mediaAdded","selectedEmployerId","uploadData","updateAccountMediaAction","fileInput","handleChangeCurrencyModalClose","changeCurrencyModalOpen","handleChangeCurrencyModalOpen","selectedEmployerObj","onBannerEditClick","onBannerDeleteClick","deleteAccountMediaAction","onCurrencyChange","onLoadUsersClick","searchText","getAccountsAction","csvData","ownerName","accountHasLogo","displayCustomIcon","getCustomIcon","showDoneIcon","headingDiv","iconStyle","getAccountCustomIconSelector","SuperAdminAnalytics","searchParams","Reports","onDownloadClick","start","end","downloadUrl","setAttribute","handleStartDateChange","handleEndDateChange","subtract","handleFileChange","clearable","animateYearScrolling","LoadableAdminComponent","ProtectedRoute","adminCheck","AdminRole","SuperAdminRole","OnboardingRoutePaths","RoutePathsWithoutNavbar","RoutesComponent","handleChangeValue","menu","pageContentAdmin","onChangeMenu","OnboaringRoutes","SplitV2","Routers","planData","planType","isPaid","splitConfig","core","authorizationKey","startup","readyTimeout","UNAUTHORIZED","SplitFactory","updateOnSdkUpdate","StyledToastContainer","ToastContainer","MuiDialogTitle","MuiButtonBase","overrides","MuiCssBaseline","MuiIconButton","MuiFormLabel","MuiInput","MuiButton","htmlFontSize","QueryClient","defaultOptions","queries","retry","failureCount","App","MomentUtils","REACT_APP_VERSION","CssBaseline","newestOnTop","rootSaga","all","createRequestInstance","driver","createDriver","watchRequests","sagaMiddleware","SLACK_AUTHORIZATION_SUCCESS","SLACK_DEAUTHORIZATION_SUCCESS","INTEGRATION_REQUEST_FAILED","CHANNEL_NAME_FAILED","SET_SLACK_CHANNEL_MODAL_STATUS","CUSTOM_ALLOWANCE_REQUEST_STATUSES","UPDATE_CUSTOM_ALLOWANCE_SUCCESS","CUSTOM_ALLOWANCE_REQUEST_STATUS","EMPLOYER_SLACK_DETAILS","GET_REWARD_LISTS","RESEND_EMAIL","udpatedReward","rewardId","rewardToUpdate","appReducer","combineReducers","sessionReducer","checkoutReducer","meReducer","home","homeReducer","notificationsReducer","employeeSignup","magicLinkError","verifiedUser","adminReducer","adminUsersInvite","adminUsersInviteReducer","adminManageUsers","adminManageUsersReducers","adminActivity","adminActivityReducers","adminUsersReports","adminUsersReportsReducers","adminRewardsGifts","adminRewardsGiftsReducers","adminRewardsPayment","adminRewardsPaymentReducer","adminBilling","adminBillingReducer","adminIntegrations","channelModalStatus","channelName","adminTables","adminTablesReducers","adminAnniversaries","adminAnniversariesReducer","adminCustomAllowance","flash","flashReducer","uiReducers","sheaderStyle","headerBannerStyle","sidebarStyle","v2SessionReducers","v2OnboardingReducers","v2EmployeeSignupReducers","v2AdminAccountReducers","v2SlackOnboard","v2SlackOnboardReducers","apiReducers","adminSlack","adminSlackReducers","superAdmin","superAdminReducers","v2AdminBillingsPaymentHistory","v2AdminBillingPaymentHistoryReducers","myRewards","myRewardsReducers","API","APIResponseReducer","allReducers","newState","loggerMiddleware","createLogger","createSagaMiddleware","sagaMonitor","enhancer","middleware","thunk","requestsPromiseMiddleware","flashMiddleware","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","applyMiddleware","compose","store","createStore","runSaga","run","END","loadProgressBar","showSpinner","sampleRate","trackInteractions","replaySampleRate","defaultPrivacyLevel","startSessionReplayRecording","ReactDOM","getElementById"],"mappings":"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BACAD,EA0BEtnD,EA1BFsnD,aACApjC,EAyBElkB,EAzBFkkB,WACAvS,EAwBE3R,EAxBF2R,MACA1F,EAuBEjM,EAvBFiM,KACAywC,EAsBE18C,EAtBF08C,QACAyK,EAqBEnnD,EArBFmnD,KACAhjC,EAoBEnkB,EApBFmkB,UACAgkC,EAmBEnoD,EAnBFmoD,cACA1Z,EAkBEzuC,EAlBFyuC,aACAt8B,EAiBEnS,EAjBFmS,UACAi2C,EAgBEpoD,EAhBFooD,cACA+D,EAeEnsD,EAfFmsD,aACAkF,EAcErxD,EAdFqxD,kBACArO,EAaEhjD,EAbFgjD,WACA3C,EAYErgD,EAZFqgD,cACA0C,EAWE/iD,EAXF+iD,cACAE,EAUEjjD,EAVFijD,UACA3M,EASEt2C,EATFs2C,YACA4M,EAQEljD,EARFkjD,WACAmF,EAOEroD,EAPFqoD,aACAlS,EAMEn2C,EANFm2C,oBACAmb,EAKEtxD,EALFsxD,aACAvtD,EAIE/D,EAJF+D,KACA69B,GAGE5hC,EAHF4hC,IACAkhB,GAEE9iD,EAFF8iD,mBACAhU,GACE9uC,EADF8uC,gBAGIyiB,GAAgBpwD,mBAAQ,WAC5B,MACW,gBAATsC,GACS,gBAATA,GACS,gCAATA,EAEO,OACI,oBAATA,GAAuC,oBAATA,EACzB,WACI,kBAATA,GAAqC,kBAATA,EAAiC,SAC1DA,IACN,CAACA,IAEE+tD,GAAgBrwD,mBAAQ,WAC5B,OAAIm1C,EACK,CACL0M,aACA3C,gBACA0C,gBACAE,YACAC,cAGG,OACN,CACD7C,EACA2C,EACAE,EACAD,EACAF,EACAzM,IAGIhyB,GAAU,yBACdrY,OACAxI,KAAM8tD,GACNt9C,QACA6P,cACAvf,OACAo2C,WACAyW,oBACA1S,sBACAP,SACAx5C,QACAyf,YACA8X,UACAlY,WACAC,aACAuqB,SACAt6B,UACAvT,WACA6R,cACA40C,cACAtkC,QACAykC,kBACAD,eACA5K,UACAyL,gBACA1Z,eACAt8B,YACAi2C,gBACA+D,eACAx6C,QACAuS,aACAmkC,eACAlS,sBAEAhI,SAAUxpC,EACV2sD,eACAvtD,OACA++C,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OAAe,s7C,6BCAf,OAAe,ykF,6BCAf,OAAe,qvD,6BCAf,OAAe,0vB,6BCAf,OAAe,8vT,6BCAf,OAAe,whB,6BCAf,OAAe,i84B,6BCAf,OAAe,48kC,6BCAf,OAAe,0qD,6BCAf,OAAe,0sC,6BCAf,OAAe,i2D,6BCAf,OAAe,o8C,6BCAf,OAAe,syD,6BCAf,OAAe,y9B,6BCAf,OAAe,uV,6BCAf,OAAe,+xD,6BCAf,OAAe,0+sB,6BCAf,OAAe,u0E,6BCAf,OAAe,y7G,6BCAf,OAAe,glF,6BCAf,OAAe,qqB,6BCAf,OAAe,sa,6BCAf,OAAe,0a,6BCAf,OAAe,kb,6BCAf,OAAe,4a,6BCAf,OAAe,sU,6BCAf,OAAe,uV,6BCAf,OAAe,65zB,6BCAf,OAAe,m8xB,6BCAf,OAAe,+X,6BCAf,OAAe,kgB,6BCAf,OAAe,ohB,6BCAf,OAAe,4iB,6BCAf,OAAe,urB,6BCAf,OAAe,2wyD,6BCAf,OAAe,qoB,6BCAf,OAAe,y7B,6BCAf,OAAe,07B,6BCAf,OAAe,0/B,6BCAf,OAAe,6gD,6BCAf,OAAe,wyB,6BCAf,OAAe,q8D,6BCAf,OAAe,0+D,6BCAf,OAAe,4oB,6BCAf,OAAe,qqW,6BCAf,OAAe,0d,6BCAf,OAAe,6nB,6BCAf,OAAe,u6B,6BCAf,OAAe,u+B,6BCAf,OAAe,gd,6BCAf,OAAe,qO,6BCAf,OAAe,0pD,6BCAf,OAAe,+sG,6BCAf,OAAe,g8B,6BCAf,OAAe,uW,6BCAf,OAAe,0b,6BCAf,OAAe,y6E,6BCAf,OAAe,owB,6BCAf,OAAe,qlB,6BCAf,OAAe,8xB,6BCAf,OAAe,4S,6BCAf,OAAe,o9E,6BCAf,OAAe,o4B,6BCAf,OAAe,8xC,6BCAf,OAAe,ohD,6BCAf,OAAe,ohD,6BCAf,OAAe,k4R,6BCAf,OAAe,uc,6BCAf,OAAe,27B,6BCAf,OAAe,6pa,6BCAf,OAAe,wkC,6BCAf,OAAe,u6kB,6BCAf,OAAe,wkrC,6BCAf,OAAe,06c,6BCAf,OAAe,yb,6BCAf,OAAe,0uB,6BCAf,OAAe,knB,6BCAf,OAAe,knE,6BCAf,OAAe,omC,6BCAf,OAAe,mrC,6BCAf,OAAe,w7D,6BCAf,OAAe,ug8D,6BCAf,OAAe,wgB,6BCAf,OAAe,olB,6BCAf,OAAe,stC,6BCAf,OAAe,izC,6BCAf,OAAe,ohC,6BCAf,OAAe,4vD,6BCAf,OAAe,6yD,6BCAf,OAAe,20B,6BCAf,OAAe,8xB,6BCAf,OAAe,sgC,6BCAf,OAAe,o9B,6BCAf,OAAe,klR,6BCAf,OAAe,46D,6BCAf,OAAe,+8B,6BCAf,OAAe,ipQ,6BCAf,OAAe,+gF,6BCAf,OAAe,mkD,6BCAf,OAAe,+zB,6BCAf,OAAe,00B,6BCAf,OAAe,mb,6BCAf,OAAe,0zC,6BCAf,OAAe,ivB,6BCAf,OAAe,u5B,6BCAf,OAAe,wmzD,6BCAf,OAAe,iM,6BCAf,OAAe,wW,6BCAf,OAAe,sjD,6BCAf,OAAe,8hC,6BCAf,OAAe,usqB,6BCAf,OAAe,qhC,6BCAf,OAAe,gmC,6BCAf,OAAe,2kC,6BCAf,OAAe,i4S,6BCAf,OAAe,mlO,6BCAf,OAAe,s/B,6BCAf,OAAe,ipU,6BCAf,OAAe,2gC,6BCAf,OAAe,ukN,6BCAf,OAAe,kuB,6BCAf,OAAe,qP,6BCAf,OAAe,+7yM,6BCAf,OAAe,gvsG,6BCAf,OAAe,2o4E,6BCAf,OAAe,w3B,6BCAf,OAAe,+sG,6BCAf,OAAe,gsC,6BCAf,OAAe,yjC,6BCAf,OAAe,i8D,6BCAf,OAAe,irB,6BCAf,OAAe,kV,6BCAf,OAAe,2U,6BCAf,OAAe,ke,6BCAf,OAAe,o/B,6BCAf,OAAe,ojD,6BCAf,OAAe,6qD,6BCAf,OAAe,8pC,6BCAf,OAAe,muD,6BCAf,OAAe,kvC,6BCAf,OAAe,6pC,6BCAf,OAAe,0vJ,6BCAf,OAAe,uiD,6BCAf,OAAe,ikP,6BCAf,OAAe,k5C,6BCAf,OAAe,i+B,6BCAf,OAAe,21B,6BCAf,OAAe,63C,6BCAf,OAAe,m1B,6BCAf,OAAe,83C,6BCAf,OAAe,iiV,6BCAf,OAAe,id,6BCAf,OAAe,sgB,6BCAf,OAAe,k8D,6BCAf,OAAe,ymE,6BCAf,OAAe,igC,6BCAf,OAAe,8rE,6BCAf,OAAe,y+B,6BCAf,OAAe,+tP,6BCAf,OAAe,s2C,6BCAf,OAAe,66H,6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","file":"static/js/main.ecf83737.chunk.js","sourcesContent":["const LIGHT = 300;\nconst REGULAR = 400;\nconst MEDIUM = 500;\nconst SEMIBOLD = 600;\nconst BOLD = 700;\n\nexport default {\n palette: {\n primary: {\n main: '#FF4400',\n },\n secondary: {\n main: '#0AD71C',\n },\n /* Atomic Design Palette */\n cyan1: '#E6FFFB',\n cyan2: '#B5F5EC',\n cyan4: '#5CDBD3',\n cyan6: '#13C2C2',\n cyan7: '#08979C',\n cyan9: '#00474F',\n gray1: '#FFFFFF',\n gray2: '#FAFAFA',\n gray3: '#F5F5F5',\n gray4: '#E8E8E8',\n gray5: '#D9D9D9',\n gray6: '#BFBFBF',\n gray7: '#8C8C8C',\n gray8: '#595959',\n gray9: '#262626',\n gray10: '#000000',\n gray11: '#E9E9E9',\n athensGray: '#F7F7F9',\n mischka: '#E1E1E9',\n silver: '#C4C4C4',\n dustRed2: '#FFCCC7',\n dustRed4: '#FF7875',\n dustRed6: '#F5222D',\n dustRed7: '#CF1322',\n dustRed9: '#820014',\n dayBreakBlue2: '#BAE7FF',\n volcano: '#FFF2E8',\n volcano2: '#FFD8BF',\n volcano6: '#FA541C',\n volcano7: '#D4380D',\n sunriseYellow6: '#FADB14',\n polarGreen6: '#52C41A',\n polarGreen7: '#389E0D',\n blue1: '#E6F7FF',\n blue4: '#69C0FF',\n blue7: '#096DD9',\n blue9: '#003A8C',\n geekBlue1: '#F0F5FF',\n geekBlue2: '#D6E4FF',\n geekBlue3: '#ADC6FF',\n geekBlue4: '#85A5FF',\n geekBlue5: '#597EF7',\n geekBlue6: '#2F54EB',\n geekBlue7: '#1D39C4',\n geekBlue8: '#10239E',\n geekBlue9: '#061178',\n gold1: '#FFFBE6',\n gold2: '#FFF1B8',\n gold3: '#FFE58F',\n gold4: '#FFD666',\n gold5: '#FFC53D',\n gold6: '#FAAD14',\n gold7: '#D48806',\n gold9: '#874D00',\n gold10: '#613400',\n purple1: '#F9F0FF',\n purple2: '#EFDBFF',\n purple4: '#B37FEB',\n purple7: '#531DAB',\n purple9: '#22075E',\n disabledGray: '#00000061',\n /* Atomic Design Palette */\n\n darkText: '#2C2C2C', // '#4d4d4f',\n greenLight: '#44af69',\n genoa: '#178062',\n jetStream: '#B6D7CD',\n lightGray1: '#E2E2E2', // '#CCCCCC'\n lightGray2: '#E2E2E2',\n lightGray3: '#CACACA',\n lightGray4: '#D8D8D8',\n lightGray5: '#D9D9D9',\n lightGray6: '#BFBFBF',\n darkGray1: '#0000008A',\n drakGray2: '#888888',\n darkGray3: '#9D9D9D',\n darkGray7: '#8C8C8C',\n fedora: '#727172',\n darkGray9: '#262626',\n alto: '#DDDDDD',\n thunder: '#212021',\n coffee: '#717274',\n paleSlate: '#C1C0C1',\n new: '#F7F7F9',\n white: '#ffffff',\n aqua: '#2292a4',\n aqua2: '#08979C',\n blue: '#00D0E8',\n blue2: '#4a90e2',\n green: '#09AC16',\n green1: '#F6FFED',\n green2: '#D9F7BE',\n green4: '#95DE64',\n green7: '#389E0D',\n green9: '#135200',\n orange2: '#FFE7BA',\n orange3: '#FFD591',\n orange6: '#FA8C16',\n orange7: '#D46B08',\n orange9: '#873800',\n lime2: '#F4FFB8',\n brown: '#D46B08',\n azalea: '#F6C2D2',\n skyblue: '#00BBD1',\n red: '#FF6060',\n red1: '#FFF1F0',\n red2: '#FC5A5A',\n red6: '#F5222D',\n red7: '#CF1322',\n ceriseRed: '#DE245C',\n lightBlue: '#E7FCFF',\n white2: '#F9F9F9',\n white3: '#F6F6F6',\n white4: '#E5E5E5',\n yellow: '#E8C400',\n yellow2: '#D4B106',\n yellow3: '#FFE145',\n yellow4: '#FFF0A2',\n sunriseYellow: '#FFFFB8',\n office365Logo: '#E64A19',\n magenta2: '#FFD6E7',\n inherit: 'inherit',\n action: {\n hoverOpacity: 0.1,\n },\n },\n typography: {\n fontWeightLight: LIGHT,\n fontWeightRegular: REGULAR,\n fontWeightMedium: MEDIUM,\n fontWeightSemibold: SEMIBOLD,\n fontWeightBold: BOLD,\n fontSize: 14,\n fontFamily: ['\"Poppins\"', 'sans-serif'].join(','),\n adminFontFamily: ['\"Roboto\"', 'sans-serif'].join(','),\n },\n breakPoints: {\n lg: '1199.98px', // Large devices (desktops)\n md: '991.98px', // Medium devices (tablets)\n sm: '767.98px', // Small devices (landscape phones)\n xs: '575.98px', // Extra small devices (portrait phones)\n },\n animations: {\n AdminMain: {\n prop: {\n opacity: 0,\n y: 20,\n },\n duration: 0.3,\n stagger: 0.1,\n },\n },\n};\n","// Important - Dont change it unless sure of it\nconst APP_STAGE = process.env.REACT_APP_STAGE || 'localdev';\n\nconst PLATFORM = 'web';\nconst MAX_CUSTOM_ALLOWANCE = 100000;\n\nconst WEB_BASE_URL = 'joinassembly.com';\n\nconst SISENSE_CONFIG = {\n SERVER: 'https://assembly.sisense.com',\n DASHBOARD: {\n GENERAL_SUMMARY_STATS: '61f075fe86aef30035050665',\n STATS_OVERTIME_WITH_OCCURRENCES: '61f0769fca42150035f8c677',\n STATS_OVERTIME_WITHOUT_OCCURRENCES: '61f07c2786aef30035050675',\n OPEN_ENDED_DASHBOARD: '6193acd9ca42150035f8bf9b',\n GIF_DASHBOARD: '6193acc486aef3003504fec5',\n FILE_UPLOAD_DASHBOARD: '6193acb186aef3003504feaf',\n SCALE_DASHBOARD: '6193aceaca42150035f8bfa1',\n DROPDOWN_DASHBOARD: '6193acf4ca42150035f8bfa6',\n MULTI_SELECT_DASHBOARD: '6193accfca42150035f8bf96',\n MULTI_SELECT_DASHBOARD_OTHERS: '6193fe7b86aef3003504ff2d',\n PERSON_SELECTOR_SINGLE_DASHBOARD: '6193fbcaca42150035f8bff6',\n PERSON_SELECTOR_MULTI_DASHBOARD: '6193ace186aef3003504fecd',\n GIVE_POINTS_DASHBOARD: '61b2788bca42150035f8c1b7',\n TRENDS_STATS: '61945b87ca42150035f8c06d',\n FILE_UPLOAD_TRENDS: '6195a49eca42150035f8c0f2',\n GIF_TRENDS: '6195a37fca42150035f8c0e9',\n SCALE_TRENDS: '619599fc86aef3003504ffce',\n GIVE_POINTS_TRENDS: '6195a2b8ca42150035f8c0e3',\n MULTI_SELECT_TRENDS: '6195970986aef3003504ffbc',\n OPEN_ENDED_TRENDS: '61958b1486aef3003504ff97',\n PERSON_SELECTOR_SINGLE_TRENDS: '61959e17ca42150035f8c0c1',\n PERSON_SELECTOR_MULTIPLE_TRENDS: '61959f0e86aef3003504ffeb',\n SINGLE_SELECT_TRENDS: '6195927486aef3003504ffa8',\n },\n WIDGETS: {\n UNIQUE_RESPONDANTS_PER_WEEK_NO_OCCURRANCE: '61f07c2786aef30035050677',\n PERCENTAGE_BLOCK_COMPLETED_NO_OCCURRANCE: '61f07c2786aef30035050678',\n COMPLETION_RATE_BY_WEEK: '61f0769fca42150035f8c678',\n TOTAL_RESPONSES_BY_WEEK: '61f07aaeca42150035f8c683',\n PERCENTAGE_OF_BLOCKS_COMPLETED_OVERTIME: '61f07b4bca42150035f8c685',\n STARTS: '624f659d2756a200394c5815',\n TOTAL_RESPONSES: '61f075fe86aef30035050666',\n PARTICIPATION_RATE_DASHBOARD: '61f0851b86aef30035050689',\n PERSON_RESPONSES_STAT: '61f0851b86aef30035050689',\n UNIQUE_RESPONDANTS: '61e1eab586aef30035050594',\n OCCURRENCES_PARTICIPATION_RATE: '61e1eab586aef30035050595',\n PARTICIPATION_STATS: '61f07faa86aef3003505067e',\n UNIQUE_FLOWS_PARTICIPANTS: '61f09851ca42150035f8c711',\n CURRENT_PARTICIPANTS: '6193acb486aef3003504feb5',\n COMPLETION_RATE: '624f66d22756a200394c5819',\n NUMBER_OF_OCCURANCES: '6193acb486aef3003504feb9',\n ANSWER_ANYTIME_PARTICIPATION_RATE: '6193acb486aef3003504feb7',\n ANSWER_ANYTIME_RESPONSE_PER_PERSON: '6193acb486aef3003504feb8',\n BLOCKS_COMPLETED: '6193acb486aef3003504feba',\n TOTAL_PARTICIPATION: '6193acb486aef3003504febb',\n OPEN_ENDED: '6193acd9ca42150035f8bf9c',\n GIF: '6193acc486aef3003504fec6',\n FILE_UPLOAD: '6193acb186aef3003504feb0',\n SCALE: '6193aceaca42150035f8bfa2',\n DROPDOWN: '6193acf4ca42150035f8bfa7',\n MULTI_SELECT: '6193accfca42150035f8bf97',\n MULTI_SELECT_OTHERS: '6193fe7b86aef3003504ff2e',\n MULTI_SELECT_OTHERS_VALUE: '619401eeca42150035f8c014',\n PERSON_SELECTOR_SINGLE: '6193fbcaca42150035f8bff7',\n GIVE_POINTS: '61b2788bca42150035f8c1b8',\n PERSON_SELECTOR_MULTI: '6193ace186aef3003504fece',\n TRENDS_STATS: '619461db86aef3003504ff86',\n FILE_UPLOAD_TRENDS: '6195a49eca42150035f8c0f3',\n GIF_TRENDS: '6195a39786aef3003504fff8',\n SCALE_TRENDS: '61959a7fca42150035f8c0b6',\n GIVE_POINTS_TRENDS: '6195a32286aef3003504fff2',\n MULTI_SELECT_TRENDS: '61959811ca42150035f8c0af',\n OPEN_ENDED_TRENDS: '6195917c86aef3003504ff9e',\n PERSON_SELECTOR_SINGLE_TRENDS: '61959eddca42150035f8c0dc',\n PERSON_SELECTOR_MULTIPLE_TRENDS: '61959fb186aef3003504ffee',\n SINGLE_SELECT_TRENDS: '619592ddca42150035f8c092',\n },\n};\n\nconst dev = {\n API_URL: 'https://api-dev.joinassembly.com',\n STRIPE_PUBLISHABLE: 'pk_test_m8GXOCB2pjtUnvAoJxDyJ19o',\n SLACK_APP_URL: '255786340961.781607625924',\n // IP_STACK_ACCESS_TOKEN: 'fb377cf9b19ecf35b1358686fdc8a54f',\n GIPHY_KEY: 'jAE9Ya0RlClP2vSDqo8umIhz14JYKwy4',\n APP_URL: 'https://dev.joinassembly.com/',\n SOURCE: 'API',\n SPLIT_AUTH_KEY: 'ibhu998u3ndtr0num1ss8pg8jn0md822v96f',\n SENTRY_KEY: '',\n MS_TEAMS: {\n ENTITY_ID: 'joinAssembly-tab',\n NAME: 'Assembly-dev',\n },\n DATA_DOG: {\n applicationId: '6ef28a14-4941-44b5-935e-75c07f51044c',\n clientToken: 'pubb2d38a6d5d5b49b338441586d68746a9',\n service: 'assembly-dev',\n env: 'dev',\n },\n ADP_MARKETPLACE_URL: 'https://apps.adp.com/apps/307297',\n MIXPANEL_KEY: 'f8cf5a53c3894e8d32611034942c03df',\n PUSHER: {\n KEY: '65656f0ec6850a60d9d5',\n },\n GOOGLE_RECAPTCHA_SITE_KEY: '6Leyk-oeAAAAACCnCogUKlajDEH15trv7Q4thR0Z',\n};\n\nconst local = {\n API_URL: 'http://localhost:8080',\n STRIPE_PUBLISHABLE: 'pk_test_m8GXOCB2pjtUnvAoJxDyJ19o',\n SLACK_APP_URL: '255786340961.781607625924',\n IP_STACK_ACCESS_TOKEN: 'fb377cf9b19ecf35b1358686fdc8a54f',\n GIPHY_KEY: 'jAE9Ya0RlClP2vSDqo8umIhz14JYKwy4',\n APP_URL: 'http://localhost:3000/',\n SOURCE: 'API',\n SPLIT_AUTH_KEY: 'ibhu998u3ndtr0num1ss8pg8jn0md822v96f',\n SENTRY_KEY: '',\n MS_TEAMS: {\n ENTITY_ID: 'joinAssembly-tab',\n NAME: 'Assembly-dev',\n },\n DATA_DOG: {\n applicationId: '6ef28a14-4941-44b5-935e-75c07f51044c',\n clientToken: 'pubb2d38a6d5d5b49b338441586d68746a9',\n service: 'assembly-dev',\n env: 'local',\n },\n ADP_MARKETPLACE_URL: 'https://apps.adp.com/apps/307297',\n MIXPANEL_KEY: 'f8cf5a53c3894e8d32611034942c03df',\n PUSHER: {\n KEY: '65656f0ec6850a60d9d5',\n },\n GOOGLE_RECAPTCHA_SITE_KEY: '6Leyk-oeAAAAACCnCogUKlajDEH15trv7Q4thR0Z',\n};\n\nconst production = {\n API_URL: 'https://api-prod.joinassembly.com',\n STRIPE_PUBLISHABLE: 'pk_live_1Sa8uGD8FGRnKqoamJIVNIt3',\n SLACK_APP_URL: '255786340961.404101138883',\n GIPHY_KEY: 'jAE9Ya0RlClP2vSDqo8umIhz14JYKwy4',\n APP_URL: 'https://my.joinassembly.com/',\n SOURCE: 'API',\n SPLIT_AUTH_KEY: 'f92aegb39s0q7892tqdttb2i1gql3tcmoc0g',\n SENTRY_KEY: 'https://23b7fe5a15da47ed9ef6ea70f60a0ab1@sentry.io/1213549',\n MS_TEAMS: {\n ENTITY_ID: 'joinAssembly-tab',\n NAME: 'Assembly',\n },\n DATA_DOG: {\n applicationId: 'c384b0d4-ee6d-46bf-8d86-af63928add76',\n clientToken: 'pub8d62f462bd2240b44d12ac3f881c0986',\n service: 'assembly',\n env: 'prod',\n },\n ADP_MARKETPLACE_URL: 'https://apps.adp.com/apps/316521',\n MIXPANEL_KEY: '242212480a3ebd3854f67da96134fc40',\n PUSHER: {\n KEY: 'bb892a3236c82edfe227',\n },\n GOOGLE_RECAPTCHA_SITE_KEY: '6LdIm2MfAAAAAC_lxTIBPUuOJKBh5MsrXOhAfMnU',\n};\n\nconst staging = {\n API_URL: 'https://api-stg.joinassembly.com',\n STRIPE_PUBLISHABLE: 'pk_test_m8GXOCB2pjtUnvAoJxDyJ19o',\n SLACK_APP_URL: '255786340961.407704820679',\n IP_STACK_ACCESS_TOKEN: 'fb377cf9b19ecf35b1358686fdc8a54f',\n GIPHY_KEY: 'jAE9Ya0RlClP2vSDqo8umIhz14JYKwy4',\n APP_URL: 'https://stg.joinassembly.com/',\n SOURCE: 'API',\n SPLIT_AUTH_KEY: 'ibhu998u3ndtr0num1ss8pg8jn0md822v96f',\n SENTRY_KEY: '',\n MS_TEAMS: {\n ENTITY_ID: 'joinAssembly-tab',\n NAME: 'Assembly-dev',\n },\n DATA_DOG: {\n applicationId: '6ef28a14-4941-44b5-935e-75c07f51044c',\n clientToken: 'pubb2d38a6d5d5b49b338441586d68746a9',\n service: 'assembly-dev',\n env: 'staging',\n },\n ADP_MARKETPLACE_URL: 'https://apps.adp.com/apps/307297',\n MIXPANEL_KEY: 'f8cf5a53c3894e8d32611034942c03df',\n PUSHER: {\n KEY: '65656f0ec6850a60d9d5',\n },\n GOOGLE_RECAPTCHA_SITE_KEY: '6Leyk-oeAAAAACCnCogUKlajDEH15trv7Q4thR0Z',\n};\n\nconst getConfig = () => {\n if (process.env.REACT_APP_STAGE === 'production') {\n return production;\n }\n if (process.env.REACT_APP_STAGE === 'development') {\n return dev;\n }\n if (process.env.REACT_APP_STAGE === 'staging') {\n return staging;\n }\n return local;\n};\n\nconst config = getConfig();\nif (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line no-console\n console.log('Running in ', APP_STAGE);\n}\n\nconst PLAN_IDS = {\n tier1: 'free',\n tier2: 'lite',\n tier3: 'standard',\n tier4: 'premium',\n};\n\nconst { API_URL: defaultApiUrl } = config;\n\nconst API_URL = process.env.REACT_APP_API_URL || defaultApiUrl;\n\nconst API_URL_WITH_V2 = `${API_URL}/api/v2`;\nconst API_URL_WITH_V3 = `${API_URL}/api/v3`;\nconst {\n STRIPE_PUBLISHABLE,\n SLACK_APP_URL,\n // IP_STACK_ACCESS_TOKEN,\n GIPHY_KEY,\n APP_URL,\n SOURCE,\n SPLIT_AUTH_KEY,\n SENTRY_KEY,\n MS_TEAMS,\n ADP_MARKETPLACE_URL,\n MIXPANEL_KEY,\n DATA_DOG,\n PUSHER,\n GOOGLE_RECAPTCHA_SITE_KEY,\n} = config;\n\nexport const GOOGLE_RECAPTCHA_ENDPOINT = `https://www.google.com/recaptcha/enterprise.js`;\n\nconst GET_PLATFORM = (isFromMSTeams: boolean) =>\n isFromMSTeams ? 'MS Teams' : PLATFORM;\n\nconst LANDER_URL = `https://${WEB_BASE_URL}`;\nconst HELP_URL = `https://${WEB_BASE_URL}/faq`;\nconst TERMS_URL = `https://${WEB_BASE_URL}/terms-of-service`;\nconst PRIVACY_URL = `https://${WEB_BASE_URL}/privacy-policy`;\nconst BLOG_URL = `https://${WEB_BASE_URL}/blog`;\n\nconst IOS_URL = 'com.joinassembly.assembly:/';\n\nexport {\n API_URL,\n API_URL_WITH_V2,\n API_URL_WITH_V3,\n STRIPE_PUBLISHABLE,\n SLACK_APP_URL,\n // IP_STACK_ACCESS_TOKEN,\n MAX_CUSTOM_ALLOWANCE,\n GIPHY_KEY,\n APP_URL,\n LANDER_URL,\n HELP_URL,\n TERMS_URL,\n PRIVACY_URL,\n BLOG_URL,\n GET_PLATFORM,\n SOURCE,\n SPLIT_AUTH_KEY,\n SENTRY_KEY,\n MIXPANEL_KEY,\n MS_TEAMS,\n ADP_MARKETPLACE_URL,\n PLAN_IDS,\n IOS_URL,\n DATA_DOG,\n PUSHER,\n SISENSE_CONFIG,\n GOOGLE_RECAPTCHA_SITE_KEY,\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport default {\n SIGNUP_SUCCESS: '/signup-success',\n EMAIL_SIGNIN: '/slack/onboard/email-signin',\n EMAIL_SIGNUP: '/slack/onboard/email-signup',\n\n SIGN_IN: '/signin',\n SIGN_OUT: '/signout',\n FORGOT_PASSWORD: '/forgotPassword',\n FORGOT_PASSWORD_SUCCESS: '/forgotPassword/success',\n FORGOT_PASSWORD_VERIFY: '/forgotPassword/:verifyToken',\n RESET_PASSWORD: '/resetPassword',\n RESET_PASSWORD_SUCCESS: '/resetPassword/success',\n\n ENTER_EMAIL: '/create-account',\n ENTER_CODE: '/verify',\n ENTER_COMPANY_NAME: '/onboard/company',\n\n EMPLOYEE_ENTER_EMAIL: '/join',\n EMPLOYEE_SET_PROFILE: '/signup/set-profile',\n EMPLOYEE_SET_PROFILE_FROM_INVITE: '/signup/inviteToken',\n EMPLOYEE_SET_DETAILS: '/user/set-details',\n\n EMPLOYEE_VERIFY_MAGIC_LINK: '/verify/magicLink',\n\n SLACK_ONBOARD: '/slack/onboard',\n SLACK_SIGN_IN: '/slack/onboard/signin',\n SLACK_SIGN_IN_V2: '/slack/onboard/signin/v2',\n SLACK_ADD_TO: '/slack/onboard/add',\n SLACK_USER_AUTH: '/slack/onboard/userauth',\n SLACK_SELECT_CHANNELS: '/slack/onboard/channels',\n SLACK_SELECT_DEFAULT_CHANNEL: '/slack/onboard/default-channel',\n SLACK_SELECT_DEFAULT_CURRENCY: '/slack/onboard/currency',\n SLACK_SELECT_USERS_FOR_ACCESS: '/slack/onboard/select-users',\n SLACK_HANDLE_MEMBERS: '/slack/onboard/handle-members',\n SLACK_SPECIFIC_MEMBERS: '/slack/onboard/members',\n SLACK_AUTO_MANAGE_MEMBERS: '/slack/onboard/manage-members',\n SLACK_ASSEMBLY_ANNOUNCEMENT: '/slack/onboard/announcement',\n SLACK_SUCCESS: '/slack/onboard/success',\n\n ADP_SIGNIN: '/adp/onboard/authorize',\n IM_AUTHORIZE: '/:sso/onboard/authorize',\n IM_AUTHORIZE_SSO: (sso) => `${sso}/onboard/authorize`,\n\n BOT_AUTHORIZE: '/:botType/bot/authorize',\n BOT_AUTHORIZE_FN: (sso) => `${sso}/bot/authorize`,\n\n SSO_SIGNIN_AUTHORIZE: '/:sso/signin/authorize',\n SSO_SIGNIN_AUTHORIZE_FN: (sso) => `${sso}/signin/authorize`,\n SSO_AUTHORIZE_FN: (sso, ssoType) => `${sso}/${ssoType}/authorize`,\n\n SSO_AUTHORIZE_MODAL_FN: (sso, ssoType) => `${sso}/${ssoType}/authorizeModal`,\n SSO_SIGNIN_AUTHORIZE_MODAL: '/:sso/signin/authorizeModal',\n SSO_SIGNUP_AUTHORIZE_MODAL: '/:sso/signup/authorizeModal',\n SAML_AUTHORIZE_MODAL: '/saml/authorizeModal',\n\n SSO_SIGNUP_AUTHORIZE: '/:sso/signup/authorize',\n SSO_SIGNUP_AUTHORIZE_FN: (sso) => `${sso}/signup/authorize`,\n\n SSO_ERRORS: '/:sso/:ssoType(signup|signin)/error/:errorCode',\n SSO_ERRORS_FN: (sso, ssoType, errorCode) =>\n `${sso}/${ssoType}/error/${errorCode}`,\n\n HOME: '/home',\n MSTEAM_CONFIG: '/msteams/config',\n\n SUPER_ADMIN_ANALYTICS: '/superadmin/analytics',\n SUPER_ADMIN_DASHBOARD_V2: '/superadmin/accounts/dashboard/v2',\n\n // ADMIN\n\n ADMIN: '/admin',\n\n // WORKSPACE\n ADMIN_WORKSPACE_GENERAL: '/settings',\n ADMIN_WORKSPACE_ALLOWANCES: '/settings/allowances',\n ADMIN_WORKSPACE_ALLOWANCES_MANAGE: '/settings/allowances/manage',\n ADMIN_WORKSPACE_INTEGRATIONS_SLACK: '/settings/integrations/slack',\n ADMIN_WORKSPACE_INTEGRATIONS_TEAMS: '/settings/integrations/teams',\n ADMIN_WORKSPACE_INTEGRATIONS: '/settings/integrations',\n ADMIN_WORKSPACE_INSIGHTS: '/settings/insights',\n\n // RECOGNITION\n ADMIN_RECOGNITION_SETTINGS: '/recognition/settings',\n ADMIN_RECOGNITION_ACTIVITY: '/recognition/activity',\n ADMIN_RECOGNITION_PARTICIPATION: '/recognition/participation',\n\n // FLOWS\n ADMIN_FLOWS_PERMISSIONS: '/flows/permissions',\n\n // USERS\n ADMIN_USER_MANAGE: '/users/manage',\n ADMIN_USER_MANAGE_IDENTITY: '/users/manage/identity',\n ADMIN_USER_INVITE: '/users/invite',\n ADMIN_USER_EARNINGS: '/users/earnings',\n\n // CELEBRATION BOTS\n ADMIN_CELEBRATIONS_ANNIVERSARIES: '/celebrations/anniversaries',\n ADMIN_CELEBRATIONS_BIRTHDAYS: '/celebrations/birthdays',\n\n // REWARDS\n ADMIN_REWARDS_GIFT_CARDS: '/rewards/gifts',\n ADMIN_REWARDS_CULTURE: '/rewards/culture',\n ADMIN_REWARDS_CHARITY: '/rewards/charities',\n ADMIN_REWARDS_REPORT: '/rewards/report',\n ADMIN_REWARDS_SWAGS: '/rewards/swags',\n\n // BILLING\n ADMIN_BILLING_ACCOUNT: '/billing/account',\n ADMIN_BILLING_HISTORY: '/billing/history',\n ADMIN_BILLING_HISTORY_INVOICE: '/billing/invoice',\n ADMIN_BILLING_METHOD: '/billing/method',\n\n // SAML\n ADMIN_SAML_AUTHENTICATION: '/security/saml',\n\n // HELP\n HELP_CENTER: '/help-center',\n\n // Client APP\n CLIENT_APP: '/client/app',\n};\n","const API_VERSION_V2 = '1.5.0';\n\nconst getCacheControl = () => {\n return {\n Pragma: 'no-cache',\n };\n};\n\nexport const AuthHeaders = () => {\n //eslint-disable-line\n return {\n headers: {\n 'Content-Type': 'application/json',\n XClient:\n window.location.hostname +\n (window.location.port ? `:${window.location.port}` : ''),\n ...getCacheControl(),\n },\n };\n};\n\nexport const HeadersWithoutAuth = () => {\n //eslint-disable-line\n return {\n headers: {\n 'Content-Type': 'application/json',\n XClient:\n window.location.hostname +\n (window.location.port ? `:${window.location.port}` : ''),\n ...getCacheControl(),\n },\n };\n};\n\nexport const HeadersWithoutAuthV2 = () => {\n //eslint-disable-line\n return {\n headers: {\n 'Content-Type': 'application/json',\n XClient:\n window.location.hostname +\n (window.location.port ? `:${window.location.port}` : ''),\n clientAPIVersion: API_VERSION_V2,\n ...getCacheControl(),\n },\n };\n};\n\nexport const AuthHeadersV2 = () => {\n //eslint-disable-line\n return {\n headers: {\n 'Content-Type': 'application/json',\n XClient:\n window.location.hostname +\n (window.location.port ? `:${window.location.port}` : ''),\n clientAPIVersion: API_VERSION_V2,\n ...getCacheControl(),\n },\n };\n};\n\n// export const AuthMultipartHeaders = () => { //eslint-disable-line\n// return {\n// headers: {\n// Authorization: `JWT ${localStorage.getItem('token')}`,\n// 'Content-Type': 'multipart/form-data',\n// },\n// };\n// };\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { checkIfProduction } from './admin';\n\nconst PRINT_ON = !checkIfProduction();\n\nexport default (text, shouldShow = true) => {\n if (PRINT_ON && shouldShow) {\n console.log(text);\n }\n};\n","import React, { useMemo } from 'react';\nimport styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\n\ninterface BodyVariant {\n fontSize: string;\n lineHeight: string;\n fontWeight: number;\n fontStyle: string;\n}\n\nexport type TextAlignType =\n | 'left'\n | 'right'\n | 'center'\n | 'justify'\n | 'initial'\n | 'inherit';\ninterface BodyTextType extends BodyVariant {\n fontFamily: string;\n color: string;\n margin?: string;\n padding?: string;\n textAlign?: TextAlignType;\n}\n\nexport interface BodyProps {\n children: React.ReactNode;\n className?: string;\n variant?: string;\n fontFamily?: string;\n color?: string;\n inline?: boolean;\n disabled?: boolean;\n style?: React.CSSProperties;\n 'data-testid'?: string;\n margin?: string;\n padding?: string;\n textAlign?: TextAlignType;\n}\n\nconst variantMap: { [Key: string]: BodyVariant } = {\n body1: {\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n body1Bold: {\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: ThemeV2.typography.fontWeightBold,\n fontStyle: 'normal',\n },\n body1Medium: {\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n },\n body1Italic: {\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'italic',\n },\n body2: {\n fontSize: '14px',\n lineHeight: '22px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n body2Bold: {\n fontSize: '14px',\n lineHeight: '22px',\n fontWeight: ThemeV2.typography.fontWeightBold,\n fontStyle: 'normal',\n },\n body2Medium: {\n fontSize: '14px',\n lineHeight: '22px',\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n },\n body3: {\n fontSize: '12px',\n lineHeight: '20px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n body3Bold: {\n fontSize: '12px',\n lineHeight: '20px',\n fontWeight: ThemeV2.typography.fontWeightBold,\n fontStyle: 'normal',\n },\n body3Medium: {\n fontSize: '12px',\n lineHeight: '20px',\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n },\n body4: {\n fontSize: '10px',\n lineHeight: '20px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n body4Bold: {\n fontSize: '10px',\n lineHeight: '20px',\n fontWeight: ThemeV2.typography.fontWeightBold,\n fontStyle: 'normal',\n },\n body4Medium: {\n fontSize: '10px',\n lineHeight: '20px',\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n },\n subHead1: {\n fontSize: '20px',\n lineHeight: '28px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n subHead2: {\n fontSize: '20px',\n lineHeight: '28px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n subHead2Bold: {\n fontSize: '20px',\n lineHeight: '28px',\n fontWeight: ThemeV2.typography.fontWeightBold,\n fontStyle: 'normal',\n },\n subHead2Medium: {\n fontSize: '20px',\n lineHeight: '28px',\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n },\n subHead3: {\n fontSize: '24px',\n lineHeight: '28px',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n};\n\nconst BodyText = styled.div`\n font-family: ${(props: BodyTextType) => props.fontFamily};\n font-size: ${(props: BodyTextType) => props.fontSize};\n font-weight: ${(props: BodyTextType) => props.fontWeight};\n line-height: ${(props: BodyTextType) => props.lineHeight};\n text-align: ${(props: BodyTextType) => props.textAlign};\n color: ${(props: BodyTextType) => props.color};\n ${(props) => props.padding && `padding: ${props.padding}`};\n ${(props) => props.margin && `margin: ${props.margin}`};\n\n & > code {\n padding: ${(props: BodyTextType) =>\n props.fontWeight === ThemeV2.typography.fontWeightMedium\n ? '4px 8px'\n : '2px 4px'};\n color: ${ThemeV2.palette.volcano6};\n background: ${ThemeV2.palette.gray2};\n border: 0.5px solid ${ThemeV2.palette.gray6};\n border-radius: 4px;\n }\n`;\n\nconst Body = ({\n children,\n className: parentClassName,\n variant = 'body1',\n fontFamily = ThemeV2.typography.adminFontFamily,\n color = 'darkGray9',\n inline = false,\n disabled = false,\n style = undefined,\n 'data-testid': dataTestId,\n padding,\n margin,\n textAlign,\n}: BodyProps) => {\n const variantFromMap = variantMap[variant];\n const { fontSize, fontWeight, fontStyle, lineHeight } = variantFromMap;\n const fontColor = disabled ? 'gray6' : color;\n const palette = ThemeV2.palette as unknown as {\n [Key: string]: string;\n };\n const paletteColor = palette[fontColor];\n\n const bodyStyle = useMemo(\n () => ({\n fontFamily,\n fontSize,\n fontWeight,\n fontStyle,\n lineHeight,\n color: paletteColor,\n textAlign,\n }),\n [\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n lineHeight,\n paletteColor,\n textAlign,\n ],\n );\n\n return (\n \n {children}\n \n );\n};\n\nconst MemoizedBody = React.memo(Body);\nMemoizedBody.displayName = 'Body';\n\nexport default MemoizedBody;\n","import theme from '../../../componentsV2/theme';\n\nexport const ButtonContent = {\n SIGN_IN: 'Sign in with',\n SIGN_UP: 'Sign up with',\n COMING_SOON: 'Coming Soon',\n};\n\nexport enum SSOOptions {\n SLACK = 'slack',\n OFFICE365 = 'office365',\n ADP = 'adp',\n GOOGLE = 'gSuite',\n LIFION = 'lifion',\n}\n\nexport enum SSOTypes {\n SIGN_UP = 'signup',\n SIGN_IN = 'signin',\n}\n\nexport const SSOContent = {\n [SSOOptions.GOOGLE]: {\n ssoParam: SSOOptions.GOOGLE,\n logo: 'google-light',\n displayName: 'Google',\n },\n [SSOOptions.OFFICE365]: {\n ssoParam: SSOOptions.OFFICE365,\n logo: 'office-365-mini-logo',\n displayName: 'Office 365',\n iconColor: theme.palette.office365Logo,\n },\n [SSOOptions.ADP]: {\n ssoParam: SSOOptions.ADP,\n logo: 'adp-logo',\n displayName: 'ADP',\n },\n [SSOOptions.SLACK]: {\n ssoParam: SSOOptions.SLACK,\n logo: 'slack-mini-logo',\n displayName: 'Slack',\n },\n [SSOOptions.LIFION]: {\n ssoParam: SSOOptions.LIFION,\n logo: '',\n displayName: 'Lifion',\n },\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport classNames from 'classnames';\nimport themeV2 from '../../theme';\n\nconst styles = {\n root: {\n fontFamily: themeV2.typography.fontFamily,\n color: themeV2.palette.darkText,\n },\n adminRoot: {\n fontFamily: themeV2.typography.adminFontFamily,\n color: themeV2.palette.darkText,\n },\n};\n\nfunction getFontWeight(weight) {\n switch (weight) {\n case 'bold':\n return themeV2.typography.fontWeightBold;\n case 'medium':\n return themeV2.typography.fontWeightMedium;\n case 'semiBold':\n return themeV2.typography.fontWeightSemibold;\n default:\n return themeV2.typography.fontWeightRegular;\n }\n}\n\nfunction CustomTypography(props) {\n const { classes, children, weight, style, className, ...rest } = props;\n // const bull = ;\n return (\n \n {children}\n \n );\n}\n\nfunction AdminTypographyComponent(props) {\n const { classes, children, weight, style, className, ...rest } = props;\n // const bull = ;\n return (\n \n {children}\n \n );\n}\nexport const AdminTypography = withStyles(styles)(AdminTypographyComponent);\n\nCustomTypography.propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n weight: PropTypes.string,\n style: PropTypes.object,\n};\n\nCustomTypography.defaultProps = {\n weight: 'Regular',\n style: {},\n};\n\nexport default withStyles(styles)(CustomTypography);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { flashMessage, flashErrorMessage } from 'redux-flash';\n\nconst showSuccessMessage = (message) => (dispatch) => {\n dispatch(flashMessage(message, { props: { type: 'success' } }));\n};\n\nconst showErrorMessage = (message) => (dispatch) => {\n dispatch(flashErrorMessage(message));\n};\n\nconst showInfoMessage = (message) => (dispatch) => {\n dispatch(flashMessage(message, { props: { type: 'info' } }));\n};\n\nexport { showSuccessMessage, showErrorMessage, showInfoMessage };\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport interface SVGIconProps {\n icon: string;\n size?: string;\n color?: string;\n flip?: boolean;\n rotate?: number;\n stroke?: string;\n hoverColor?: string;\n className?: string;\n}\n\nconst getTransform = ({ rotate, flip }: Partial) =>\n `rotate(${rotate}deg)${flip ? ' scaleX(-1) scaleY(-1)' : ''}`;\n\nconst StyledIcon = styled.span>`\n display: inline-flex;\n color: ${(props) => props.color};\n // sizes relative to set font-size\n vertical-align: top;\n min-width: ${(props) => props.size};\n height: ${(props) => props.size};\n text-align: center;\n transform: ${(props) => getTransform(props)};\n // transition: transform 0.1s ease-out;\n & > svg {\n align-self: center;\n height: ${(props) => props.size};\n min-width: ${(props) => props.size};\n display: block;\n fill: ${(props) => props.color};\n & > path:last-of-type {\n fill: ${(props) => props.color};\n stroke: ${(props) => props.stroke};\n }\n & > circle {\n fill: ${(props) => props.color};\n }\n }\n &:hover {\n & > svg {\n & > path:last-of-type {\n fill: ${(props) => props.hoverColor};\n }\n }\n }\n`;\n\n// How to use SVGIcon :\n// 1. Export svg in SVG format from Figma and add it inside icons folder of this Component\n// 2. Replace the path's fill with 'currentColor' value\n// 3. Pass file's name as 'icon' prop to this Component to render the SVG\n// 4. Its better to have viewBox=\"0 0 24 24\" and remove height and width of the svg\nconst SVGIcon = ({ icon, className, ...rest }: SVGIconProps) => {\n let svg;\n try {\n // eslint-disable-next-line global-require, import/no-dynamic-require,@typescript-eslint/no-var-requires\n svg = require(`!raw-loader!./icons/${icon}.svg`).default;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Icon not found:', `${icon}.svg`, e);\n svg = 'x';\n }\n return (\n \n );\n};\n\nSVGIcon.defaultProps = {\n flip: false,\n rotate: 0,\n size: '24px',\n color: '',\n stroke: '',\n hoverColor: undefined,\n className: '',\n};\n\nexport default SVGIcon;\n","import { Method } from 'axios';\nimport { API_URL_WITH_V2, API_URL_WITH_V3 } from '../config';\nimport { PAGINATED_INTEGRATION_DATA_ITEMS_LIMIT } from './im';\n\nexport const TEST = 'test';\nexport const TEST_WITH_SUB = 'testWithSub';\n\nexport const GET_NOTIFICATIONS = 'GET_NOTIFICATIONS';\nexport const GET_ADMIN_INTEGRATION_STATUS = 'GET_ADMIN_INTEGRATION_STATUS';\nexport const GET_INTEGRATION_STATUS = 'GET_INTEGRATION_STATUS';\nexport const GET_BOT_OAUTH_CONFIG = 'GET_BOT_OAUTH_CONFIG';\nexport const AUTHORIZE_BOT = 'AUTHORIZE_BOT';\nexport const SLACK_BOT_INTEGRATION_DATA = 'SLACK_BOT_INTEGRATION_DATA';\nexport const MSTEAMS_BOT_INTEGRATION_DATA = 'MSTEAMS_BOT_INTEGRATION_DATA';\nexport const SLACK_SET_ACTIVE_CHANNEL = 'SLACK_SET_ACTIVE_CHANNEL';\nexport const SLACK_CREATE_ACTIVE_CHANNEL = 'SLACK_CREATE_ACTIVE_CHANNEL';\nexport const MSTEAMS_SET_ACTIVE_CHANNEL = 'MSTEAMS_SET_ACTIVE_CHANNEL';\nexport const MSTEAMS_CREATE_ACTIVE_CHANNEL = 'MSTEAMS_CREATE_ACTIVE_CHANNEL';\nexport const GET_CUSTOM_EMOJI = 'GET_CUSTOM_EMOJI';\nexport const SET_CUSTOM_CURRENCY = 'SET_CUSTOM_CURRENCY';\nexport const SKIP_CUSTOM_CURRENCY = 'SKIP_CUSTOM_CURRENCY';\nexport const SEND_WELCOME_MESSAGE = 'SEND_WELCOME_MESSAGE';\nexport const GET_IDENTITY_MANAGER_DATA = 'GET_IDENTITY_MANAGER_DATA';\n\nexport const GET_SSO_SIGNIN_CONFIG = 'GET_SSO_SIGNIN_CONFIG';\nexport const GET_SSO_SIGNUP_CONFIG = 'GET_SSO_SIGNUP_CONFIG';\nexport const GET_SSO_OAUTH_CONFIG = 'GET_SSO_OAUTH_CONFIG';\nexport const SSO_SIGNIN = 'SSO_SIGNIN';\nexport const SSO_SIGNUP = 'SSO_SIGNUP';\nexport const GET_JOB_STATUS = 'GET_JOB_STATUS';\nexport const GET_MULTIPLE_JOBS_STATUS = 'GET_MULTIPLE_JOBS_STATUS';\nexport const ANALYTICS_PEOPLE_SUMMARY = 'ANALYTICS_PEOPLE_SUMMARY';\nexport const ANALYTICS_PROFILE_INFORMATION = 'ANALYTICS_PROFILE_INFORMATION';\nexport const ANALYTICS_RECOGNITION_SUMMARY = 'ANALYTICS_RECOGNITION_SUMMARY';\nexport const ANALYTICS_PEOPLE_GRAPH_DATA = 'ANALYTICS_PEOPLE_GRAPH_DATA';\nexport const ANALYTICS_RECOGNITION_GRAPH_DATA =\n 'ANALYTICS_RECOGNITION_GRAPH_DATA';\nexport const ANALYTICS_CORE_VALUES_GRAPH_DATA =\n 'ANALYTICS_CORE_VALUES_GRAPH_DATA';\nexport const ANALYTICS_BADGES_GRAPH_DATA = 'ANALYTICS_BADGES_GRAPH_DATA';\nexport const ANALYTICS_OVERALL_ENGAGEMENT = 'ANALYTICS_OVERALL_ENGAGEMENT';\n\nexport const SEARCH_MEMBERS = 'SEARCH_MEMBERS';\nexport const SEARCH_POSTS = 'SEARCH_POSTS';\n\nexport const GET_PREFERRED_SSO = 'GET_PREFERRED_SSO';\nexport const GET_INTEGRATION_DATA = 'GET_INTEGRATION_DATA';\nexport const GET_PAGINATED_INTEGRATION_DATA = 'GET_PAGINATED_INTEGRATION_DATA';\nexport const GET_PAGINATED_INTEGRATION_DATA_MAIN =\n 'GET_PAGINATED_INTEGRATION_DATA_MAIN';\nexport const GET_IM_ENTITY_COUNT = 'GET_IM_ENTITY_COUNT';\nexport const GET_ASSEMBLY_UNIQUE_SHORT_CODE = 'GET_ASSEMBLY_UNIQUE_SHORT_CODE';\nexport const V3_GET_FEED = 'V3_GET_FEED';\nexport const GET_MEMBER_RECOGNITION_COUNT = 'GET_MEMBER_RECOGNITION_COUNT';\nexport const GET_SINGLE_POST = 'GET_SINGLE_POST';\nexport const CREATE_POST = 'CREATE_POST';\nexport const CREATE_POST_COMMENT = 'CREATE_POST_COMMENT';\nexport const CREATE_FLOW_POST_COMMENT = 'CREATE_FLOW_POST_COMMENT';\nexport const GET_POST_COMMENTS = 'GET_POST_COMMENTS';\nexport const GET_FLOW_POST_COMMENTS = 'GET_FLOW_POST_COMMENTS';\nexport const GET_PROFILE_INFO = 'GET_PROFILE_INFO';\nexport const USER_VERIFY_TOKEN = 'USER_VERIFY_TOKEN';\nexport const UPDATE_PROFILE_INFO = 'UPDATE_PROFILE_INFO';\nexport const UPDATE_FLOW_PERMISSIONS_AND_GIF_SETTINGS =\n 'UPDATE_FLOW_PERMISSIONS_AND_GIF_SETTINGS';\nexport const UPDATE_PROFILE_PICTURE = 'UPDATE_PROFILE_PICTURE';\nexport const GET_CURRENT_PLAN = 'GET_CURRENT_PLAN';\nexport const GET_REDEEM_INFO = 'GET_REDEEM_INFO';\nexport const V3_SEARCH_FEED = 'V3_SEARCH_FEED';\nexport const MARK_NOTIFICATION_AS_READ = 'MARK_NOTIFICATION_AS_READ';\nexport const QUICK_SETUP_GUIDE = 'QUICK_SETUP_GUIDE';\n\n// Onboard\nexport const VERIFY_EMAIL_ONBOARDING = 'VERIFY_EMAIL_ONBOARDING';\n\n// Invites\nexport const INVITE_USERS_CREATE = 'INVITE_USERS_CREATE';\n\n// Leaderboard\nexport const GET_MEMBER_CELEBRATED_RANKING = 'GET_MEMBER_CELEBRATED_RANKING';\nexport const GET_MEMBER_CELEBRATOR_RANKING = 'GET_MEMBER_CELEBRATOR_RANKING';\nexport const GET_MEMBER_COMMENTER_RANKING = 'GET_MEMBER_COMMENTER_RANKING';\nexport const GET_TOP_CELEBRATED_LEADERBOARD = 'GET_TOP_CELEBRATED_LEADERBOARD';\nexport const GET_TOP_CELEBRATORS_LEADERBOARD =\n 'GET_TOP_CELEBRATORS_LEADERBOARD';\nexport const GET_TOP_COMMENTERS_LEADERBOARD = 'GET_TOP_COMMENTERS_LEADERBOARD';\nexport const GET_MEMBERS = 'GET_MEMBERS';\n\nexport const GET_MEMBERS_DETAILS = 'GET_MEMBERS_DETAILS';\nexport const ADMIN_DELETE_MEDIA = 'ADMIN_DELETE_MEDIA';\nexport const ADMIN_DELETE_POST = 'ADMIN_DELETE_POST';\nexport const ADMIN_DELETE_COMMENT = 'ADMIN_DELETE_COMMENT';\nexport const GET_PAGINATED_MEMBERS = 'GET_PAGINATED_MEMBERS';\n\n// Rewards\nexport const GET_CUSTOM_REWARD = 'GET_CUSTOM_REWARD';\nexport const GET_GIFT_CARDS = 'GET_GIFT_CARDS';\nexport const GET_DONATIONS = 'GET_DONATIONS';\nexport const GET_CHEAPEST_REWARD = 'GET_CHEAPEST_REWARD';\nexport const GET_MY_REWARDS = 'GET_MY_REWARDS';\nexport const GET_MY_REWARDS_HISTORY = 'GET_MY_REWARDS_HISTORY';\nexport const RESEND_EMAIL_FOR_MY_REWARDS = 'RESEND_EMAIL_FOR_MY_REWARDS';\nexport const GET_EXCHANGE_RATES = 'GET_EXCHANGE_RATES';\nexport const UPDATE_POST_REACTION = 'UPDATE_POST_REACTION';\nexport const UPDATE_COMMENT_REACTION = 'UPDATE_COMMENT_REACTION';\nexport const GET_IP = 'GET_IP';\n\nexport const GET_USER_INFO = 'GET_USER_INFO';\nexport const UPDATE_USER_SETTINGS = 'UPDATE_USER_SETTINGS';\n\nexport const CULTURE_REWARD_CASHOUT = 'CULTURE_REWARD_CASHOUT';\nexport const REWARD_CASHOUT = 'REWARD_CASHOUT';\n\n// REWARDS SWAGS\nexport const GET_AXOMO_INFO = 'GET_AXOMO_INFO';\nexport const ESTABLISH_AXOMO_CONNECTION = 'ESTABLISH_AXOMO_CONNECTION';\nexport const BREAK_AXOMO_CONNECTION = 'BREAK_AXOMO_CONNECTION';\nexport const FETCH_INVENTORY_SWAGS = 'FETCH_INVENTORY_SWAGS';\nexport const TOGGLE_REWARD_CATEGORY = 'TOGGLE_REWARD_CATEGORY';\nexport const TOGGLE_REWARD_ITEMS = 'TOGGLE_REWARD_ITEMS';\nexport const TOGGLE_REWARDS_VISIBILITY = 'TOGGLE_REWARDS_VISIBILITY';\nexport const EDIT_REWARD_ITEMS = 'EDIT_REWARD_ITEMS';\nexport const DELETE_REWARD_ITEMS = 'DELETE_REWARD_ITEMS';\nexport const FETCH_SINGLE_SWAG_ITEM_DETAILS = 'FETCH_SINGLE_SWAG_ITEM_DETAILS';\nexport const PLACE_REWARD_ITEM_ORDER = 'PLACE_REWARD_ITEM_ORDER';\nexport const AXOMO_REWARD_CATALOGUE = 'AXOMO_REWARD_CATALOGUE';\nexport const AXOMO_REWARD_CATEGORY = 'AXOMO_REWARD_CATEGORY';\nexport const GET_AXOMO_REWARD_ITEM = 'GET_AXOMO_REWARD_ITEM';\nexport const AXOMO_PLACE_ORDER = 'AXOMO_PLACE_ORDER';\nexport const UPDATE_REWARD_ITEM = 'UPDATE_REWARD_ITEM';\nexport const UPDATE_SHIPPING_COST = 'UPDATE_SHIPPING_COST';\nexport const GET_GENERAL_REWARDS_INFO = 'GET_GENERAL_REWARDS_INFO';\n\n// SAML\nexport const GET_SAML_DETAILS = 'GET_SAML_DETAILS';\nexport const UPDATE_SAML_DETAILS = 'UPDATE_SAML_DETAILS';\nexport const ENABLE_SAML_DETAILS = 'ENABLE_SAML_DETAILS';\nexport const DISABLE_SAML_DETAILS = 'DISABLE_SAML_DETAILS';\nexport const UPDATE_SAML_QUICK_SETTINGS = 'UPDATE_SAML_QUICK_SETTINGS';\n// Admin Rewards\nexport const ADMIN_CUSTOM_REWARD = 'ADMIN_CUSTOM_REWARD';\nexport const ADMIN_CUSTOM_REWARD_EDIT = 'ADMIN_CUSTOM_REWARD_EDIT';\n\n// SAML AUTH\nexport const AUTHENTICATE_SAML = 'AUTHENTICATE_SAML';\nexport const GET_SAML_AUTH_CONFIG = 'GET_SAML_AUTH_CONFIG';\n\n// GOOGLE ONE TAP\nexport const GOOGLE_ONE_TAP_AUTH = 'GOOGLE_ONE_TAP_AUTH';\n\n// HOME PAGE FEEDS\nexport const GET_FLOW_FEED = 'GET_FLOW_FEED';\nexport const GET_MAIN_FEED = 'GET_MAIN_FEED';\nexport const GET_PROFILE_FEED = 'GET_PROFILE_FEED';\nexport const DELETE_FLOW_RESPONSE = 'DELETE_FLOW_RESPONSE';\n\n// FLOWS\nexport const EDIT_FLOW = 'EDIT_FLOW';\nexport const FLOWS_ONBOARDING_JOB = 'FLOWS_ONBOARDING_JOB';\nexport const FLOWS_ACCOUNT_SETUP = 'FLOWS_ACCOUNT_SETUP';\nexport const WORKATO_QUICKSETUP = 'WORKATO_QUICKSETUP';\nexport const CREATE_FLOW = 'CREATE_FLOW';\nexport const GET_SHORTCUTS = 'GET_SHORTCUTS';\nexport const GET_TODO_FLOWS = 'GET_TODO_FLOWS';\nexport const GET_ACTIVE_FLOWS = 'GET_ACTIVE_FLOWS';\nexport const GET_FLOWS_ACTIVITY = 'GET_FLOWS_ACTIVITY';\nexport const GET_ARCHIVED_FLOWS = 'GET_ARCHIVED_FLOWS';\nexport const GET_PUBLISHED_FLOWS = 'GET_PUBLISHED_FLOWS';\nexport const UPDATE_FLOWS_ACCESS_POLICY = 'UPDATE_FLOWS_ACCESS_POLICY';\n\nexport const GET_FLOWS_INSTANCE = 'GET_FLOWS_INSTANCE';\nexport const GET_FLOW_BLOCK_PARTICIPANTS = 'GET_FLOW_BLOCK_PARTICIPANTS';\nexport const GET_EXTERNAL_FLOW_BLOCK_PARTICIPANTS =\n 'GET_EXTERNAL_FLOW_BLOCK_PARTICIPANTS';\nexport const SUBMIT_FLOWS_INSTANCE = 'SUBMIT_FLOWS_INSTANCE';\nexport const SUBMIT_EXTERNAL_FLOWS_INSTANCE = 'SUBMIT_EXTERNAL_FLOWS_INSTANCE';\n\nexport const GET_FLOW_DETAILS = 'GET_FLOW_DETAILS';\nexport const GET_FLOW_POST_DOWNLOAD_URL = 'FLOW_POST_DOWNLOAD_URL';\nexport const UPDATE_FLOW_POST_REACTION = 'UPDATE_FLOW_POST_REACTION';\nexport const GET_FILE_UPLOAD_SIGNED_URL = 'GET_FILE_UPLOAD_SIGNED_URL';\nexport const GET_EXTERNAL_FILE_UPLOAD_SIGNED_URL =\n 'GET_EXTERNAL_FILE_UPLOAD_SIGNED_URL';\nexport const GET_PROFILE_PICTURE_UPLOAD_SIGNED_URL =\n 'GET_PROFILE_PICTURE_UPLOAD_SIGNED_URL';\nexport const GET_LOGO_UPLOAD_SIGNED_URL = 'GET_LOGO_UPLOAD_SIGNED_URL';\nexport const GET_FLOW_VIEWERS = 'GET_FLOW_VIEWERS';\nexport const GET_FLOW_RESPONSE = 'GET_FLOW_RESPONSE';\nexport const GET_MEMBER_NOTIFICATION_PREFERENCES =\n 'GET_MEMBER_NOTIFICATION_PREFERENCES';\nexport const UPDATE_MEMBER_NOTIFICATION_PREFERENCES =\n 'SET_MEMBER_NOTIFICATION_PREFERENCES';\nexport const DELETE_ATTACHMENT_FILE = 'DELETE_ATTACHMENT_FILE';\nexport const GENERATE_FLOW_DATA = 'GENERATE_FLOW_DATA';\n\n// Flow templates\nexport const GET_FLOW_TEMPLATE = 'GET_FLOWS_TEMPLATE';\nexport const GET_ALL_FLOWS_TEMPLATES = 'GET_ALL_FLOWS_TEMPLATES';\nexport const GET_FLOWS_TEMPLATE_CATEGORIES = 'GET_FLOWS_TEMPLATE_CATEGORIES';\n\nexport const REQUEST_TEMPLATE = 'REQUEST_TEMPLATE';\nexport const REQUEST_TEMPLATE_FROM_SCRATCH = 'REQUEST_TEMPLATE_FROM_SCRATCH';\n\nexport const GET_FLOWS_TODO_COUNT = 'GET_FLOWS_TODO_COUNT';\n\n// Flow Options\nexport const TRIGGER_FLOW = 'TRIGGER_FLOW';\nexport const END_OCCURRENCE = 'END_OCCURRENCE';\nexport const SEND_FLOW_REMINDER = 'SEND_FLOW_REMINDER';\nexport const GET_FLOW_PARTICIPANTS = 'GET_FLOW_PARTICIPANTS';\nexport const GET_FLOWS_FILTER_OPTIONS = 'GET_FLOWS_FILTER_OPTIONS';\nexport const GET_POSTED_BY_FILTER_OPTIONS = 'GET_POSTED_BY_FILTER_OPTIONS';\nexport const GET_DATE_FILTER_OPTIONS = 'GET_DATE_FILTER_OPTIONS';\nexport const HIDE_FLOW_ACTIVITY = 'HIDE_FLOW_ACTIVITY';\nexport const SHOW_FLOW_ACTIVITY = 'SHOW_FLOW_ACTIVITY';\nexport const TRIGGER_ARCHIVE_FLOW = 'TRIGGER_ARCHIVE_FLOW';\nexport const TRIGGER_UNARCHIVE_FLOW = 'TRIGGER_UNARCHIVE_FLOW';\nexport const GET_FLOWS_OCCURRENCE_DETAILS = 'GET_FLOWS_OCCURRENCE_DETAILS';\nexport const GET_FLOWS_VERSIONS_FILTER_OPTIONS =\n 'GET_FLOWS_VERSIONS_FILTER_OPTIONS';\nexport const GET_FLOWS_BLOCKS_FILTER_OPTIONS =\n 'GET_FLOWS_BLOCKS_FILTER_OPTIONS';\nexport const GET_FLOWS_MENTIONS_FILTER_OPTIONS =\n 'GET_FLOWS_MENTIONS_FILTER_OPTIONS';\nexport const GET_EXTERNAL_FLOWS = 'GET_EXTERNAL_FLOWS';\nexport const VERIFY_FLOW_AUTHORIZATION = 'VERIFY_AUTHORIZATION_STATUS_FLOW';\n\n// Flows Builder\nexport const GET_MEMBERS_FROM_CRITERIA = 'GET_MEMBERS_FROM_CRITERIA';\nexport const GET_ALL_DEPARTMENTS = 'GET_ALL_DEPARTMENTS';\n\n// Quick Setup\nexport const GET_CALENDAR_LIST = 'GET_CALENDAR_LIST';\nexport const GET_QUICK_SETUP_STATUS = 'GET_QUICK_SETUP_STATUS';\nexport const CALENDAR_AUTHORIZATION = 'CALENDAR_AUTHORIZATION';\nexport const GET_CALENDAR_EMBED_URL = 'GET_CALENDAR_EMBED_URL';\nexport const GET_CALENDAR_EVENTS_LIST = 'GET_CALENDAR_EVENTS_LIST';\nexport const UPDATE_QUICK_SETUP_STATUS = 'UPDATE_QUICK_SETUP_STATUS';\nexport const GET_CALENDAR_EVENT_DETAILS = 'GET_CALENDAR_EVENT_DETAILS';\n\n// IM\nexport const GET_IM_SETUP_JOB = 'GET_IM_SETUP_JOB';\nexport const GET_IM_CONFIG = 'GET_IM_CONFIG';\nexport const IM_AUTHORIZE = 'IM_AUTHORIZE';\nexport const GET_IM_INTEGRATION_DATA = 'GET_IM_INTEGRATION_DATA';\n\n// AUTH\nexport const VERIFY_CREATE_PASSWORD_TOKEN = 'VERIFY_CREATE_PASSWORD_TOKEN';\nexport const GET_LOGIN_OPTIONS = 'GET_LOGIN_OPTIONS';\nexport const CREATE_PASSWORD = 'CREATE_PASSWORD';\n\n// ADMIN MERGE.DEV\nexport const GET_MERGE_LINK_TOKEN = 'GET_MERGE_LINK_TOKEN';\nexport const AUTHORIZE_MERGE_PUBLIC_TOKEN = 'AUTHORIZE_MERGE_PUBLIC_TOKEN';\n\n// SISENSE\nexport const AUTHORIZE_SISENSE = 'AUTHORIZE_SISENSE';\n\n// ADMIN_GENERAL_SETTINGS\nexport const UPDATE_GENERAL_SETTINGS = 'UPDATE_GENERAL_SETTINGS';\n\n// NOTEBOOK\nexport const GET_NOTEBOOK_SECTION = 'GET_NOTEBOOK_SECTION';\nexport const POST_NOTEBOOK_TASKS = 'POST_NOTEBOOK_TASKS';\nexport const GET_NOTEBOOK_TODO_COUNT = 'GET_NOTEBOOK_TODO_COUNT';\nexport const GET_NOTEBOOK_RIGHT_DRAWER_TASK = 'GET_NOTEBOOK_RIGHT_DRAWER_TASK';\nexport const GET_NOTEBOOK_TASK_ASSIGNEE_LIST =\n 'GET_NOTEBOOK_TASK_ASSIGNEE_LIST';\nexport const PUT_NOTEBOOK_MARK_TASKS_AS_READ =\n 'PUT_NOTEBOOK_MARK_TASKS_AS_READ';\nexport const GET_NOTEBOOK_TASK_HISTORY = 'GET_NOTEBOOK_TASK_HISTORY';\n\n// IntroJs\nexport const GET_TOURS = 'GET_TOURS';\nexport const UPDATE_TOURS = 'UPDATE_TOURS';\n\ntype EndpointDetails = Record<\n string,\n { requestType: Method; endpointURL: string }\n>;\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nexport default {\n [TEST]: {\n requestType: 'GET',\n endpointURL: '/test',\n },\n [TEST_WITH_SUB]: {\n requestType: 'GET',\n endpointURL: '/test/:sub',\n },\n [GET_NOTEBOOK_TASK_HISTORY]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task/details/:taskId/activity`,\n },\n [VERIFY_EMAIL_ONBOARDING]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/auth/onboard/register`,\n },\n [QUICK_SETUP_GUIDE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/employer/employer_info/guide`,\n },\n [GET_PROFILE_INFO]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/info`,\n },\n [UPDATE_PROFILE_INFO]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/info`,\n },\n [UPDATE_PROFILE_PICTURE]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/profile/updateAccount`,\n },\n [UPDATE_FLOW_PERMISSIONS_AND_GIF_SETTINGS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/settings/flow`,\n },\n [MARK_NOTIFICATION_AS_READ]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/user/notification/markread`,\n },\n [V3_GET_FEED]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/posts`,\n },\n [GET_SINGLE_POST]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/:postID`,\n },\n [EDIT_FLOW]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId`,\n },\n [CREATE_FLOW]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows`,\n },\n [GET_FLOW_RESPONSE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/response/:responseId`,\n },\n [DELETE_FLOW_RESPONSE]: {\n requestType: 'DELETE',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/response/:responseId`,\n },\n [UPDATE_POST_REACTION]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/:postId/react/:action`,\n },\n [UPDATE_COMMENT_REACTION]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/comments/:commentId/react/:action`,\n },\n [V3_SEARCH_FEED]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/searchv2`,\n },\n [GET_MEMBER_RECOGNITION_COUNT]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/members/recognitionCount`,\n },\n [GET_CURRENT_PLAN]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/billing/planFeatures`,\n },\n [CREATE_POST]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/user/feed`,\n },\n [CREATE_POST_COMMENT]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/:postId/comment`,\n },\n [CREATE_FLOW_POST_COMMENT]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/response/:responseId/comment`,\n },\n [GET_POST_COMMENTS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/:postId/comments`,\n },\n [GET_FLOW_POST_COMMENTS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/response/:responseId/comment`,\n },\n [ANALYTICS_OVERALL_ENGAGEMENT]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/overallEngagement`,\n },\n [ANALYTICS_CORE_VALUES_GRAPH_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/coreValues`,\n },\n [ANALYTICS_BADGES_GRAPH_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/badges`,\n },\n [ANALYTICS_PEOPLE_GRAPH_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/people`,\n },\n [ANALYTICS_RECOGNITION_GRAPH_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/recognition`,\n },\n [ANALYTICS_PROFILE_INFORMATION]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/profileInformation`,\n },\n [ANALYTICS_RECOGNITION_SUMMARY]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/recognitionSummary`,\n },\n [ANALYTICS_PEOPLE_SUMMARY]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/peopleSummary`,\n },\n [GET_JOB_STATUS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/monitoring/job/:jobId/status`,\n },\n [GET_MULTIPLE_JOBS_STATUS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/monitoring/job/status?ids=:jobIds`,\n },\n [SEND_WELCOME_MESSAGE]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/slack/sendWelcomeMessage`,\n },\n [GET_IDENTITY_MANAGER_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/identityManagerData`,\n },\n [SET_CUSTOM_CURRENCY]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/employer/employer_info/setCustomCurrency`,\n },\n [SKIP_CUSTOM_CURRENCY]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/employer/employer_info/skipCustomCurrency`,\n },\n [GET_CUSTOM_EMOJI]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/integrations/slack/employer/customEmojis`,\n },\n [MSTEAMS_BOT_INTEGRATION_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/msteam/integrationData`,\n },\n [MSTEAMS_SET_ACTIVE_CHANNEL]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/msteam/setActiveChannel`,\n },\n [MSTEAMS_CREATE_ACTIVE_CHANNEL]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/msteam/createActiveChannel`,\n },\n [SLACK_SET_ACTIVE_CHANNEL]: {\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/slack/setActiveChannel`,\n requestType: 'POST',\n },\n [SLACK_CREATE_ACTIVE_CHANNEL]: {\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/slack/createActiveChannel`,\n requestType: 'POST',\n },\n [GET_ADMIN_INTEGRATION_STATUS]: {\n endpointURL: `${API_URL_WITH_V2}/integrations/common/employer/connections/status`,\n requestType: 'GET',\n },\n [GET_INTEGRATION_STATUS]: {\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/botManagerData`,\n requestType: 'GET',\n },\n [GET_BOT_OAUTH_CONFIG]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/:sso/oauth2Config`,\n },\n [AUTHORIZE_BOT]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/:sso/authorize`,\n },\n [SLACK_BOT_INTEGRATION_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/bot/slack/integrationData`,\n },\n [GET_SSO_SIGNIN_CONFIG]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/identity/:sso/oauth2Config/signin`,\n },\n [GET_SSO_SIGNUP_CONFIG]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/identity/:sso/oauth2Config/signup`,\n },\n [GET_SSO_OAUTH_CONFIG]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/identity/:sso/oauth2Config/im`,\n },\n [SSO_SIGNIN]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/users/identity/:sso/signin`,\n },\n [SSO_SIGNUP]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/users/identity/:sso/signup`,\n },\n [SEARCH_MEMBERS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/autocomplete?keyword=:keyword`,\n },\n [SEARCH_POSTS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/search`,\n },\n [GET_PREFERRED_SSO]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/identity/preferredSSO`,\n },\n [GET_INTEGRATION_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/:sso/integrationData`,\n },\n [GET_PAGINATED_INTEGRATION_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/:sso/pullData`,\n },\n [GET_PAGINATED_INTEGRATION_DATA_MAIN]: {\n // Todo: Suren, remove this once the new api updated\n requestType: 'GET',\n // eslint-disable-next-line max-len\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/merge/pullData?kind=Employee&limit=${PAGINATED_INTEGRATION_DATA_ITEMS_LIMIT}`,\n },\n [GET_IM_ENTITY_COUNT]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/membersCountByAccountManagementType`,\n },\n [GET_ASSEMBLY_UNIQUE_SHORT_CODE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/generateUniqueShortCode`,\n },\n [GET_NOTIFICATIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/user/notification`,\n },\n [INVITE_USERS_CREATE]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/invite/create`,\n },\n [GET_MEMBER_CELEBRATED_RANKING]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/memberCelebratedRanking`,\n },\n [GET_MEMBER_CELEBRATOR_RANKING]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/memberCelebratorRanking`,\n },\n [GET_MEMBER_COMMENTER_RANKING]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/memberCommenterRanking`,\n },\n [GET_TOP_CELEBRATED_LEADERBOARD]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/topCelebrated`,\n },\n [GET_TOP_CELEBRATORS_LEADERBOARD]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/topCelebrators`,\n },\n [GET_TOP_COMMENTERS_LEADERBOARD]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/analytics/topCommenters`,\n },\n [GET_MEMBERS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/members`,\n },\n [GET_MEMBERS_DETAILS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/membersDetails`,\n },\n [GET_REDEEM_INFO]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/billing/checkRedeem`,\n },\n [GET_CUSTOM_REWARD]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/rewards/getreward/custom`,\n // Todo: sort should be dynamic\n },\n [GET_GIFT_CARDS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/rewards/getreward/tango?category=gift%20card`,\n },\n [GET_CHEAPEST_REWARD]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/cheapestReward?country=:countryCode`,\n },\n [GET_AXOMO_INFO]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/axomo/info`,\n },\n [ESTABLISH_AXOMO_CONNECTION]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/axomo/connect`,\n },\n [BREAK_AXOMO_CONNECTION]: {\n requestType: 'DELETE',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/axomo/disconnect`,\n },\n [FETCH_INVENTORY_SWAGS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/rewardItems`,\n },\n [TOGGLE_REWARD_ITEMS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/rewards/toggle/:status`,\n },\n [TOGGLE_REWARDS_VISIBILITY]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/visibility/:status`,\n },\n [AXOMO_REWARD_CATALOGUE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/rewardCatalogue`,\n },\n [AXOMO_REWARD_CATEGORY]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/rewardCategory`,\n },\n [GET_AXOMO_REWARD_ITEM]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/:storeUID/:itemUID`,\n },\n [UPDATE_REWARD_ITEM]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/:storeUID/:rewardItemUID`,\n },\n [UPDATE_SHIPPING_COST]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/shippingCost`,\n },\n [GET_GENERAL_REWARDS_INFO]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/info`,\n },\n [AXOMO_PLACE_ORDER]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/rewards/integrations/AXOMO/placeOrder`,\n },\n [GET_DONATIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/rewards/getreward/tango?category=donation`,\n },\n [GET_EXCHANGE_RATES]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/rewards/exchangeRates`,\n },\n [GET_IP]: {\n requestType: 'GET',\n endpointURL: 'https://ipapi.co/json/',\n },\n [GET_MY_REWARDS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/user/settings/rewards`,\n },\n [GET_MY_REWARDS_HISTORY]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/user/settings/history`,\n },\n [ADMIN_DELETE_MEDIA]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V2}/user/feed/admin/:postId/deleteMedia`,\n },\n [ADMIN_DELETE_POST]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/posts/archive`,\n },\n [ADMIN_DELETE_COMMENT]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/comments/archive`,\n },\n [GET_PAGINATED_MEMBERS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/a`,\n },\n [RESEND_EMAIL_FOR_MY_REWARDS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/user/settings/resendEmail`,\n },\n [GET_USER_INFO]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/auth/user/info`,\n },\n [USER_VERIFY_TOKEN]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/users/verifyToken`,\n },\n [UPDATE_USER_SETTINGS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/user/settings/updateaccount`,\n },\n [CULTURE_REWARD_CASHOUT]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/rewards/cashout/custom`,\n },\n [REWARD_CASHOUT]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/rewards/cashout`,\n },\n [GET_SAML_DETAILS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/settings/auth/saml`,\n },\n [UPDATE_SAML_DETAILS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/settings/auth/saml`,\n },\n [ENABLE_SAML_DETAILS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/settings/auth/saml`,\n },\n [DISABLE_SAML_DETAILS]: {\n requestType: 'DELETE',\n endpointURL: `${API_URL_WITH_V3}/assembly/settings/auth/saml`,\n },\n [UPDATE_SAML_QUICK_SETTINGS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/settings/auth/saml/update`,\n },\n [AUTHENTICATE_SAML]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/saml/authentication`,\n },\n [GET_SAML_AUTH_CONFIG]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/saml/config`,\n },\n [GOOGLE_ONE_TAP_AUTH]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/users/identity/gsuite/oneTap`,\n },\n [ADMIN_CUSTOM_REWARD]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/employer/rewards/custom`,\n },\n [ADMIN_CUSTOM_REWARD_EDIT]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V2}/employer/rewards/custom/:rewardId`,\n },\n [GET_IM_SETUP_JOB]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/im/setup`,\n },\n [GET_IM_CONFIG]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/im/config`,\n },\n [IM_AUTHORIZE]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/im/authorize`,\n },\n [GET_IM_INTEGRATION_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/im/integrationData`,\n },\n [GET_MAIN_FEED]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/main`,\n },\n [GET_PROFILE_FEED]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/profile/:profileId`,\n },\n [GET_FLOW_BLOCK_PARTICIPANTS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/block/:blockId/members/search`,\n },\n [GET_EXTERNAL_FLOW_BLOCK_PARTICIPANTS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/external/flows/:flowId/block/:blockId/members/search`,\n },\n [FLOWS_ONBOARDING_JOB]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/onboardingJob`,\n },\n [FLOWS_ACCOUNT_SETUP]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/jobs/accountSetup`,\n },\n [WORKATO_QUICKSETUP]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/workato/setup`,\n },\n [GET_SHORTCUTS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/list/shortcut`,\n },\n [GET_TODO_FLOWS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/list/todo`,\n },\n [GET_ARCHIVED_FLOWS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/list/archived`,\n },\n [GET_FLOWS_INSTANCE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/instance`,\n },\n [SUBMIT_FLOWS_INSTANCE]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/instance`,\n },\n [GET_PUBLISHED_FLOWS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/list/published`,\n },\n [UPDATE_FLOWS_ACCESS_POLICY]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/accessPolicy`,\n },\n [GET_FLOW_DETAILS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/details`,\n },\n [GET_EXTERNAL_FLOWS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/external/flows/:flowId/details`,\n },\n [SUBMIT_EXTERNAL_FLOWS_INSTANCE]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/external/flows/response/:flowId/submit?identifier=:identifier`,\n },\n [GET_FLOW_POST_DOWNLOAD_URL]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/response/:responseId/block/:blockId/file/:fileName`,\n },\n [DELETE_ATTACHMENT_FILE]: {\n requestType: 'DELETE',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/instance/:instanceId/block/:blockId/file/:fileName`,\n },\n [GET_FLOW_FEED]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flow/:flowId`,\n },\n [TRIGGER_FLOW]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/trigger`,\n },\n [TRIGGER_ARCHIVE_FLOW]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/archive`,\n },\n [TRIGGER_UNARCHIVE_FLOW]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/unarchive`,\n },\n [HIDE_FLOW_ACTIVITY]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/activity/hide`,\n },\n [SHOW_FLOW_ACTIVITY]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/activity/show`,\n },\n [END_OCCURRENCE]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/endOccurrence`,\n },\n [SEND_FLOW_REMINDER]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/reminder`,\n },\n [GET_ACTIVE_FLOWS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/list/authorized`,\n },\n [GET_FLOWS_ACTIVITY]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/activity`,\n },\n [UPDATE_FLOW_POST_REACTION]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/response/:responseId/react/:action`,\n },\n [GET_FLOWS_TODO_COUNT]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/count/todo`,\n },\n [VERIFY_CREATE_PASSWORD_TOKEN]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V2}/auth/session/forgotPassword/verify/:token`,\n },\n [GET_LOGIN_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/signInOptions`,\n },\n [CREATE_PASSWORD]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V2}/auth/session/resetPassword`,\n },\n [UPDATE_GENERAL_SETTINGS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V2}/employer/employer_info/settings`,\n },\n [GET_FILE_UPLOAD_SIGNED_URL]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/instance/:instanceId/block/:blockId/file/:fileId`,\n },\n [GET_EXTERNAL_FILE_UPLOAD_SIGNED_URL]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/external/flows/:flowId/block/:blockId/file/:fileId`,\n },\n [GET_PROFILE_PICTURE_UPLOAD_SIGNED_URL]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/profile/uploadPicLink`,\n },\n [GET_LOGO_UPLOAD_SIGNED_URL]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/assembly/logoUploadLink`,\n },\n [GET_FLOWS_TEMPLATE_CATEGORIES]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/template/category`,\n },\n [GET_ALL_FLOWS_TEMPLATES]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/template`,\n },\n [REQUEST_TEMPLATE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/template/:templateId/request`,\n },\n [GET_FLOW_TEMPLATE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/template/:templateId`,\n },\n [REQUEST_TEMPLATE_FROM_SCRATCH]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/template/requestFromScratch`,\n },\n [GET_FLOW_PARTICIPANTS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/members/participants`,\n },\n [GET_FLOW_VIEWERS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/members/viewers`,\n },\n [GET_FLOWS_OCCURRENCE_DETAILS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/occurrence`,\n },\n [GET_MEMBER_NOTIFICATION_PREFERENCES]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/settings/notification`,\n },\n [UPDATE_MEMBER_NOTIFICATION_PREFERENCES]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/settings/notification`,\n },\n [GET_FLOWS_FILTER_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/filter/flows`,\n },\n [GET_POSTED_BY_FILTER_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/filter/postedBy`,\n },\n [GET_FLOWS_VERSIONS_FILTER_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/filter/version`,\n },\n [GET_FLOWS_BLOCKS_FILTER_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/filter/blocks`,\n },\n [GET_FLOWS_MENTIONS_FILTER_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/filter/mentions`,\n },\n [GET_DATE_FILTER_OPTIONS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/filter/date`,\n },\n [GENERATE_FLOW_DATA]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/:flowId/downloadData`,\n },\n [GET_MEMBERS_FROM_CRITERIA]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/flows/membersFromCriteria`,\n },\n [GET_ALL_DEPARTMENTS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/departments`,\n },\n [GET_CALENDAR_EMBED_URL]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/calendar/embedUrl`,\n },\n [GET_CALENDAR_LIST]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/calendar`,\n },\n [GET_QUICK_SETUP_STATUS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/quickSetup`,\n },\n [CALENDAR_AUTHORIZATION]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/calendar/authorize`,\n },\n [GET_MERGE_LINK_TOKEN]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/merge/linkToken`,\n },\n [AUTHORIZE_MERGE_PUBLIC_TOKEN]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/merge/authorize`,\n },\n [AUTHORIZE_SISENSE]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/sisense/login/sso`,\n },\n [GET_NOTEBOOK_SECTION]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task/:tab/:section`,\n },\n [POST_NOTEBOOK_TASKS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task`,\n },\n [GET_NOTEBOOK_TODO_COUNT]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task/count`,\n },\n [GET_NOTEBOOK_TASK_ASSIGNEE_LIST]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task/details/:taskId/assignees?keyword=:keyword`,\n },\n [PUT_NOTEBOOK_MARK_TASKS_AS_READ]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task/read`,\n },\n [GET_CALENDAR_EVENTS_LIST]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/calendar/:calendarId/event`,\n },\n [UPDATE_QUICK_SETUP_STATUS]: {\n requestType: 'POST',\n endpointURL: `${API_URL_WITH_V3}/assembly/members/quickSetup`,\n },\n [GET_CALENDAR_EVENT_DETAILS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/assembly/integration/calendar/:calendarId/event/:eventId`,\n },\n [GET_NOTEBOOK_RIGHT_DRAWER_TASK]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/notebook/task/details/:taskId`,\n },\n [GET_TOURS]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/users/tours`,\n },\n [UPDATE_TOURS]: {\n requestType: 'PUT',\n endpointURL: `${API_URL_WITH_V3}/users/tours/:tourName`,\n },\n [VERIFY_FLOW_AUTHORIZATION]: {\n requestType: 'GET',\n endpointURL: `${API_URL_WITH_V3}/feed/external/flows/:flowId/validate`,\n },\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport _ from 'lodash';\nimport history from '../history';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../containers/helpers/ErrorHelper';\nimport Logger from '../Utils/Logger';\nimport { API_URL_WITH_V2 } from '../config';\nimport { AuthHeaders } from './shared/HeaderToken';\nimport { updateIntercom } from '../Utils/Intercom';\nimport {\n showSuccessMessage,\n showInfoMessage,\n showErrorMessage,\n} from '../Utils/flashHandler';\nimport { hasRewardsPayments } from '../Utils/admin';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n EMPLOTER_INFO_SETTINGS: `${API_URL_WITH_V2}/employer/employer_info/settings`,\n};\n\nexport const ADMIN_REQUEST_STATUSES = {\n BLANK: 'blank',\n UPDATING: 'updating',\n};\n\nexport const adminProcessError = (error = {}, dispatch, actions) => {\n Logger('processError');\n Logger(error.response);\n Logger(error);\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(actions.requestFailed(ErrorMessages.serverError));\n break;\n case 401: // Not authorised\n window.location.href = `${APP_URL}home`;\n break;\n case 403: // Forbidden\n history.push('/404');\n break;\n case 404: // Page not found\n dispatch(actions.requestFailed(ErrorMessages.serverError));\n break;\n // mostly my error\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n if (responseData.code === 100) {\n const message = _.get(responseData, ['message', 'msg']);\n if (message) {\n dispatch(showErrorMessage(message));\n }\n } else {\n dispatch(actions.requestFailed(msg));\n return msg;\n }\n }\n break;\n default:\n dispatch(actions.requestFailed(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const GOT_MY_EMPLOYER = 'got_my_employer';\nexport const GOT_COMPANY_DETAILS = 'GOT_COMPANY_DETAILS';\nexport const GOT_PAYMENT_DETAILS = 'got_payment_details';\nexport const REQUEST_FAILED = 'admin_request_failed';\nexport const ADMIN_REQUEST_STATUS = 'ADMIN_REQUEST_STATUS';\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst gotMyEmployer = (employer) => {\n updateIntercom({\n employerId: employer._id,\n employerName: employer.name,\n rewardsPayment: !!(employer && hasRewardsPayments(employer)), // ? true : false\n });\n return {\n type: GOT_MY_EMPLOYER,\n employer,\n };\n};\n\nconst gotCompanyDetails = (companyDetails) => ({\n type: GOT_COMPANY_DETAILS,\n companyDetails,\n});\n\nconst updateRequestStatus = (status) => ({\n type: ADMIN_REQUEST_STATUS,\n status,\n});\n\nconst gotPaymentDetails = (paymentDetails) => ({\n type: GOT_PAYMENT_DETAILS,\n paymentDetails,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const adminActions = {\n gotMyEmployer,\n gotCompanyDetails,\n updateRequestStatus,\n gotPaymentDetails,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const updateEmployerInfoAction = (props) => {\n Logger(props, true);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Saving company settings...'));\n dispatch(\n adminActions.updateRequestStatus(ADMIN_REQUEST_STATUSES.UPDATING),\n );\n const res = await axios.put(\n `${apiEndpoints.EMPLOTER_INFO_SETTINGS}`,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n dispatch(adminActions.updateRequestStatus(ADMIN_REQUEST_STATUSES.BLANK));\n if (result.success) {\n const { employer } = result.data;\n dispatch(gotMyEmployer(employer));\n dispatch(showSuccessMessage('Company settings have been saved'));\n }\n } catch (error) {\n adminProcessError(error, dispatch);\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (\n state = { requestStatus: ADMIN_REQUEST_STATUS.BLANK },\n action,\n) => {\n switch (action.type) {\n case GOT_MY_EMPLOYER:\n return { ...state, employer: action.employer };\n case GOT_COMPANY_DETAILS:\n return { ...state, companyDetails: action.companyDetails };\n case ADMIN_REQUEST_STATUS:\n return { ...state, requestStatus: action.status };\n case GOT_PAYMENT_DETAILS:\n return { ...state, paymentDetails: action.paymentDetails };\n case REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { PLAN_IDS } from '../../config';\n\nconst tier1 = {\n id: PLAN_IDS.tier1,\n featureList: [\n 'No credit card required',\n 'Up to 10 team members',\n 'Unlimited flows',\n 'Access to workflow templates',\n 'Up to 1 app integrations',\n ],\n};\n\nconst tier2 = {\n id: PLAN_IDS.tier2,\n featureList: [\n 'Up to 50 team members',\n 'Unlimited flows',\n 'Customized culture rewards',\n '30 days of version history',\n 'Up to 5 app integrations',\n 'Up to 10 gift card options',\n 'Custom core values',\n 'Custom currency',\n 'Custom allowances',\n ],\n};\n\nconst tier3 = {\n id: PLAN_IDS.tier3,\n featureList: [\n 'Unlimited team members',\n 'Unlimited version history',\n 'HRIS Integrations',\n 'SAML + SSO',\n 'Company branding',\n 'Birthday/Anniversary bot',\n 'All 600+ gift cards',\n 'VISA reward card',\n 'Premium customer support',\n ],\n};\n\nconst tier4 = {\n id: PLAN_IDS.tier4,\n // NAME: 'Enterprise',\n // PRICE: { US: 8.50 },\n // type: 'paid',\n featureList: [\n 'Dedicated Account Manager',\n '99.99% guaranteed uptime SLA',\n 'Custom contracts',\n 'Onboarding support',\n 'Executive training & office hours',\n 'Admin & employee trainings',\n 'Quarterly business reviews',\n ],\n};\n\nexport const getTierForPlanId = (planId) => {\n const currentPlans = Object.keys(PLAN_IDS);\n let tier = 'tier1';\n currentPlans.forEach((tierVal) => {\n if (PLAN_IDS[tierVal] === planId) {\n tier = tierVal;\n }\n });\n return tier;\n};\n\nexport const FEATURE_STATUS = {\n ENABLED: 'ENABLED',\n DISABLED: 'DISABLED',\n};\n\nexport const FEATURE_LIST = {\n HISTORY_DURATION_IN_MONTHS: 'HISTORY_DURATION_IN_MONTHS',\n PER_SEAT_PRICE: 'PER_SEAT_PRICE',\n CHARGEABLE: 'CHARGEABLE',\n CULTURE_REWARDS: 'CULTURE_REWARDS',\n CHARITY_REWARDS: 'CHARITY_REWARDS',\n AXOMO_SWAGS: 'ALLOW_REWARDS_PROVIDER',\n GIFT_CARD_REWARDS: 'GIFT_CARD_REWARDS',\n INTERNATIONAL_GIFT_CARD_REWARDS: 'INTERNATIONAL_GIFT_CARD_REWARDS',\n CASH_EQUIVALENT_REWARDS: 'CASH_EQUIVALENT_REWARDS',\n EMPLOYEE_LIMIT: 'EMPLOYEE_LIMIT',\n INTEGRATIONS_LIMIT: 'INTEGRATIONS_LIMIT',\n CUSTOM_ALLOWANCE: 'CUSTOM_ALLOWANCE',\n BIRTHDAY_BOT: 'BIRTHDAY_BOT',\n ANNIVERSARY_BOT: 'ANNIVERSARY_BOT',\n PREMIUM_CUSTOMER_SUPPORT: 'PREMIUM_CUSTOMER_SUPPORT',\n RECOGNITION_MESSAGES: 'RECOGNITION_MESSAGES',\n CORE_VALUES: 'CORE_VALUES',\n PAID_ALLOWANCE: 'PAID_ALLOWANCE',\n SWITCH_PLAN: 'SWITCH_PLAN',\n CUSTOM_CURRENCY: 'CUSTOM_CURRENCY',\n CUSTOM_BRAND_LOGO: 'CUSTOM_BRAND_LOGO',\n PRIVATE_MESSAGE: 'PRIVATE_MESSAGES',\n ACCOUNT_MANAGEMENT_SELECTION: 'ACCOUNT_MANAGEMENT_SELECTION',\n FEED_SEARCH: 'FEED_SEARCH',\n ADMIN_ANALYTICS: 'ADMIN_ANALYTICS',\n ALLOW_ADP_IDENTITY_MANAGER: 'ALLOW_ADP_IDENTITY_MANAGER',\n ALLOW_MERGE_IDENTITY_MANAGER: 'ALLOW_MERGE_IDENTITY_MANAGER',\n SAML: 'SAML',\n ALLOW_TO_CHANGE_USER_INVITE_AND_REQUEST_PERMISSION:\n 'ALLOW_TO_CHANGE_USER_INVITE_AND_REQUEST_PERMISSION',\n ALLOW_TO_CHANGE_ASSEMBLY_CURRENCY: 'ALLOW_TO_CHANGE_ASSEMBLY_CURRENCY',\n ALLOW_TO_CHANGE_ASSEMBLY_LOGO: 'ALLOW_TO_CHANGE_ASSEMBLY_LOGO',\n};\n\nexport const getFeatureDeatilsForPlan = (currentPlan, feature) => {\n if (!currentPlan) {\n return null;\n }\n const { features } = currentPlan;\n const featureDetails = features.find((feature_) => feature_.id === feature);\n return featureDetails;\n};\n\nexport const isFeatureEnabled = (featureList, requiredFeature) =>\n featureList?.find((feature) => feature?.id === requiredFeature)?.status ===\n FEATURE_STATUS.ENABLED;\n\nexport const FAQData = (customCurrency) => [\n {\n QUESTION: 'Is there any limit to the number of messages we can post?',\n ANSWER:\n 'Nope! You can post as many messages on Assembly as you’d like. There’s never an additional charge for recognizing team members more in Assembly.',\n },\n {\n QUESTION:\n 'How many team members can I have on the Standard or Premium plan?',\n ANSWER:\n 'There are no limits on number of team members the Standard or Premium plan. Only our Starter and Lite plans have seat limits (which is subject to change)',\n },\n {\n QUESTION: 'Do I have to install anything or talk to IT?',\n ANSWER: `Nope! You can do all your recognition and ${customCurrency.NAME_TITLEIZED_PLURAL} giving through your web browser. That said, if you'd prefer, we do offer a Slack app integration.`,\n },\n {\n QUESTION: 'Do you have discounts for non-profits and education?',\n ANSWER:\n 'We sure do! Assembly is 20% off for non-profits and charities. To get the discounted rate, just contact our support team. They’ll ask you for some documentation verifying that you’re eligible, and then they’ll apply the discount to your account.',\n },\n {\n QUESTION: 'What if I change my mind?',\n ANSWER:\n 'No problem, you can cancel anytime, all on your own, no questions asked. You can even get an export of all your data to keep forever for reference.',\n },\n];\n\nexport const downgradeToBusinessFeatureLoss = [\n 'You will lose your dedicated account manager',\n 'If you have a custom contract, it will remain in place till the end of its term and after be terminated and move to monthly billing',\n 'Any onboarding support will be lost',\n 'No executive training or available office hours',\n 'No admin or employee training to help boost your engagement',\n 'No quarterly business reviews',\n];\n\nexport const downgradeToTeamFeatureLoss = [\n 'New features are premiered and typically limited to the Business and Enterprise accounts',\n 'Any Birthday or Anniversary bot messages will no longer be automated or sent',\n 'Only U.S. based gift cards will be available',\n `The gift card catalog will be limited to 10 of your choice — we'll automatically pick the most used`,\n 'No cash equivalent gift card is available like the VISA card',\n 'You will still have top notch support but we prioritize our Business and Enterprise accounts',\n `You'll only have 3 months worth of recognition history to review`,\n 'Your HRIS connection will be turned off or you will lose access to HRIS integrations',\n 'Any company branding will revert back to Assembly branding',\n 'Your account will be limited to 50 seats and if over that, you will only have a short grace period before your account is deactivated',\n];\n\nexport const downgradeToFreeFeatureLoss = (customCurrency) => [\n 'Any HRIS or SAML integrations will be immediately disconnected',\n 'All permissions will be reverted back to \"Everyone\"',\n 'You’ll only have 3 months worth of recognition history to review',\n 'Members with custom allowances will be reverted to your default allowance',\n 'Team members will lose access to premier rewards (charities and gift cards)',\n // 'You will have to choose the 3 integrations you want to keep',\n 'Custom core values will be replaced with badges and history will be lost',\n // 'Any Birthday or Anniversary bot messages will no longer be automated',\n `All ${customCurrency.NAME_TITLEIZED_PLURAL} will lose their dollar value`,\n 'Lose access to the latest upgrades that are released on Team, Business, or Enterprise plans only',\n];\n\nexport default {\n tier1,\n tier2,\n tier3,\n tier4,\n};\n","import Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core/styles';\nimport { darken } from '@material-ui/core/styles/colorManipulator';\nimport themeV2 from '../../theme';\n\nconst StyledButton = withStyles({\n contained: {\n height: 44,\n borderRadius: 10,\n backgroundColor: themeV2.palette.greenLight,\n color: themeV2.palette.white,\n '&:$disabled': {\n backgroundColor: themeV2.palette.lightGray1,\n color: `${themeV2.palette.drakGray2} !important`,\n },\n '&:hover': {\n textDecoration: 'none',\n color: themeV2.palette.white,\n backgroundColor: themeV2.palette.green,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent',\n },\n boxShadow: 'none !important',\n },\n },\n containedPrimary: {\n backgroundColor: themeV2.palette.primary.main,\n color: themeV2.palette.white,\n '&:hover': {\n backgroundColor: darken(themeV2.palette.primary.main, 0.3),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: darken(themeV2.palette.primary.main, 0.3),\n },\n },\n boxShadow: 'none !important',\n },\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"secondary\"`. */\n containedSecondary: {\n backgroundColor: themeV2.palette.secondary.main,\n color: themeV2.palette.white,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n backgroundColor: darken(themeV2.palette.secondary.main, 0.3),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: darken(themeV2.palette.secondary.main, 0.3),\n },\n },\n boxShadow: 'none !important',\n },\n label: {\n textTransform: 'none',\n fontFamily: themeV2.typography.fontFamily,\n fontSize: 14,\n fontWeight: themeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n fontStretch: 'normal',\n lineHeight: 'normal',\n letterSpacing: 'normal',\n textAlign: 'center',\n },\n})(Button);\n\nexport default StyledButton;\n","import styled, { keyframes } from 'styled-components';\nimport AssemblyCurrencyIcon from '../AssemblyCurrencyIcon';\nimport Body from '../Body';\nimport { buttonColors, sizeVariant } from './buttonConfigs';\nimport {\n ButtonWrapperProps,\n ButtonVariants,\n ButtonColors,\n ButtonStatuses,\n} from './interfaces';\n\nconst disabledBackground = ({\n isLoading,\n variant,\n color,\n status,\n}: ButtonWrapperProps) => {\n let background;\n if (isLoading) {\n if (variant === 'text') {\n background = 'transparent';\n } else {\n background = buttonColors[color][variant][status].background;\n }\n } else {\n background = buttonColors[color][variant].disabled.background;\n }\n return background;\n};\n\nconst disabledTextColor = ({\n isLoading,\n variant,\n color,\n status,\n}: ButtonWrapperProps) => {\n let textColor;\n if (isLoading) {\n textColor = buttonColors[color][variant][status].textColor;\n } else {\n textColor = buttonColors[color][variant].disabled.textColor;\n }\n return textColor;\n};\n\nconst disabledBorderColor = ({\n isLoading,\n variant,\n color,\n status,\n}: ButtonWrapperProps) => {\n let borderColor;\n if (isLoading) {\n borderColor = buttonColors[color][variant][status].borderColor;\n } else {\n borderColor = buttonColors[color][variant].disabled.borderColor;\n }\n return borderColor;\n};\n\nconst blink = keyframes`\n 0%{\n opacity: 0.2;\n }\n 20% {\n opacity: 1;\n }\n 100%{\n opacity: 0.2;\n }\n`;\n\nexport const ButtonTextWrapper = styled.div<{\n enableCaret: boolean;\n isLoading: boolean;\n variant: ButtonVariants;\n}>`\n display: flex;\n align-items: center;\n visibility: ${({ variant, isLoading }) =>\n variant !== 'text' && isLoading && 'hidden'};\n width: ${({ enableCaret }) => enableCaret && '100%'};\n transition: 0.25s ease;\n transition-property: transform;\n`;\n\nexport const ButtonWrapper = styled.button`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: ${({ size }) => sizeVariant[size].height};\n width: ${({ isFullWidth }) => isFullWidth && '100%'};\n padding: ${({ size }) => sizeVariant[size].padding};\n border-radius: ${({ variant }) => (variant === 'showMore' ? '100px' : '4px')};\n border-bottom-left-radius: ${({ color }) => color === 'secondary2' && 0};\n border-bottom-right-radius: ${({ color }) => color === 'secondary2' && 0};\n color: ${({ color, variant, status }) =>\n buttonColors[color][variant][status].textColor};\n text-transform: none;\n background: transparent;\n box-shadow: none;\n outline: none;\n border: none;\n cursor: pointer;\n ${({ hasBoxShadow }) =>\n hasBoxShadow &&\n 'box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.04), 0px 3px 4px rgba(0, 0, 0, 0.02), 0px 1px 5px rgba(0, 0, 0, 0.12);'};\n\n &:before {\n content: '';\n position: absolute;\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n margin: auto;\n background-color: ${({ color, variant, status }) =>\n buttonColors[color][variant][status].background};\n border: 1px solid\n ${({ color, variant, status }) =>\n buttonColors[color][variant][status].borderColor};\n box-shadow: ${({ variant, color }) =>\n variant === 'text' || color === 'secondary2'\n ? 'none'\n : '0px 2px 4px rgba(0, 0, 0, 0.04), 0px 3px 4px rgba(0, 0, 0, 0.02), 0px 1px 5px rgba(0, 0, 0, 0.12)'};\n border-radius: inherit;\n transition: 0.25s ease;\n transition-property: transform, box-shadow;\n }\n\n &:not(:disabled):hover,\n &:not(:disabled):focus-visible {\n background: transparent;\n color: ${({ variant, color, status }) =>\n variant === 'text'\n ? buttonColors[color].text[status].hover.textColor\n : buttonColors[color][variant][status].hover.textColor};\n &:before {\n background-color: ${({ variant, color, status }) =>\n variant === 'text'\n ? buttonColors[color].text[status].hover.background\n : buttonColors[color][variant][status].hover.background};\n border-color: ${({ variant, color, status }) =>\n variant === 'text'\n ? buttonColors[color].text[status].hover.borderColor\n : buttonColors[color][variant][status].hover.borderColor};\n box-shadow: ${({ variant, color }) =>\n variant === 'text' || color === 'secondary2'\n ? 'none'\n : '0px 8px 10px rgba(0, 0, 0, 0.04), 0px 3px 14px rgba(0, 0, 0, 0.02), 0px 4px 5px rgba(0, 0, 0, 0.12)'};\n }\n }\n &:not(:disabled):active {\n background: transparent;\n color: ${({ variant, color, status }) =>\n variant === 'text'\n ? buttonColors[color].text[status].active.textColor\n : buttonColors[color][variant][status].active.textColor};\n ${ButtonTextWrapper} {\n transform: ${({ variant, isFullWidth }) =>\n variant !== 'text' && isFullWidth && 'scale(0.95)'};\n }\n &:before {\n background-color: ${({ variant, color, status }) =>\n variant === 'text'\n ? buttonColors[color].text[status].active.background\n : buttonColors[color][variant][status].active.background};\n border-color: ${({ variant, color, status }) =>\n variant === 'text'\n ? buttonColors[color].text[status].active.borderColor\n : buttonColors[color][variant][status].active.borderColor};\n box-shadow: ${({ variant }) =>\n variant === 'text'\n ? 'none'\n : '0px 0px 2px rgba(0, 0, 0, 0.14), 0px 2px 2px rgba(0, 0, 0, 0.12), 0px 1px 3px rgba(0, 0, 0, 0.2)'};\n transform: ${({ variant, isFullWidth }) =>\n (variant !== 'text' || isFullWidth) && 'scale(0.95)'};\n }\n }\n &:disabled {\n cursor: not-allowed;\n background: transparent;\n color: ${(props) => disabledTextColor(props)};\n &:before {\n background-color: ${(props) => disabledBackground(props)};\n border-color: ${(props) => disabledBorderColor(props)};\n box-shadow: ${({ variant, isLoading }) =>\n variant !== 'text' && isLoading\n ? '0px 2px 4px rgba(0, 0, 0, 0.04), 0px 3px 4px rgba(0, 0, 0, 0.02), 0px 1px 5px rgba(0, 0, 0, 0.12)'\n : 'none'};\n }\n & div {\n color: inherit;\n }\n }\n`;\n\nexport const LoadingWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0px;\n left: 0px;\n bottom: 0px;\n right: 0px;\n`;\n\nexport const IconWrapper = styled.div<{\n isEndIcon: boolean;\n icon?: string;\n disabled: boolean;\n color: ButtonColors;\n variant: ButtonVariants;\n status: ButtonStatuses;\n}>`\n margin-right: ${({ icon, isEndIcon }) => (icon && !isEndIcon ? '8px' : '0')};\n margin-left: ${({ icon, isEndIcon }) => (icon && isEndIcon ? '8px' : '0')};\n fill: ${({ disabled, color, variant, status }) =>\n disabled\n ? buttonColors[color][variant].disabled.textColor\n : buttonColors[color][variant][status].textColor};\n`;\n\nexport const StyledAssemblyIcon = styled(AssemblyCurrencyIcon)`\n z-index: 1;\n margin-right: 8px;\n`;\n\nexport const ButtonText = styled(Body)<{ fontWeight: number }>`\n display: flex;\n z-index: 1;\n font-weight: ${({ fontWeight }) => fontWeight};\n width: 100%;\n`;\n\nexport const ButtonTextInner = styled.span`\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n white-space: nowrap;\n`;\n\nexport const DropdownCaret = styled.div<{\n disabled: boolean;\n color: ButtonColors;\n variant: ButtonVariants;\n status: ButtonStatuses;\n}>`\n display: flex;\n align-items: center;\n margin-left: auto;\n padding-left: 16px;\n & svg path {\n fill: ${({ disabled, color, variant, status }) =>\n disabled || color === 'secondary2'\n ? buttonColors[color][variant].disabled.textColor\n : buttonColors[color][variant][status].textColor};\n }\n`;\n\nexport const LoadingDot = styled.div`\n animation: ${blink} 1.3s infinite linear;\n animation-fill-mode: both;\n &:nth-child(2) {\n animation-delay: 0.2s;\n }\n &:nth-child(3) {\n animation-delay: 0.4s;\n }\n`;\n","import React, { forwardRef, useCallback, useMemo } from 'react';\nimport LoadingCircle from '../LoadingCircle';\nimport SVGIcon from '../SVGIcon';\nimport { buttonColors, FontWeight, sizeVariant } from './buttonConfigs';\nimport { ButtonProps } from './interfaces';\nimport {\n LoadingDot,\n ButtonWrapper,\n LoadingWrapper,\n ButtonTextWrapper,\n StyledAssemblyIcon,\n ButtonText,\n ButtonTextInner,\n DropdownCaret,\n IconWrapper,\n} from './styles';\n\ntype Ref = HTMLButtonElement;\nconst Button = forwardRef((props: ButtonProps, ref) => {\n const [buttonFocused, setButtonFocus] = React.useState(false);\n const {\n type = 'button',\n children,\n value = '',\n disabled = false,\n onClick,\n className: parentClassName,\n icon,\n font = 'body1',\n color = 'primary',\n variant = 'contained',\n status = 'default',\n size = 'medium',\n isLoading = false,\n loadingText,\n onMouseUp,\n onMouseDown,\n dataTestId,\n isFullWidth = false,\n isEndIcon = false,\n enableCaret = false,\n caretOpen = false,\n assemblyCurrency,\n 'aria-describedby': ariaDescribedby,\n caretIconSize,\n hasBoxShadow = false,\n } = props;\n const loaderColor = buttonColors[color][variant][status].textColor;\n const loadingPlaceholder = (\n <>\n {loadingText}\n .\n .\n .\n \n );\n const handleMouseDown = useCallback(() => {\n if (onMouseDown) {\n onMouseDown();\n }\n setButtonFocus(true);\n }, [onMouseDown]);\n\n const handleMouseUp = useCallback(() => {\n if (onMouseUp) {\n onMouseUp();\n }\n setButtonFocus(false);\n }, [onMouseUp]);\n\n const handleMouseLeave = useCallback(() => {\n setButtonFocus(false);\n }, []);\n\n const iconWrapperArgs = useMemo(() => {\n return {\n disabled: isLoading || disabled,\n size,\n color,\n variant,\n status,\n icon,\n isEndIcon,\n };\n }, [color, disabled, icon, isEndIcon, isLoading, size, status, variant]);\n\n return (\n \n {variant !== 'text' && isLoading && (\n \n \n \n )}\n \n {icon && !isEndIcon && (\n \n \n \n )}\n {assemblyCurrency && (\n \n )}\n \n \n {isLoading && loadingText ? loadingPlaceholder : children || value}\n \n {enableCaret && (\n \n \n \n )}\n \n {isEndIcon && icon && (\n \n \n \n )}\n \n \n );\n});\nButton.displayName = 'Button';\n\nconst MemoizedButton = React.memo(Button);\nMemoizedButton.displayName = 'Button';\n\nexport default MemoizedButton;\n","const accountManagementTypes = {\n ALL_USERS: 'ALL_USERS',\n BUSINESS_UNIT: 'BUSINESS_UNIT',\n DEPARTMENT: 'DEPARTMENT',\n WORK_LOCATION: 'WORK_LOCATION',\n SELECTED_USERS: 'SELECTED_USERS',\n GROUPS: 'GROUPS',\n COMPANIES: 'COMPANIES',\n CHANNELS: 'CHANNELS',\n ORGANIZATIONAL_UNIT: 'ORGUNITS',\n};\n\nexport default accountManagementTypes;\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { put, takeEvery } from 'redux-saga/effects';\nimport get from 'lodash/get';\n\nimport history from '../history';\nimport { API_URL_WITH_V2, API_URL_WITH_V3, IOS_URL } from '../config';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../containers/helpers/ErrorHelper';\nimport Logger from '../Utils/Logger';\nimport {\n updateMyDetails,\n getUserInfoAction,\n GET_MY_USER_INFO,\n userInfoSaga,\n meActions,\n} from './Me';\nimport { HeadersWithoutAuth, AuthHeadersV2 } from './shared/HeaderToken';\nimport getter from '../Utils/objectUtils/getter';\nimport { rebootIntercom } from '../Utils/Intercom';\nimport { getAppSource, setAppSource } from '../Utils/msteams';\nimport { isSourceDeviceIPhone } from '../Utils/device';\nimport RoutesList from '../aV2/routes/routesList';\nimport { USER_ACCOUNT_SETUP, ONBOARDING_SETUP } from '../constants/routes';\n// ------------------------------------\n// Helpers\n// ------------------------------------\n\nconst apiEndpoints = {\n LOGIN_USER: `${API_URL_WITH_V2}/auth/session/login`,\n FORGOT_PASSWORD: `${API_URL_WITH_V2}/auth/session/forgotPassword`,\n VERIFY_FORGOT_PASSWORD: `${API_URL_WITH_V2}/auth/session/forgotPassword/verify/`,\n RESET_PASSWORD: `${API_URL_WITH_V2}/auth/session/resetPassword`,\n SIGNOUT_USER: `${API_URL_WITH_V3}/users/session/logout`,\n};\n\nconst processError = (error = {}, dispatch) => {\n // Logger('processError');\n // Logger(error.response);\n // Logger(error);\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(sessionActions.requestFailed(ErrorMessages.serverError));\n break;\n case 403: // Forbidden\n // redirect to home\n break;\n case 404: // Page not found\n dispatch(sessionActions.requestFailed(ErrorMessages.serverError));\n break;\n // mostly my error\n case 401: // Not authorised\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n dispatch(sessionActions.requestFailed(msg));\n }\n break;\n default:\n dispatch(sessionActions.requestFailed(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nconst AUTHENTICATE_USER = 'AUTHENTICATE_USER';\nconst AUTHENTICATED = 'authenticated_user';\nconst UNAUTHENTICATED = 'unauthenticated_user';\nconst AUTHENTICATION_ERROR = 'authentication_error';\nconst AUTHENTICATION_RESET = 'authentication_reset';\nconst REQUEST_FAILED = 'sessions_request_failed';\nconst FORGOTPASSWORDEMAILSENT = 'forgot_password_email_sent';\nconst FORGOT_PASSWORD_VERIFIED = 'forgot_password_verified';\nconst RESET_SESSION_STATE_MESSAGES = 'reset_sessions_state_messages';\nexport const SIGN_OUT = 'unauthenticated_user';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst authenticated = () => ({\n type: AUTHENTICATED,\n});\n\nconst unauthenticated = () => ({\n type: UNAUTHENTICATED,\n});\n\nconst auth_error = () => ({\n type: AUTHENTICATION_ERROR,\n payload: 'Invalid email or password',\n});\n\nconst reset_auth = () => ({\n type: AUTHENTICATION_RESET,\n});\n\nconst forgotPasswordEmailSent = (email) => ({\n type: FORGOTPASSWORDEMAILSENT,\n email,\n});\nconst forgotPasswordVerified = (user) => ({\n type: FORGOT_PASSWORD_VERIFIED,\n user,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: REQUEST_FAILED,\n error: errorMessage,\n});\nconst resetStateMessages = () => ({\n type: RESET_SESSION_STATE_MESSAGES,\n});\n\nexport const sessionActions = {\n authenticated,\n unauthenticated,\n auth_error,\n reset_auth,\n requestFailed,\n forgotPasswordEmailSent,\n forgotPasswordVerified,\n resetStateMessages,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const signInAction = (props) => {\n const { email, password } = props;\n const rememberMe = props.rememberMe || false;\n\n return async (dispatch) => {\n try {\n const data = {\n email,\n password,\n rememberMe,\n };\n\n const res = await axios.post(\n apiEndpoints.LOGIN_USER,\n data,\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const { user } = result.data;\n localStorage.setItem('token', res.data.data.token);\n authenticateUser(user, dispatch);\n const toPath =\n getter(['location', 'state', 'origin'], history) || '/home';\n if (toPath.includes('signin') || toPath.includes('signout')) {\n window.location.href = `${APP_URL}home`;\n } else {\n history.push(toPath);\n }\n }\n } catch (error) {\n dispatch(sessionActions.auth_error());\n processError(error, dispatch);\n }\n };\n};\n\nexport const forgotPasswordAction = (props) => {\n const { email } = props;\n return async (dispatch) => {\n try {\n const data = {\n email,\n };\n\n const res = await axios.post(\n apiEndpoints.FORGOT_PASSWORD,\n data,\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n dispatch(sessionActions.forgotPasswordEmailSent(email));\n history.push('/resetEmailSent');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\nexport const forgotPasswordVerifyTokenAction = (props) => {\n const { token } = props;\n return async (dispatch) => {\n try {\n const res = await axios.get(\n `${apiEndpoints.VERIFY_FORGOT_PASSWORD}${token}`,\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n dispatch(forgotPasswordVerified(result.data));\n history.push('/resetPassword');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\nexport const resetPasswordAction = (props) => {\n const { userId, password } = props;\n return async (dispatch) => {\n try {\n const data = {\n userId,\n password,\n };\n\n const res = await axios.post(\n apiEndpoints.RESET_PASSWORD,\n data,\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n history.push('/signin');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\n\nexport const clearLocalStorage = () => {\n const appSource = getAppSource();\n\n // TODO: group these values into one object per assembly instance\n // to make it easier to handle this in multi-assembly world & to\n // clear the cache on sign out\n const keysToClear = [\n 'user',\n 'token',\n 'dontShowClickedOnSlackSetupModal',\n 'dontShowQuickSetupProgress',\n 'userFirstLogin',\n // 'SOURCE_DEVICE', // Vijay: I need to persist this value to identity the device after successful SSO\n 'WEB_APP_SOURCE',\n ];\n\n keysToClear.forEach((key) => localStorage.removeItem(key));\n\n if (appSource) {\n setAppSource(appSource);\n }\n};\n\nexport const signOutAction = () => {\n // All user info and user settings (Slack complete modal, Quick setup close state) are cleared here\n clearLocalStorage();\n rebootIntercom();\n\n // Clear Cookies\n // CookieHandler.remove(COOKIE_CONSTANTS.ASSEMBLY_TOKEN);\n // CookieHandler.remove(COOKIE_CONSTANTS.ASSEMBLY_USER);\n return {\n type: UNAUTHENTICATED,\n };\n};\n\nexport const signoutAsyncAction = () => {\n return async (dispatch) => {\n try {\n const data = {};\n\n const res = await axios.post(\n apiEndpoints.SIGNOUT_USER,\n data,\n AuthHeadersV2(),\n );\n const result = res.data;\n Logger(result, false);\n dispatch(signOutAction());\n } catch (error) {\n dispatch(signOutAction());\n processError(error, dispatch);\n }\n };\n};\n\nexport const authenticateUser = (me, dispatch) => {\n updateMyDetails(me, dispatch);\n dispatch(sessionActions.authenticated());\n dispatch(getUserInfoAction());\n};\n\nexport function userSessionCreatedAction(user, accessToken) {\n return { type: AUTHENTICATE_USER, me: user, accessToken };\n}\n\nexport const handleUserSignin = (user, to = '/') => {\n const isOnboardingComplete = get(user, 'isOnboardingComplete', true);\n const isFirstLogin = get(user, 'isFirstLogin', false);\n const roles = get(user, 'role', []);\n const isOwner = roles.includes('Owner');\n\n if (!isOnboardingComplete && isFirstLogin && isOwner) {\n history.push(ONBOARDING_SETUP);\n } else if (!isOnboardingComplete) {\n const route = isFirstLogin\n ? `${RoutesList.EMPLOYEE_SET_DETAILS}?firstLogin=true`\n : RoutesList.EMPLOYEE_SET_DETAILS;\n history.push(route);\n } else {\n history.push(isFirstLogin ? USER_ACCOUNT_SETUP : to);\n }\n};\n\nfunction* authenticateUserSaga({ me, accessToken }) {\n if (isSourceDeviceIPhone()) {\n window.location.href = `${IOS_URL}auth?token=${accessToken}`;\n return;\n }\n localStorage.setItem('token', accessToken);\n updateMyDetails(me);\n yield put(meActions.gotMyDetails(me));\n yield put(sessionActions.authenticated());\n yield put({ type: GET_MY_USER_INFO });\n}\n\nexport function* watchAuthenticateUserSaga() {\n yield takeEvery(AUTHENTICATE_USER, authenticateUserSaga);\n yield takeEvery(GET_MY_USER_INFO, userInfoSaga);\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case AUTHENTICATED:\n return { ...state, authenticated: true, error: '' };\n case UNAUTHENTICATED:\n return { ...state, authenticated: false, error: '' };\n case AUTHENTICATION_ERROR:\n return { ...state, authenticated: false, error: action.payload };\n case AUTHENTICATION_RESET:\n return { ...state, authenticated: false, error: '' };\n case REQUEST_FAILED:\n return { ...state, error: action.error };\n case FORGOTPASSWORDEMAILSENT:\n return {\n ...state,\n authenticated: false,\n emailSent: true,\n error: '',\n resetEmail: action.email,\n };\n case FORGOT_PASSWORD_VERIFIED:\n return {\n ...state,\n authenticated: false,\n userVerified: action.user,\n error: '',\n resetEmail: null,\n };\n case RESET_SESSION_STATE_MESSAGES:\n return { ...state, error: null, emailSent: false };\n default:\n return state;\n }\n};\n","import {\n alpha,\n lighten,\n darken,\n} from '@material-ui/core/styles/colorManipulator';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst white = ThemeV2.palette.gray1;\nconst primary = ThemeV2.palette.geekBlue6;\nconst success = ThemeV2.palette.green7;\nconst warning = ThemeV2.palette.red6;\nconst info = ThemeV2.palette.gold6;\n\nexport const disabledStyle = {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.gray6,\n borderColor: ThemeV2.palette.gray3,\n};\n\nconst showMoreDefault = {\n background: ThemeV2.palette.geekBlue6,\n textColor: ThemeV2.palette.gray1,\n borderColor: 'transparent',\n hover: {\n background: ThemeV2.palette.geekBlue6,\n textColor: ThemeV2.palette.gray1,\n borderColor: 'transparent',\n },\n active: {\n background: ThemeV2.palette.geekBlue6,\n textColor: ThemeV2.palette.gray1,\n borderColor: 'transparent',\n },\n};\n\nconst showMore = {\n default: showMoreDefault,\n disabled: disabledStyle,\n success: showMoreDefault,\n warning: showMoreDefault,\n info: showMoreDefault,\n};\n\nexport const iconButtonColors = {\n text: {\n default: {\n background: 'transparent',\n color: ThemeV2.palette.gray8,\n },\n hover: {\n background: ThemeV2.palette.geekBlue1,\n color: ThemeV2.palette.geekBlue6,\n },\n focus: {\n background: ThemeV2.palette.geekBlue2,\n color: ThemeV2.palette.geekBlue6,\n },\n },\n textWithBackground: {\n default: {\n background: ThemeV2.palette.gray3,\n color: ThemeV2.palette.gray8,\n },\n hover: {\n background: ThemeV2.palette.geekBlue1,\n color: ThemeV2.palette.geekBlue6,\n },\n focus: {\n background: ThemeV2.palette.geekBlue2,\n color: ThemeV2.palette.geekBlue6,\n },\n },\n primary: {\n default: {\n background: ThemeV2.palette.geekBlue6,\n color: ThemeV2.palette.gray1,\n },\n hover: {\n background: ThemeV2.palette.geekBlue5,\n color: ThemeV2.palette.gray1,\n },\n focus: {\n background: ThemeV2.palette.geekBlue7,\n color: ThemeV2.palette.gray1,\n },\n },\n secondary: {\n default: {\n background: ThemeV2.palette.gray1,\n color: ThemeV2.palette.geekBlue6,\n },\n hover: {\n background: ThemeV2.palette.gray1,\n color: ThemeV2.palette.geekBlue5,\n },\n focus: {\n background: ThemeV2.palette.gray1,\n color: ThemeV2.palette.geekBlue7,\n },\n },\n iconWithoutBackground: {\n default: {\n background: 'transparent',\n color: ThemeV2.palette.dustRed6,\n },\n hover: {\n background: 'transparent',\n color: ThemeV2.palette.dustRed6,\n },\n focus: {\n background: 'transparent',\n color: ThemeV2.palette.dustRed6,\n },\n },\n};\n\nexport const buttonColors = {\n primary: {\n contained: {\n default: {\n background: primary,\n textColor: white,\n borderColor: primary,\n hover: {\n background: ThemeV2.palette.geekBlue5,\n textColor: white,\n borderColor: ThemeV2.palette.geekBlue5,\n },\n active: {\n background: ThemeV2.palette.geekBlue7,\n textColor: white,\n borderColor: ThemeV2.palette.geekBlue7,\n },\n },\n success: {\n background: success,\n textColor: white,\n borderColor: success,\n hover: {\n background: lighten(success, 0.1),\n textColor: white,\n borderColor: lighten(success, 0.1),\n },\n active: {\n background: darken(success, 0.1),\n textColor: white,\n borderColor: darken(success, 0.1),\n },\n },\n warning: {\n background: warning,\n textColor: white,\n borderColor: warning,\n hover: {\n background: lighten(warning, 0.1),\n textColor: white,\n borderColor: lighten(warning, 0.1),\n },\n active: {\n background: darken(warning, 0.1),\n textColor: white,\n borderColor: darken(warning, 0.1),\n },\n },\n info: {\n background: info,\n textColor: white,\n borderColor: info,\n hover: {\n background: lighten(info, 0.1),\n textColor: white,\n borderColor: lighten(info, 0.1),\n },\n active: {\n background: darken(info, 0.1),\n textColor: white,\n borderColor: darken(info, 0.1),\n },\n },\n disabled: disabledStyle,\n },\n outlined: {\n default: {\n background: 'transparent',\n textColor: primary,\n borderColor: primary,\n hover: {\n background: 'transparent',\n textColor: ThemeV2.palette.geekBlue5,\n borderColor: ThemeV2.palette.geekBlue5,\n },\n active: {\n background: 'transparent',\n textColor: ThemeV2.palette.geekBlue7,\n borderColor: ThemeV2.palette.geekBlue7,\n },\n },\n success: {\n background: 'transparent',\n textColor: success,\n borderColor: success,\n hover: {\n background: 'transparent',\n textColor: lighten(success, 0.1),\n borderColor: lighten(success, 0.1),\n },\n active: {\n background: 'transparent',\n textColor: darken(success, 0.1),\n borderColor: darken(success, 0.1),\n },\n },\n warning: {\n background: 'transparent',\n textColor: warning,\n borderColor: warning,\n hover: {\n background: 'transparent',\n textColor: lighten(warning, 0.1),\n borderColor: lighten(warning, 0.1),\n },\n active: {\n background: 'transparent',\n textColor: darken(warning, 0.1),\n borderColor: darken(warning, 0.1),\n },\n },\n info: {\n background: 'transparent',\n textColor: info,\n borderColor: info,\n hover: {\n background: 'transparent',\n textColor: lighten(info, 0.1),\n borderColor: lighten(info, 0.1),\n },\n active: {\n background: 'transparent',\n textColor: darken(info, 0.1),\n borderColor: darken(info, 0.1),\n },\n },\n disabled: disabledStyle,\n },\n text: {\n default: {\n background: 'transparent',\n textColor: primary,\n borderColor: 'transparent',\n hover: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.geekBlue5,\n borderColor: ThemeV2.palette.gray3,\n },\n active: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.geekBlue7,\n borderColor: ThemeV2.palette.gray3,\n },\n },\n success: {\n background: 'transparent',\n textColor: success,\n borderColor: 'transparent',\n hover: {\n background: alpha(success, 0.05),\n textColor: success,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(success, 0.1),\n textColor: success,\n borderColor: 'transparent',\n },\n },\n warning: {\n background: 'transparent',\n textColor: warning,\n borderColor: 'transparent',\n hover: {\n background: alpha(warning, 0.05),\n textColor: warning,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(warning, 0.1),\n textColor: warning,\n borderColor: 'transparent',\n },\n },\n info: {\n background: 'transparent',\n textColor: info,\n borderColor: 'transparent',\n hover: {\n background: alpha(info, 0.05),\n textColor: info,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(info, 0.1),\n textColor: info,\n borderColor: 'transparent',\n },\n },\n disabled: {\n background: 'transparent',\n textColor: ThemeV2.palette.gray6,\n borderColor: 'transparent',\n },\n },\n golden: {\n default: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n hover: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n },\n active: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n },\n },\n success: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n hover: {\n background: lighten(ThemeV2.palette.gold6, 0.1),\n textColor: ThemeV2.palette.gray1,\n borderColor: lighten(ThemeV2.palette.gold6, 0.1),\n },\n active: {\n background: darken(ThemeV2.palette.gold6, 0.1),\n textColor: ThemeV2.palette.gray1,\n borderColor: darken(ThemeV2.palette.gold6, 0.1),\n },\n },\n warning: {\n background: warning,\n textColor: white,\n borderColor: warning,\n hover: {\n background: lighten(warning, 0.1),\n textColor: white,\n borderColor: lighten(warning, 0.1),\n },\n active: {\n background: darken(warning, 0.1),\n textColor: white,\n borderColor: darken(warning, 0.1),\n },\n },\n info: {\n background: info,\n textColor: white,\n borderColor: info,\n hover: {\n background: lighten(info, 0.1),\n textColor: white,\n borderColor: lighten(info, 0.1),\n },\n active: {\n background: darken(info, 0.1),\n textColor: white,\n borderColor: darken(info, 0.1),\n },\n },\n disabled: disabledStyle,\n },\n showMore,\n },\n secondary: {\n contained: {\n default: {\n background: white,\n textColor: primary,\n borderColor: white,\n hover: {\n background: white,\n textColor: ThemeV2.palette.geekBlue5,\n borderColor: white,\n },\n active: {\n background: white,\n textColor: ThemeV2.palette.geekBlue7,\n borderColor: white,\n },\n },\n success: {\n background: white,\n textColor: success,\n borderColor: white,\n hover: {\n background: white,\n textColor: lighten(success, 0.1),\n borderColor: white,\n },\n active: {\n background: white,\n textColor: darken(success, 0.1),\n borderColor: white,\n },\n },\n warning: {\n background: white,\n textColor: warning,\n borderColor: white,\n hover: {\n background: white,\n textColor: lighten(warning, 0.1),\n borderColor: white,\n },\n active: {\n background: white,\n textColor: darken(warning, 0.1),\n borderColor: white,\n },\n },\n info: {\n background: white,\n textColor: info,\n borderColor: white,\n hover: {\n background: white,\n textColor: lighten(info, 0.1),\n borderColor: white,\n },\n active: {\n background: white,\n textColor: darken(info, 0.1),\n borderColor: white,\n },\n },\n disabled: disabledStyle,\n },\n outlined: {\n default: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n success: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n warning: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n info: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n disabled: disabledStyle,\n },\n text: {\n default: {\n background: 'transparent',\n textColor: ThemeV2.palette.gray8,\n borderColor: 'transparent',\n hover: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.gray8,\n borderColor: ThemeV2.palette.gray3,\n },\n active: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.gray9,\n borderColor: ThemeV2.palette.gray3,\n },\n },\n success: {\n background: 'transparent',\n textColor: success,\n borderColor: 'transparent',\n hover: {\n background: alpha(success, 0.05),\n textColor: success,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(success, 0.1),\n textColor: success,\n borderColor: 'transparent',\n },\n },\n warning: {\n background: 'transparent',\n textColor: warning,\n borderColor: 'transparent',\n hover: {\n background: alpha(warning, 0.05),\n textColor: warning,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(warning, 0.1),\n textColor: warning,\n borderColor: 'transparent',\n },\n },\n info: {\n background: 'transparent',\n textColor: info,\n borderColor: 'transparent',\n hover: {\n background: alpha(info, 0.05),\n textColor: info,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(info, 0.1),\n textColor: info,\n borderColor: 'transparent',\n },\n },\n disabled: {\n background: 'transparent',\n textColor: ThemeV2.palette.gray6,\n borderColor: 'transparent',\n },\n },\n golden: {\n default: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n hover: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n },\n active: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n },\n },\n success: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n hover: {\n background: lighten(ThemeV2.palette.gold6, 0.1),\n textColor: ThemeV2.palette.gray1,\n borderColor: lighten(ThemeV2.palette.gold6, 0.1),\n },\n active: {\n background: darken(ThemeV2.palette.gold6, 0.1),\n textColor: ThemeV2.palette.gray1,\n borderColor: darken(ThemeV2.palette.gold6, 0.1),\n },\n },\n warning: {\n background: warning,\n textColor: white,\n borderColor: warning,\n hover: {\n background: lighten(warning, 0.1),\n textColor: white,\n borderColor: lighten(warning, 0.1),\n },\n active: {\n background: darken(warning, 0.1),\n textColor: white,\n borderColor: darken(warning, 0.1),\n },\n },\n info: {\n background: info,\n textColor: white,\n borderColor: info,\n hover: {\n background: lighten(info, 0.1),\n textColor: white,\n borderColor: lighten(info, 0.1),\n },\n active: {\n background: darken(info, 0.1),\n textColor: white,\n borderColor: darken(info, 0.1),\n },\n },\n disabled: disabledStyle,\n },\n showMore,\n },\n secondary2: {\n contained: {\n default: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.gray8,\n borderColor: 'transparent',\n hover: {\n background: ThemeV2.palette.gray4,\n textColor: ThemeV2.palette.gray8,\n borderColor: 'transparent',\n },\n active: {\n background: ThemeV2.palette.gray4,\n textColor: ThemeV2.palette.gray8,\n borderColor: 'transparent',\n },\n },\n success: {\n background: white,\n textColor: success,\n borderColor: white,\n hover: {\n background: white,\n textColor: lighten(success, 0.1),\n borderColor: white,\n },\n active: {\n background: white,\n textColor: darken(success, 0.1),\n borderColor: white,\n },\n },\n warning: {\n background: white,\n textColor: warning,\n borderColor: white,\n hover: {\n background: white,\n textColor: lighten(warning, 0.1),\n borderColor: white,\n },\n active: {\n background: white,\n textColor: darken(warning, 0.1),\n borderColor: white,\n },\n },\n info: {\n background: white,\n textColor: info,\n borderColor: white,\n hover: {\n background: white,\n textColor: lighten(info, 0.1),\n borderColor: white,\n },\n active: {\n background: white,\n textColor: darken(info, 0.1),\n borderColor: white,\n },\n },\n disabled: disabledStyle,\n },\n outlined: {\n default: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n success: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n warning: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n info: {\n background: disabledStyle.background,\n textColor: disabledStyle.textColor,\n borderColor: disabledStyle.borderColor,\n hover: disabledStyle,\n active: disabledStyle,\n },\n disabled: disabledStyle,\n },\n text: {\n default: {\n background: 'transparent',\n textColor: ThemeV2.palette.gray8,\n borderColor: 'transparent',\n hover: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.gray8,\n borderColor: ThemeV2.palette.gray3,\n },\n active: {\n background: ThemeV2.palette.gray3,\n textColor: ThemeV2.palette.gray9,\n borderColor: ThemeV2.palette.gray3,\n },\n },\n success: {\n background: 'transparent',\n textColor: success,\n borderColor: 'transparent',\n hover: {\n background: alpha(success, 0.05),\n textColor: success,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(success, 0.1),\n textColor: success,\n borderColor: 'transparent',\n },\n },\n warning: {\n background: 'transparent',\n textColor: warning,\n borderColor: 'transparent',\n hover: {\n background: alpha(warning, 0.05),\n textColor: warning,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(warning, 0.1),\n textColor: warning,\n borderColor: 'transparent',\n },\n },\n info: {\n background: 'transparent',\n textColor: info,\n borderColor: 'transparent',\n hover: {\n background: alpha(info, 0.05),\n textColor: info,\n borderColor: 'transparent',\n },\n active: {\n background: alpha(info, 0.1),\n textColor: info,\n borderColor: 'transparent',\n },\n },\n disabled: {\n background: 'transparent',\n textColor: ThemeV2.palette.gray6,\n borderColor: 'transparent',\n },\n },\n golden: {\n default: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n hover: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n },\n active: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n },\n },\n success: {\n background: ThemeV2.palette.gold6,\n textColor: ThemeV2.palette.gray1,\n borderColor: ThemeV2.palette.gold6,\n hover: {\n background: lighten(ThemeV2.palette.gold6, 0.1),\n textColor: ThemeV2.palette.gray1,\n borderColor: lighten(ThemeV2.palette.gold6, 0.1),\n },\n active: {\n background: darken(ThemeV2.palette.gold6, 0.1),\n textColor: ThemeV2.palette.gray1,\n borderColor: darken(ThemeV2.palette.gold6, 0.1),\n },\n },\n warning: {\n background: warning,\n textColor: white,\n borderColor: warning,\n hover: {\n background: lighten(warning, 0.1),\n textColor: white,\n borderColor: lighten(warning, 0.1),\n },\n active: {\n background: darken(warning, 0.1),\n textColor: white,\n borderColor: darken(warning, 0.1),\n },\n },\n info: {\n background: info,\n textColor: white,\n borderColor: info,\n hover: {\n background: lighten(info, 0.1),\n textColor: white,\n borderColor: lighten(info, 0.1),\n },\n active: {\n background: darken(info, 0.1),\n textColor: white,\n borderColor: darken(info, 0.1),\n },\n },\n disabled: disabledStyle,\n },\n showMore,\n },\n};\n\nexport const sizeVariant = {\n large: {\n height: '48px',\n padding: '12px 16px',\n font: 'body2',\n },\n medium: {\n height: '40px',\n padding: '8px 16px',\n font: 'body2',\n },\n small: {\n height: '32px',\n padding: '4px 16px',\n font: 'body2',\n },\n};\n\nexport const FontWeight = {\n REGULAR: 400,\n SEMIBOLD: 500,\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport TableCell from '@material-ui/core/TableCell';\n\nconst styles = (theme) => ({\n head: {\n backgroundColor: '#F5F5F5',\n color: '#6E6E6E',\n fontSize: 12,\n fontWeight: theme.typography.fontWeightSemibold,\n },\n body: {\n color: '#737373',\n fontSize: 12,\n },\n deleted: {\n color: 'rgba(0, 0, 0, 0.26)',\n fontSize: 12,\n },\n});\n\nfunction CustomTableCell(props) {\n const { deleted, classes, ...rest } = props;\n return (\n \n );\n}\n\nexport default withStyles(styles)(CustomTableCell);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport moment from 'moment';\nimport getter from './objectUtils/getter';\nimport { getMonthFromDateObject } from './date';\nimport { APP_URL } from '../config';\n\nexport const goToMainAppHome = () => {\n window.location.href = `${APP_URL}home`;\n};\n\nexport const checkAdmin = (role) => {\n let isAdmin = false;\n if (role && role.find((rol) => rol === 'Admin' || rol === 'Owner')) {\n isAdmin = true;\n }\n return isAdmin;\n};\n\nexport const checkSuperAdmin = (user) => {\n let isAdmin = false;\n if (user) {\n isAdmin = checkAdmin(user.role);\n }\n if (isAdmin === true && user.email) {\n isAdmin = /@joinassembly\\.com|@carrothr\\.com/.test(user.email);\n }\n return isAdmin;\n};\n\nexport const checkManager = (user) =>\n _.get(user, ['profile', 'isManager'], false);\n\nexport const getUserDepartment = (user) =>\n _.get(user, ['profile', 'department'], 'false');\n\nexport const hasRewardsPayments = (employer) => {\n if (!employer) {\n return false;\n }\n const isChargeable =\n getter(['accounts', 'rewards', 'isChargeable'], employer) || false;\n return isChargeable;\n};\nexport const hasRewardsPaymentsCompleted = (employer) => {\n if (!employer) {\n return false;\n }\n const isComplete =\n getter(['accounts', 'rewards', 'isComplete'], employer) || false;\n return isComplete;\n};\n\nexport const hasPlatformPayments = (employer) => {\n if (!employer) {\n return false;\n }\n const cardStatus =\n getter(['accounts', 'stripe', 'subscription', 'status'], employer) || false;\n return cardStatus;\n};\n\nexport const checkOwner = (role) => {\n let isOwner = false;\n if (role && role.find((rol) => rol === 'Owner')) {\n isOwner = true;\n }\n return isOwner;\n};\n\nexport const checkIfProduction = () =>\n process.env.REACT_APP_STAGE === 'production';\n\nexport const canReceiveCarrots = (user) => {\n const { profile } = user;\n if (profile) {\n if (profile.status === 'observer' || profile.status === 'giver') {\n return false;\n }\n }\n return true;\n};\nexport const canGiveCarrots = (user) => {\n const { profile } = user;\n if (profile) {\n if (profile.status === 'observer' || profile.status === 'receiver') {\n return false;\n }\n }\n return true;\n};\nexport const ifUserObserver = (user) => {\n const { profile } = user;\n if (profile) {\n if (profile.status === 'observer') {\n return true;\n }\n }\n return false;\n};\n\nexport const getAllowanceValueForUser = (user, employer) => {\n const { allowanceType } = user.profile;\n if (!employer) {\n return 0;\n }\n if (allowanceType === 'regular') {\n return employer.regularAllowance;\n }\n if (allowanceType === 'custom') {\n return user.profile.customAllowance;\n }\n return 0;\n};\n\nexport const getAllowanceTypeLiteralForUser = (user) => {\n const allowanceType = _.get(user, ['profile', 'allowanceType'], '');\n if (allowanceType === 'regular') {\n return 'Default';\n }\n if (allowanceType === 'custom') {\n return 'Custom';\n }\n return 'No Allowance';\n};\n\nexport const getUserStatusTypeLiteralForUser = (user) => {\n return _.get(user, ['profile', 'status'], 'normal');\n};\nexport const getUserTotalPointsGiven = (user) => {\n return _.get(user, ['totalPointsGiven'], 0);\n};\n\nexport const getUserBirthday = (user) => {\n if (user.profile.birthday) {\n const birthDay = user.profile.birthday.date;\n const birthMonth = getMonthFromDateObject(user.profile.birthday);\n if (birthDay && birthMonth) {\n return `${birthMonth}, ${birthDay}`;\n }\n }\n return 'NA';\n};\n\nexport const getUserAnniversary = (user) => {\n if (user.profile.hiredday) {\n const hireDay = user.profile.hiredday.date;\n const hireMonth = getMonthFromDateObject(user.profile.hiredday);\n const hireYear = user.profile.hiredday.year;\n if (hireDay && hireMonth && hireYear) {\n return moment(\n `${hireMonth} ${hireDay} ${hireYear}`,\n 'MMMM D YYYY',\n ).format('MM/D/YYYY');\n }\n }\n return 'NA';\n};\n\nexport const getDontShowClickedOnSlackSetupModal = () =>\n JSON.parse(localStorage.getItem('dontShowClickedOnSlackSetupModal'));\n\nexport const setDontShowClickedOnSlackSetupModal = (value) => {\n localStorage.setItem('dontShowClickedOnSlackSetupModal', value);\n};\n\nexport const getDontShowQuickSetupProgress = () =>\n JSON.parse(localStorage.getItem('dontShowQuickSetupProgress'));\n\nexport const setDontShowQuickSetupProgress = (value) => {\n localStorage.setItem('dontShowQuickSetupProgress', value);\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nconst processErrorResponse = (response, renames) => {\n let error = '';\n if (response.code === 100) {\n error = {};\n const errorkeys = Object.keys(response.message);\n for (let key in errorkeys) {\n //eslint-disable-line\n let assignKey = errorkeys[key];\n // If you want to rename the field\n // example - first_name => firstName\n if (renames) {\n if (Object.keys(renames).indexOf(assignKey) !== -1) {\n assignKey = renames[assignKey]; //eslint-disable-line\n }\n }\n error[assignKey] = response.message[errorkeys[key]].msg;\n }\n } else if (response.code === 101) {\n // do something\n error = response.message.join(', ');\n } else if (response.code === 102) {\n // Its a string\n error = response.message;\n } else {\n error = 'Server Error';\n }\n return error;\n};\n\nexport default processErrorResponse;\n\nexport const ErrorMessages = {\n networkError: 'Network Error.',\n serverError: 'Server down. Please try again later.',\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { HeadingProps } from './interface';\n\nconst fontSizes = {\n h1: {\n fontSize: '46px',\n lineHeight: '54px',\n },\n h2: {\n fontSize: '30px',\n lineHeight: '38px',\n },\n h3: {\n fontSize: '38px',\n lineHeight: '46px',\n },\n h4: {\n fontSize: '30px',\n lineHeight: '38px',\n },\n h5: {\n fontSize: '24px',\n lineHeight: '32px',\n },\n h6: {\n fontSize: '20px',\n lineHeight: '28px',\n },\n h7: {\n fontSize: '16px',\n lineHeight: '24px',\n },\n};\n\nconst fontStyles = {\n regular: {\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n },\n medium: {\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontStyle: 'normal',\n },\n bold: { fontWeight: ThemeV2.typography.fontWeightBold, fontStyle: 'normal' },\n};\n\nconst getTag = (variant: string | undefined) => {\n switch (variant) {\n case 'h1':\n return 1;\n case 'h2':\n return 2;\n case 'h3':\n return 3;\n case 'h4':\n return 4;\n case 'h5':\n return 5;\n case 'h6':\n return 6;\n case 'h7':\n return 6;\n default:\n return 1;\n }\n};\n\nconst Heading = styled(\n ({ variant, dataTestId, children, className = '' }: HeadingProps) => {\n return React.createElement(\n `h${getTag(variant)}`,\n { 'data-testid': dataTestId, className },\n children,\n );\n },\n)`\n font-family: ${({ fontFamily }) =>\n fontFamily || ThemeV2.typography.adminFontFamily};\n font-size: ${({ variant }) => variant && fontSizes[variant].fontSize};\n font-weight: ${({ weight }) =>\n weight ? fontStyles[weight].fontWeight : fontStyles.bold.fontWeight};\n font-style: ${({ weight }) =>\n weight ? fontStyles[weight].fontStyle : fontStyles.bold.fontStyle};\n line-height: ${({ variant }) => variant && fontSizes[variant].lineHeight};\n color: ${({ color }) => color || ThemeV2.palette.gray9};\n text-align: ${({ textAlign }) => textAlign};\n ${({ marginTop }) => marginTop && `margin-top: ${marginTop}`};\n ${({ marginBottom }) => marginBottom && `margin-bottom: ${marginBottom}`};\n`;\n\nexport default Heading;\nHeading.displayName = 'Heading';\n","export const DEFAULT_PATH = '/';\nexport const V2_HOME = `/home`;\nexport const V2_USER_PROFILE = `/user/:userId`;\nexport const V2_REWARDS = `/rewards`;\nexport const V2_SETTINGS = `/settings`;\nexport const POST = '/post';\nexport const V2_POST_PAGE = `${POST}/:postId`;\nexport const QUICK_SETUP = '/quick-setup';\nexport const V3_POST_PAGE = `${POST}/flow/:postType`;\nexport const V3_FLOWS_POST_PAGE = `${POST}/flow/flows`;\nexport const RECOGNITION_POST_PAGE = `${POST}/flow/recognition`;\nexport const V2_COMMENT_PAGE = `${V2_POST_PAGE}/comment/:commentId`;\n\nexport const V2_GIFTCARD_REWARDS = `${V2_REWARDS}/gift-cards`;\nexport const V2_CHARITY_REWARDS = `${V2_REWARDS}/charities`;\nexport const V2_CULTURE_REWARDS = `${V2_REWARDS}/culture`;\nexport const V2_MY_REWARDS = `${V2_REWARDS}/my-rewards`;\nexport const V2_AXOMO_SWAGS = `${V2_REWARDS}/swags`;\n\nexport const V2_GENERAL_SETTINGS = `${V2_SETTINGS}/general`;\nexport const V2_NOTIFICATION_SETTINGS = `${V2_SETTINGS}/notifications`;\n\nexport const HELP_CENTER = 'https://www.joinassembly.com/help-center';\nexport const PRODUCT_FEEDBACK =\n 'https://my.joinassembly.com/e/flows/6259cb7dba869dfae201c791';\n\nexport const SIGN_IN = `/signin`;\nexport const EMPLOYEE_VERIFY_LINK = '/verify';\nexport const RESET_PASSWORD = '/forgotPassword';\nexport const CREATE_PASSWORD = '/create-password/:token';\nexport const USER_ACCOUNT_SETUP = '/user/account-setup';\nexport const ONBOARDING_SETUP = '/onboarding-setup';\n\nexport const FLOWS = '/flows';\nexport const FLOWS_FEEDS = `${FLOWS}/:flowId`;\nexport const NEW_FLOWS_BUILDER = `${FLOWS}/editor`;\nexport const FLOWS_BUILDER = `${FLOWS_FEEDS}/editor`;\nexport const FLOW_INSIGHTS = `${FLOWS_FEEDS}/insights`;\nexport const FLOW_FEED = `${FLOWS_FEEDS}/feed`;\nexport const RECOGNITION_FEEDS = `${FLOWS}/recognition`;\n\nexport const EXTERNAL_PATH = '/e';\nexport const EXTERNAL_FLOW_PATH = `${EXTERNAL_PATH}/flows/:flowId`;\nexport const EXTERNAL_TEMPLATE_PATH = `${EXTERNAL_PATH}/template/:templateId`;\nexport const EXTERNAL_PATH_COMPLETION = `${EXTERNAL_PATH}/completion`;\n\nexport const generateV2UserProfileRoute = (userId: string) => `/user/${userId}`;\nexport const generateV3PostRoute = (postID: string) =>\n `/post/flow/recognition?postId=${postID}`;\nexport const generateFlowResponseRoute = (flowId: string, responseId: string) =>\n `/post/flow/flows?flowId=${flowId}&responseId=${responseId}`;\nexport const ADMIN_CULTURES_REWARDS = '/rewards/culture';\nexport const ADMIN_GIFT_CARDS = '/rewards/gifts';\nexport const ADMIN_CHARITIES = '/rewards/charities';\nexport const ADMIN_USER_INVITES = '/users/invite';\n\nexport const AUTH_SAML = '/auth/saml';\n\nexport const NOTEBOOK = `/notebook`;\nexport const NOTEBOOK_WITH_MYWORK_PRESELECTED = `/notebook/myWork`;\n\nexport const GOOGLE_ONE_TAP_AUTH = '/auth/gOneTap';\n","import { AutocompleteDropdownItem } from '../../../../atomic/organism/Autocomplete/interfaces';\nimport { SelectedCustomRecurrenceTypes } from '../../../../atomic/organism/CustomRecurrence/types';\nimport {\n ErrorEntry,\n TriggerBuilderBlockData,\n} from '../../../../interfaces/Flow/Builder';\n\nexport type ScheduleDateTimeControllerTypes = {\n templateId: string;\n isInEditMode: boolean;\n endTimeInMinutes: number;\n updateEndTimeInMinutes: (updatedEndTimeInMinutes: number) => void;\n shortcut: boolean;\n onShortcutToggle: (updatedShortcut: boolean) => void;\n setIsNextButtonDisabled: (val: boolean) => void;\n triggerBlockData: TriggerBuilderBlockData;\n hasActiveOccurrence?: boolean;\n updateErrorData: (error: ErrorEntry | null) => void;\n updateTriggerBlockData: (\n updatedContentBlock: TriggerBuilderBlockData,\n ) => void;\n};\n\ntype TimeZoneType = {\n id: string;\n title: string;\n value: string;\n};\n\nexport type GetRRuleStringProps = {\n flowStartDate: Date | undefined;\n flowEndDate: Date | undefined;\n flowFrequency: AutocompleteDropdownItem | null;\n flowFrequencyTime: AutocompleteDropdownItem | null;\n flowEndDateTime: AutocompleteDropdownItem | null;\n selectedTimezone: TimeZoneType;\n selectedCustomRecurrenceTypes: SelectedCustomRecurrenceTypes | undefined;\n};\n\nexport enum FlowFrequencyOptions {\n DAILY = 'daily',\n ONCE = 'once',\n EVERY_WEEKDAY = 'everyWeekday',\n WEEKLY = 'weekly',\n BIWEEKLY = 'biWeekly',\n MONTHLY = 'monthly',\n MONTHLY_LAST = 'monthlyLast',\n QUARTERLY = 'quarterly',\n QUARTERLY_LAST = 'quarterlyLast',\n ANNUALLY = 'annually',\n CUSTOM = 'custom',\n REPEAT_DAYS = 'repeatDays',\n REPEAT_ALL_DAYS = 'repeatAllDays',\n REPEAT_WEEK_DAYS = 'repeatWeekDays',\n REPEAT_WEEKS = 'repeatWeeks',\n REPEAT_YEARS = 'repeatYears',\n REPEAT_MONTHS = 'repeatMonths',\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport titleize from 'titleize';\n\nconst APP_CURRENCY_NAME = 'gold';\nconst APP_RECOGNITION = 'recognition';\nconst APP_RECOGNITION_PAST = 'recognized';\nconst GIVE_RECOGNITION_HEADER = 'Give Recognition';\nconst GIVE_RECOGNITION = 'give recognition';\nconst GIVE_RECOGNITION_CAPS = titleize(GIVE_RECOGNITION);\nconst SLACK_COMMAND = 'giverecognition';\n\nconst APP_NAME = 'Assembly';\n\nconst FLOW_POST_MAX_HEIGHT = 800;\n\nconst DEFAULT_TIMEZONE = 'America/Los_Angeles';\n\nconst APP_CURRENCY = {\n NAME: APP_CURRENCY_NAME,\n NAME_TITLEIZED: titleize(APP_CURRENCY_NAME),\n NAME_ALL_CAPS: APP_CURRENCY_NAME.toUpperCase(),\n APP_CURRENCY_WITH_SPACES: ` ${APP_CURRENCY_NAME} `,\n};\n\nconst GET_APP_CURRENCY = (currency = {}) => {\n const APP_CURRENCY_STR = currency.singular || APP_CURRENCY_NAME;\n const APP_CURRENCY_PLURAL_STR = currency.plural || APP_CURRENCY_NAME;\n return {\n NAME: APP_CURRENCY_STR,\n NAME_PLURAL: APP_CURRENCY_PLURAL_STR,\n NAME_TITLEIZED: APP_CURRENCY_STR,\n NAME_TITLEIZED_PLURAL: APP_CURRENCY_PLURAL_STR,\n NAME_ALL_CAPS: APP_CURRENCY_STR.toUpperCase(),\n NAME_ALL_CAPS_PLURAL: APP_CURRENCY_PLURAL_STR.toUpperCase(),\n APP_CURRENCY_WITH_SPACES: ` ${APP_CURRENCY_STR} `,\n APP_CURRENCY_WITH_SPACES_PLURAL: ` ${APP_CURRENCY_PLURAL_STR} `,\n };\n};\n\nconst APP_VERBS = {\n RECOGNITION: APP_RECOGNITION,\n RECOGNITION_PAST: APP_RECOGNITION_PAST,\n RECOGNITION_TITLEIZED: titleize(APP_RECOGNITION),\n GAVE_RECOGNITION: 'recognized',\n MENTIONED: 'mentioned',\n};\n\nconst FLASHBAR_AUTOHIDE_DURATION = 3000;\n\nconst FLASHBAR_TYPES = {\n SUCCESS: 'success',\n FAILURE: 'error',\n INFO: 'info',\n};\n\nconst FEED_TYPES = {\n RECOGNITION: 'recognition',\n BIRTHDAY: 'birthday',\n ANNIVERSARY: 'anniversary',\n};\n\nexport { FLASHBAR_AUTOHIDE_DURATION, FLASHBAR_TYPES };\n\nconst AVATAR = {\n MIN_DIMENSIONS: {\n WIDTH: 220,\n HEIGHT: 220,\n },\n FILE_SIZE_LIMIT: 4 * 1000 * 1000,\n};\n\nconst CULTURE_REWARDS = {\n MIN_DIMENSIONS: {\n WIDTH: 150,\n HEIGHT: 150,\n },\n FILE_SIZE_LIMIT: 15 * 1000 * 1000,\n};\n\nconst CURRENCY = {\n SYMBOL: '$',\n};\n\nconst ALLOWANCE_TYPES = {\n REGULAR: 'regular',\n CUSTOM: 'custom',\n NO_ALLOWANCE: 'no',\n};\n\nconst REWARD_TYPES = {\n GIFT_CARD: 'gift card',\n CASH_EQUIVALENT: 'cash equivalent',\n DONATION: 'donation',\n};\n\nconst DEFAULT_COUNTRY = 'US';\n\nconst IMPACT_DATA = {\n small: {\n displayName: 'Small Impact',\n emoji: '🙂',\n },\n medium: {\n displayName: 'Medium Impact',\n emoji: '😀',\n },\n large: {\n displayName: 'Large Impact',\n emoji: '👏',\n },\n huge: {\n displayName: 'Huge Impact',\n emoji: '💪',\n },\n above: {\n displayName: 'Above & Beyond',\n emoji: '🚀',\n },\n};\n\nconst IMPACT_CUSTOM_OPTIONS_VALUES = {\n MANAGER_ONLY: 'MANAGER_ONLY',\n ADMINS_ONLY: 'ADMINS_ONLY',\n MANAGER_AND_CUSTOM_ALLOWANCES: 'MANAGER_AND_CUSTOM_ALLOWANCES_ONLY',\n EVERYONE: 'EVERYONE',\n};\n\nconst PRIVATE_MESSAGE_OPTIONS_VALUES = {\n MANAGER_ONLY: 'MANAGER_ONLY',\n ADMINS_ONLY: 'ADMINS_ONLY',\n MANAGER_AND_CUSTOM_ALLOWANCES: 'MANAGER_AND_CUSTOM_ALLOWANCES_ONLY',\n EVERYONE: 'EVERYONE',\n};\n\nconst IMPACT_CUSTOM_OPTIONS = [\n {\n label: 'Admins Only',\n value: IMPACT_CUSTOM_OPTIONS_VALUES.ADMINS_ONLY,\n },\n {\n label: 'Managers Only',\n value: IMPACT_CUSTOM_OPTIONS_VALUES.MANAGER_ONLY,\n },\n {\n label: 'Managers & Custom Allowances Only',\n value: IMPACT_CUSTOM_OPTIONS_VALUES.MANAGER_AND_CUSTOM_ALLOWANCES,\n },\n];\n\nconst PRIVATE_MESSAGE_OPTIONS = [\n {\n label: 'Admins Only',\n value: PRIVATE_MESSAGE_OPTIONS_VALUES.ADMINS_ONLY,\n },\n {\n label: 'Managers Only',\n value: PRIVATE_MESSAGE_OPTIONS_VALUES.MANAGER_ONLY,\n },\n {\n label: 'Managers & Custom Allowances Only',\n value: PRIVATE_MESSAGE_OPTIONS_VALUES.MANAGER_AND_CUSTOM_ALLOWANCES,\n },\n {\n label: 'Entire organization',\n value: PRIVATE_MESSAGE_OPTIONS_VALUES.EVERYONE,\n },\n];\n\nconst COOKIE_CONSTANTS = {\n FROM_IDENTITY_MANAGER_AUTHORIZE: 'FROM_IDENTITY_MANAGER_AUTHORIZE',\n SEEING_FIRST_TIME: 'SEEING-RECOGNITION-TIPS-FIRST-TIME',\n ASSEMBLY_TOKEN: 'assembly-token',\n ASSEMBLY_USER: 'assembly-user-data',\n};\n\nexport {\n AVATAR,\n CULTURE_REWARDS,\n CURRENCY,\n FEED_TYPES,\n REWARD_TYPES,\n DEFAULT_COUNTRY,\n GIVE_RECOGNITION_HEADER,\n GIVE_RECOGNITION,\n GIVE_RECOGNITION_CAPS,\n APP_CURRENCY,\n GET_APP_CURRENCY,\n APP_VERBS,\n APP_NAME,\n SLACK_COMMAND,\n IMPACT_DATA,\n IMPACT_CUSTOM_OPTIONS,\n IMPACT_CUSTOM_OPTIONS_VALUES,\n PRIVATE_MESSAGE_OPTIONS_VALUES,\n ALLOWANCE_TYPES,\n PRIVATE_MESSAGE_OPTIONS,\n COOKIE_CONSTANTS,\n FLOW_POST_MAX_HEIGHT,\n DEFAULT_TIMEZONE,\n};\n\nexport const ASSEMBLY_EMAILS = {\n SUPPORT: {\n LINK: 'mailto:support@joinassembly.com',\n TEXT: 'support@joinassembly.com',\n },\n};\n","import { createBrowserHistory } from 'history';\n\nexport default createBrowserHistory();\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputBase from '@material-ui/core/InputBase';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport classNames from 'classnames';\nimport themeV2 from '../../theme';\n\nexport const INPUT_HEIGHT = 44;\nconst TEXTAREA_HEIGHT = 160;\n\nexport const useStyles = makeStyles((theme) => ({\n margin: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n width: 'auto',\n },\n root: (props) => ({\n // height: 44,\n 'label + &': {\n marginTop: theme.spacing(1) * (props.hasLabel ? 2.5 : 0),\n },\n }),\n input: (props) => ({\n borderRadius: props.borderRadius || 10,\n border: `solid 1px ${themeV2.palette.lightGray1}`,\n position: 'relative',\n backgroundColor: theme.palette.common.white,\n color: themeV2.palette.darkText,\n fontFamily: themeV2.typography.fontFamily,\n fontStretch: 'normal',\n // lineHeight: `${props.height}px !important`,\n letterSpacing: 'normal',\n fontSize: 14,\n height: `${props.height}px !important`,\n boxSizing: 'border-box',\n padding: '13px 16px',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n fontWeight: themeV2.typography.fontWeightRegular,\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.1rem rgba(0,123,255,.25)',\n },\n }),\n error: (props) => ({\n border: `solid 1px ${themeV2.palette.red2}`,\n borderRadius: props.borderRadius || 10,\n position: 'relative',\n backgroundColor: theme.palette.common.white,\n color: themeV2.palette.red2,\n fontFamily: themeV2.typography.fontFamily,\n fontStretch: 'normal',\n // lineHeight: 44,\n letterSpacing: 'normal',\n fontSize: 14,\n height: `${props.height}px !important`,\n boxSizing: 'border-box',\n padding: '13px 16px',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n fontWeight: themeV2.typography.fontWeightRegular,\n '&:focus': {\n borderColor: themeV2.palette.red2,\n boxShadow: `0 0 0 0.1rem ${themeV2.palette.red2}`,\n },\n }),\n errorInput: {\n height: '100% !important',\n },\n formLabel: {\n fontFamily: themeV2.typography.fontFamily,\n color: themeV2.palette.darkText,\n fontWeight: themeV2.typography.fontWeightBold,\n fontSize: '14px',\n },\n formLabelFocused: {\n color: `${themeV2.palette.darkText} !important`,\n },\n errorFormLabel: {\n fontFamily: themeV2.typography.fontFamily,\n color: `${themeV2.palette.red2} !important`,\n fontWeight: themeV2.typography.fontWeightBold,\n },\n helperFormLabel: {\n fontFamily: themeV2.typography.fontFamily,\n fontSize: 12,\n color: themeV2.palette.darkGray3,\n fontWeight: themeV2.typography.fontWeightMedium,\n },\n}));\n\nfunction CustomTextField(props) {\n const {\n label,\n placeholder,\n style,\n error,\n type,\n rootStyle,\n value,\n onChange,\n className,\n id,\n onKeyPress,\n helperText,\n multiline,\n autoFocus,\n autoComplete,\n name,\n inputProps,\n ...rest\n } = props;\n const styleProps = {\n height: multiline ? TEXTAREA_HEIGHT : INPUT_HEIGHT,\n hasLabel: !!label || !!error,\n };\n const classes = useStyles(styleProps);\n return (\n \n \n {error || label}\n \n \n {helperText && (\n \n {helperText}\n \n )}\n \n );\n}\n\nCustomTextField.propTypes = {\n label: PropTypes.string,\n placeholder: PropTypes.string,\n type: PropTypes.string,\n helperText: PropTypes.string,\n multiline: PropTypes.bool,\n autoFocus: PropTypes.bool,\n value: PropTypes.string,\n id: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n rootStyle: PropTypes.PropTypes.shape({}),\n error: PropTypes.string,\n};\n\nCustomTextField.defaultProps = {\n placeholder: '',\n type: 'text',\n helperText: null,\n label: null,\n multiline: false,\n autoFocus: false,\n value: null,\n id: '',\n rootStyle: {},\n error: null,\n};\n\nexport default CustomTextField;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Link from '@material-ui/core/Link';\nimport themeV2 from '../../theme';\n\nconst styles = (theme) => ({\n label: {\n color: themeV2.palette.skyblue,\n '&:hover': {\n color: '#0092A3 !important',\n },\n '&:focus': {\n color: `${themeV2.palette.skyblue} !important`,\n },\n fontSize: themeV2.typography.fontSize,\n fontFamily: themeV2.typography.fontFamily,\n fontStretch: 'normal',\n lineHeight: 'normal',\n letterSpacing: 'normal',\n textDecoration: 'underline',\n },\n adminLabel: {\n // fontSize: themeV2.typography.fontSize,\n fontFamily: themeV2.typography.adminFontFamily,\n fontWeight: themeV2.typography.fontWeightSemibold,\n fontStretch: 'normal',\n lineHeight: 'normal',\n letterSpacing: 'normal',\n textDecoration: 'none',\n color: themeV2.palette.skyblue,\n '&:hover': {\n color: '#0092A3 !important',\n },\n '&:focus': {\n color: `${themeV2.palette.skyblue} !important`,\n },\n },\n});\n\nfunction CustomLink(props) {\n const { classes, children, className, component, ...rest } = props;\n return (\n \n {children}\n \n );\n}\n\nfunction AdminLinkComponent(props) {\n const { classes, children, className, component, ...rest } = props;\n return (\n \n {children}\n \n );\n}\n\nexport const AdminLink = withStyles(styles)(AdminLinkComponent);\n\nfunction AnchorLinkFunc(props) {\n const {\n classes,\n children,\n className,\n component,\n useAdminStyle,\n to,\n ...rest\n } = props;\n const linkStyleName = useAdminStyle ? classes.adminLabel : classes.label;\n return (\n \n {children}\n \n );\n}\n\nexport const AnchorLink = withStyles(styles)(AnchorLinkFunc);\n\nCustomLink.propTypes = {\n classes: PropTypes.object.isRequired,\n to: PropTypes.string.isRequired,\n};\n\nexport default withStyles(styles)(CustomLink);\n","import { inIframe } from '../window';\n\nconst WEB_APP_SOURCE = 'WEB_APP_SOURCE';\nexport const MS_TEAMS = 'MS_TEAMS';\n\nexport const setAppSource = (source: string) => {\n localStorage.setItem(WEB_APP_SOURCE, source);\n};\n\nexport const getAppSource = () => {\n return localStorage.getItem(WEB_APP_SOURCE);\n};\n\nexport const setMSTeamsAsSource = () => {\n setAppSource(MS_TEAMS);\n};\n\nexport const isSourceMSTeams = () =>\n localStorage.getItem(WEB_APP_SOURCE) === MS_TEAMS && inIframe();\n","export const NEED_A_BOOST_CONTENT = `We’ve found that Assembly works best when more of your team is\nparticipating regularly. Encourage more team members to give regularly to reach the next benchmark!`;\nexport const TOP_PERFORMER_CONTENT = `Congratulations on your engagement with Assembly. There’s a great\namount of recognition going on! With this level of engagement, you’ll start to reap the benefits of a \nculture of recognition. Keep it going!`;\nexport const DOING_GREAT_CONTENT = `You’re on your way to building a great Assembly. There’s a good \namount of activity happening! Encourage more people to engage, and your Assembly will be a top performer. \nGive recognition to keep the ball rolling.`;\nexport const TOP_PERFORMER_CONTENT_PROFILE_INFO = `A lot of your team has their profile information entered, \nwhich means everyone can celebrate each other on birthdays and anniversaries when their big days come. Keep it up!`;\nexport const DOING_GREAT_CONTENT_PROFILE_INFO = `A good amount of your team has their profile information entered, \nwhich means they’ll be celebrated on their birthdays and anniversaries. Get everyone in on the fun, and \nadd some more information!`;\nexport const NEED_A_BOOST_CONTENT_PROFILE_INFO = `Celebrating birthdays and anniversaries is a great way to boost team \nmorale. Keep adding profile information so everyone can join in on the fun! Need help?`;\nexport const NEED_A_BOOST_HEADER = 'Need a boost?';\nexport const DOING_GREAT_HEADER = 'Doing great';\nexport const TOP_PERFORMER_HEADER = 'Top performer!';\nexport const NEED_A_BOOST_BUTTON = 'Check out some tips';\nexport const GIVE_RECOGNITION_BUTTON = 'Give Recognition';\nexport const ADD_INFO_BUTTON = 'Add more information';\n\nexport const ACCORDING_SUMMARY_HEADER = 'Overall engagement rating';\nexport const ACCORDING_SUMMARY_SUBHEADER =\n 'Want to know more about our benchmarking system? Expand to learn more.';\nexport const BENCHMARK_TOP_PERFORMER_COMMENT = `Congratulations! Your team is taking full advantage of Assembly and \nengagement is in top shape. Keep it up.`;\nexport const BENCHMARK_DOING_GREAT_COMMENT = `Great job! Take a look at all of your engagement metrics below, and \nwe’ll give you some tips for taking your Assembly’s engagement from great to top performer.`;\nexport const BENCHMARK_NEED_A_BOOST_COMMENT = `Developing and nurturing a culture of recognition can take time. \nFind ways to help your team engage with Assembly to reach the next benchmark. Need some ideas?`;\nexport const BENCHMARK_NEED_A_BOOST_BUTTON =\n 'Book a call with a Customer Success Manager';\nexport const BENCHMARK_ERROR_HEADER =\n 'Error pulling overall engagement ranking';\nexport const BENCHMARK_ERROR_COMMENT = 'Please refresh this page to try again.';\nexport const BENCHMARK_ERROR_TOOLTIP = 'Error finding this data';\nexport const BENCHMARK_KEY_HEADER = 'Assembly’s Benchmarking Key';\nexport const BENCHMARK_KEY_CONTENT = `Insights benchmarking helps you understand all of the activity that’s going on \nwithin your Assembly. Based on different threshholds of company size and engagement, categories like Power Users, \nBirthday Adds, and more will be shown a level based on the percentile of activity. We aggregate these into an overall \nengagement rating for your Assembly. What does each level mean?`;\nexport const BENCHMARK_KEY_DOING_GREAT_CONTENT = `You’re doing a good job of making sure your employees are engaged \nwith Assembly. With that extra push, you’ll be a top performer.`;\nexport const BENCHMARK_KEY_NEED_BOOST_CONTENT = `Looks like you haven’t gotten in your groove, yet. Find ways to \nhelp your team engage with Assembly to reach the next benchmark.`;\nexport const BENCHMARK_TALK_WITH_MANAGER =\n 'Talk with a Customer Success Manager';\n\nexport const BENCHMARK_KEYS = [\n {\n icon: 'benchmark-top-performer',\n header: TOP_PERFORMER_HEADER,\n content: BENCHMARK_TOP_PERFORMER_COMMENT,\n },\n {\n icon: 'benchmark-doing-great',\n header: DOING_GREAT_HEADER,\n content: BENCHMARK_KEY_DOING_GREAT_CONTENT,\n },\n {\n icon: 'benchmark-need-boost',\n header: NEED_A_BOOST_HEADER,\n content: BENCHMARK_KEY_NEED_BOOST_CONTENT,\n },\n];\n","import React from 'react';\nimport Body from '../../../atomic/atoms/Body';\nimport Link from '../../../atomic/atoms/Link_V2';\n\nexport type PlanTier = {\n uniqueId: string;\n name: string;\n currency: {\n currency: string;\n value: number;\n };\n};\n\nexport const templateHeading = 'Upgrade Plan';\nexport const tiersRadioOptions = (\n tier4: PlanTier,\n tier3: PlanTier,\n tier2: PlanTier,\n) => [\n {\n value: tier4.uniqueId,\n label: `Upgrade to ${tier4.name} ($${tier4.currency.value} per user per month)`,\n },\n {\n value: tier3.uniqueId,\n label: `Upgrade to ${tier3.name} ($${tier3.currency.value} per user per month)`,\n },\n {\n value: tier2.uniqueId,\n label: `Upgrade to ${tier2.name} ($${tier2.currency.value} per user per month)`,\n },\n];\n\nexport const selectTierHeading = (\n tier1Name: string,\n tier2Name: string,\n tier3Name: string,\n tier4Name: string,\n) =>\n `Upgrade from the ${tier1Name} plan to ${tier2Name}, ${tier3Name}, or ${tier4Name} plan`;\nexport const selectTierSubHeadingHeader = 'Tip: ';\nexport const selectTierSubHeading = (\n tier2Name: string,\n tier3Name: string,\n tier4Name: string,\n) =>\n // eslint-disable-next-line max-len\n `${tier2Name} plan supports more features with limited access. ${tier3Name} plan supports most features with no access limits, and ${tier4Name} plan provides all features, no access limits, and dedicated support teams.`;\n\nexport const selectTierPrimaryButtonText = 'Next >';\nexport const selectTierSecondaryButtonText = 'Nevermind';\n\nexport const addPaymentPrimaryButtonText = 'Next >';\nexport const addPaymentSecondaryButtonText = '< Back';\n\nexport const addPaymentHeading = 'Setup your payment method ';\nexport const addPaymentSubHeadingHeader = 'Tip: ';\nexport const addPaymentSubHeading = `Our payment processor is PCI Compliant through Stripe`;\n\nexport const upgradeReviewHeading =\n 'Review billing and confirm payment for first month';\nexport const upgradeReviewSubHeadingHeader = 'Tip: ';\nexport const getUpgradeReviewSubHeading = ({\n newPlanName,\n renewalDate,\n price,\n}: {\n newPlanName: string;\n renewalDate: string;\n price: string;\n}) => (\n <>\n You’re upgrading your account to our monthly {newPlanName} plan.{' '}\n \n {renewalDate} is your next billing date\n {' '}\n and{' '}\n \n renew for {price}\n {' '}\n (subject to change based on seats and rewards).\n \n);\nexport const upgradeReviewPlanHeading = 'Your plan currently:';\nexport const getUpgradeReviewCardLast4DigitsDetail = (\n cardLast4Digits: string,\n) => (\n <>\n Charges will be billed to the card ending in{' '}\n \n {cardLast4Digits}\n \n \n);\nexport const getUpgradeReviewTeamMembersDetail = (\n teamMembersString: string,\n) => (\n <>\n Your Assembly has{' '}\n \n {teamMembersString}\n \n \n);\n\nexport const upgradePlanIntegrationInfo = (\n <>\n \n Get access to all of our integrations with a paid plan. Want to make sure\n we have yours? See our list of integrations{' '}\n \n here\n \n .\n \n \n);\n\nexport const upgradeReviewPrimaryButtonText = 'Confirm >';\nexport const upgradeReviewSecondaryButtonText = '< Back';\n\nexport const upgradeReviewInputPlaceholders = {\n name: 'Name as seen on card',\n cardNumber: '5555 0000 0000 1234',\n cardExpiration: 'Expiration date',\n cardCVC: 'CVC',\n promoCode: 'Promo code?',\n};\n","import React from 'react';\nimport { PulseLoader } from 'react-spinners';\nimport Grid from '@material-ui/core/Grid';\n\nimport themeV2 from '../../../componentsV2/theme';\n\nexport interface LoadingPulseProps {\n size?: number;\n hasPadding?: boolean;\n isLoading?: boolean;\n}\n\n// Adapted from LoadingPulse from shared components folder\nconst LoadingPulse = ({\n hasPadding,\n isLoading = true,\n size = 16,\n}: LoadingPulseProps) => (\n \n \n \n);\n\nexport default LoadingPulse;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\n\nconst styles = {\n card: {\n minWidth: 275,\n borderRadius: 10,\n border: 'none',\n backgroundColor: '#ffffff',\n padding: '43px 53px',\n boxShadow: '0px 10px 25px rgba(202,202,202,0.75);',\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n};\n\nfunction SimpleCard(props) {\n const { classes, children, style, className } = props;\n // const bull = ;\n return (\n \n {children}\n \n );\n}\n\nSimpleCard.propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n};\n\nexport default withStyles(styles)(SimpleCard);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport {\n HeadersWithoutAuthV2,\n AuthHeadersV2,\n} from '../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2, SOURCE } from '../../../config';\nimport { addSourceToURL } from '../../../Utils/api';\n\nconst apiEndpoints = {\n CREATE_ACCOUNT: `${API_URL_WITH_V2}/auth/onboard/register`,\n VERIFY_CODE: `${API_URL_WITH_V2}/auth/onboard/verifyCode`,\n RESEND_CODE: `${API_URL_WITH_V2}/auth/onboard/resendCode`,\n COMPLETE_PROFILE: `${API_URL_WITH_V2}/auth/onboard/completeProfile`,\n INVITE_EMAILS: `${API_URL_WITH_V2}/employer/employee/invite/emails`,\n};\n\nconst CREATE_ACCOUNT = '@sessions/V2/CREATE_ACCOUNT';\nexport const VERIFY_CODE = '@sessions/V2/VERIFY_CODE';\nexport const RESEND_CODE = '@sessions/V2/RESEND_CODE';\nconst SET_COMPANY_NAME = '@sessions/V2/SET_COMPANY_NAME';\nexport const COMPLETE_PROFILE = '@sessions/V2/COMPLETE_PROFILE';\nexport const INVITE_EMAILS = '@sessions/V2/INVITE_EMAILS';\n\nexport const createAccount = ({ email }) => ({\n type: CREATE_ACCOUNT,\n request: {\n url: apiEndpoints.CREATE_ACCOUNT,\n data: {\n email,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n email,\n },\n});\n\nexport const verifyCode = ({ userId, codeToVerify }) => ({\n type: VERIFY_CODE,\n request: {\n url: apiEndpoints.VERIFY_CODE,\n data: {\n userId,\n verifyCode: codeToVerify,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const resendCode = ({ userId }) => ({\n type: RESEND_CODE,\n request: {\n url: apiEndpoints.RESEND_CODE,\n data: {\n userId,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const setCompanyName = ({ companyName }) => ({\n type: SET_COMPANY_NAME,\n companyName,\n});\n\nexport const completeProfile = ({\n userId,\n companyName,\n fullName,\n password,\n phone,\n code,\n}) => ({\n type: COMPLETE_PROFILE,\n request: {\n url: apiEndpoints.COMPLETE_PROFILE,\n data: {\n userId,\n userFullName: fullName,\n password,\n employerName: companyName,\n phone,\n verifyCode: code,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const inviteEmails = ({ emails }) => ({\n type: INVITE_EMAILS,\n request: {\n url: addSourceToURL(apiEndpoints.INVITE_EMAILS, SOURCE),\n data: {\n emails,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\n// const onboardingReducer = (state = { companyName: null }, action) => {\n// switch (action.type) {\n// case SET_COMPANY_NAME:\n// return { ...state, companyName: action.companyName };\n// default:\n// return state;\n// }\n// };\n\nexport default requestsReducer({\n actionType: CREATE_ACCOUNT,\n onSuccess: (state, action, config) => {\n switch (action.type) {\n case success(CREATE_ACCOUNT):\n return { ...state, email: action.meta.email, data: action.data };\n default:\n return state;\n }\n },\n mutations: {\n [VERIFY_CODE]: { updateData: false },\n [COMPLETE_PROFILE]: { updateData: false },\n [INVITE_EMAILS]: { updateData: false },\n [RESEND_CODE]: { updateData: false },\n [SET_COMPANY_NAME]: {\n updateData: (state, action) => {\n switch (action.type) {\n case SET_COMPANY_NAME: {\n return { ...state.data, companyName: action.companyName };\n }\n default:\n return state;\n }\n },\n local: true,\n },\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport {\n apiCallAction,\n apiCallSuccessAction,\n apiCallErrorAction,\n} from './stateManagementConstants';\n\nconst useStateManagement = (reduxKey: string) => {\n const dispatch = useDispatch();\n const requestStartStateChange = useCallback(\n (requestDetails) =>\n dispatch(apiCallAction({ reduxKey, ...requestDetails })),\n [dispatch, reduxKey],\n );\n const requestSuccessStateChange = useCallback(\n (response) => dispatch(apiCallSuccessAction({ reduxKey, response })),\n [dispatch, reduxKey],\n );\n const requestErrorStateChange = useCallback(\n (error) => dispatch(apiCallErrorAction({ reduxKey, error })),\n [dispatch, reduxKey],\n );\n return {\n requestStartStateChange,\n requestSuccessStateChange,\n requestErrorStateChange,\n };\n};\n\nexport default useStateManagement;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { useState, useCallback } from 'react';\nimport axios from 'axios';\nimport useAPIStateManagement from '../useAPIStateManagement';\nimport { AuthHeadersV2 } from '../../modules/shared/HeaderToken';\nimport endpointInfo from '../../constants/endpoints';\n\nconst makeAPICall = async (url, type = 'GET', payload, params, headers) =>\n axios.request({\n url,\n method: type,\n data: payload,\n params,\n headers,\n });\n\nconst useRequest = (\n apiName,\n {\n // optimisticUI = false,\n onSuccess = null,\n onError = null,\n onRequestStart = null,\n initialLoadingState = false,\n resetResponseOnRequest = false,\n } = {},\n) => {\n const {\n requestErrorStateChange,\n requestStartStateChange,\n requestSuccessStateChange,\n } = useAPIStateManagement(apiName);\n\n /* const isOptimisticUI = Boolean(\n optimisticUI && requestObject.optimisticResponse,\n ); */\n const [isLoading, setLoading] = useState(initialLoadingState);\n const [error, setError] = useState();\n const [response, setResponse] = useState();\n // const [optimisticData, setOptimisticData] = useState();\n const fireRequest = useCallback(\n ({ payload = {}, params = {}, substitutions = {} } = {}) => {\n const { headers } = AuthHeadersV2();\n const requestDetails = endpointInfo[apiName];\n const { endpointURL, requestType } = requestDetails;\n let substitutedURL = endpointURL;\n Object.keys(substitutions).forEach((key) => {\n const substitution = substitutions[key];\n substitutedURL = substitutedURL.replace(`:${key}`, substitution);\n });\n setError();\n setLoading(true);\n if (resetResponseOnRequest) {\n setResponse();\n }\n requestStartStateChange({\n url: substitutedURL,\n method: requestType,\n params,\n data: payload,\n headers,\n });\n if (onRequestStart) {\n onRequestStart();\n }\n /* if (isOptimisticUI) {\n const optimisticData = requestObject.optimisticResponse(payload);\n onOptimisticUI && onOptimisticUI(optimisticData);\n setOptimisticData(optimisticData);\n } */\n return makeAPICall(substitutedURL, requestType, payload, params, headers)\n .then((responseData) => {\n if (onSuccess) {\n onSuccess(responseData);\n }\n setResponse(responseData);\n requestSuccessStateChange(responseData);\n return { response: responseData, error: null };\n })\n .catch((errorObject) => {\n if (onError) {\n onError(errorObject);\n }\n setError(errorObject);\n requestErrorStateChange(errorObject);\n return { response: null, error: errorObject };\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [\n apiName,\n resetResponseOnRequest,\n requestStartStateChange,\n onRequestStart,\n onSuccess,\n requestSuccessStateChange,\n onError,\n requestErrorStateChange,\n ],\n );\n\n const resetRequest = useCallback(() => {\n setLoading(false);\n setResponse(undefined);\n setError(undefined);\n }, []);\n\n return {\n response,\n isLoading,\n error,\n fireRequest,\n /* optimisticData, */\n resetRequest,\n };\n};\n\nexport default useRequest;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport Logger from '../../Utils/Logger';\n\n/*\n API Error Object\n {\n status: HTTP error codes\n code: ERROR_CODES see below\n values: Based on Error codes (string or object)\n message: string\n }\n*/\n\nconst ERROR_CODES = {\n CODE_100: 100, // Map based error details\n CODE_101: 101, // Array in error messages (Good to show bullet points)\n CODE_102: 102, // String error in message\n};\n\nexport function handleErrorAction(errorAction) {\n const error = {};\n if (errorAction.error) {\n const errorData = _.get(errorAction, ['error', 'response', 'data'], null);\n const errorStatus = _.get(errorAction, ['error', 'response', 'status'], 0);\n error.status = errorStatus;\n Logger(errorStatus);\n if (errorData) {\n error.code = errorData.code;\n Logger(errorData);\n switch (errorData.code) {\n case ERROR_CODES.CODE_100:\n error.message = 'Map based error';\n error.values = errorData.message;\n break;\n case ERROR_CODES.CODE_101:\n error.message = errorData.message;\n error.values = errorData.message.join(', ');\n break;\n case ERROR_CODES.CODE_102:\n error.message = errorData.message;\n error.values = errorData.message;\n break;\n default:\n break;\n }\n }\n }\n return error;\n}\n\nexport function nothing() {}\n","import axios, { Method } from 'axios';\nimport { AuthHeadersV2 } from '../modules/shared/HeaderToken';\nimport endpointInfo from '../constants/endpoints';\n\naxios.defaults.withCredentials = true;\ntype StringDictionary = Record;\n\nconst makeAxiosRequest = async (\n url: string,\n type: Method,\n payload: Record,\n params: StringDictionary,\n headers: StringDictionary,\n) =>\n axios.request({\n url,\n method: type,\n data: payload,\n params,\n headers,\n });\n\nexport const makeAPICall = (\n apiName: string,\n payload: any = {},\n params: StringDictionary = {},\n substitutions: Record = {},\n) => {\n const requestDetails = endpointInfo[apiName];\n let { endpointURL } = requestDetails;\n Object.keys(substitutions).forEach((key) => {\n const substitution = substitutions[key];\n endpointURL = endpointURL.replace(`:${key}`, substitution);\n });\n return makeAxiosRequest(\n endpointURL,\n requestDetails.requestType,\n payload,\n params,\n AuthHeadersV2().headers,\n );\n};\n\nexport const makeAPICallWithDataReturn = async (\n apiName: string,\n payload: any = {},\n params: StringDictionary = {},\n substitutions: Record = {},\n) => {\n const requestDetails = endpointInfo[apiName];\n let { endpointURL } = requestDetails;\n Object.keys(substitutions).forEach((key) => {\n const substitution = substitutions[key];\n endpointURL = endpointURL.replace(`:${key}`, substitution);\n });\n\n const { data } = await makeAxiosRequest(\n endpointURL,\n requestDetails.requestType,\n payload,\n params,\n AuthHeadersV2().headers,\n );\n return data;\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport * as EmailValidator from 'email-validator';\nimport { isValidPhoneNumber, parsePhoneNumber } from 'react-phone-number-input';\n\nconst FULL_NAME_REQ_ERROR = 'Name must be more than 3 characters long';\nconst FULL_NAME_NO_FIRST_LAST_ERROR =\n 'Sorry, both a first and last name is required';\nconst PASSWORD_REQ_ERROR = 'Password must be 6 characters long';\nconst DISPLAY_NAME_ERROR = 'Display name has errors';\nconst PHONE_NUMBER_INVALID_ERROR = 'Phone number is invalid';\n\nconst isValidFullNameWithSpaces = (fullname) => {\n if (fullname) {\n const trimmedName = fullname.trim();\n if (trimmedName.match(/^.*\\s.*$/)) {\n return true;\n }\n }\n return false;\n};\nconst validateNumbers = (value) => !value || value.match(/^\\d{1,}$/);\n\nconst validateFullName = (name) => {\n if (!name) {\n return FULL_NAME_REQ_ERROR;\n }\n const trimName = name.trim();\n if (trimName.length < 3) {\n return FULL_NAME_REQ_ERROR;\n }\n if (!isValidFullNameWithSpaces(name)) {\n return FULL_NAME_NO_FIRST_LAST_ERROR;\n }\n return null;\n};\n\nconst validatePhoneNumber = (phoneNumber) => {\n if (!phoneNumber || !parsePhoneNumber(phoneNumber)) {\n return null;\n }\n\n return !isValidPhoneNumber(phoneNumber) ? PHONE_NUMBER_INVALID_ERROR : null;\n};\n\nconst validatePassword = (password) => {\n if (!password) {\n return PASSWORD_REQ_ERROR;\n }\n const trimPassword = password.trim();\n if (trimPassword.length < 6) {\n return PASSWORD_REQ_ERROR;\n }\n return null;\n};\n\nconst isValidEmail = (email) => EmailValidator.validate(email);\n\nconst validateDisplayName = (displayName) => {\n if (displayName && !displayName.match(/^[a-zA-Z0-9.-]*$/)) {\n return DISPLAY_NAME_ERROR;\n }\n\n return null;\n};\n\nexport {\n validatePassword,\n validateFullName,\n isValidEmail,\n validateDisplayName,\n isValidFullNameWithSpaces,\n validateNumbers,\n validatePhoneNumber,\n};\n","export const STRENGTH_NONE = 'none';\nexport const STRENGTH_STRONG = 'strong';\nexport const STRENGTH_NORMAL = 'normal';\nexport const STRENGTH_WEAK = 'weak';\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport default (keys, hash) =>\n keys.reduce(\n (newHash, key) => (newHash && newHash[key] ? newHash[key] : null),\n hash,\n );\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { get } from 'lodash';\nimport { VERIFY_CODE, COMPLETE_PROFILE, INVITE_EMAILS, RESEND_CODE } from '.';\n\nexport const getRequestLoadingStatus = (state) =>\n state.v2Onboarding.pending > 0;\n\nexport const getEmailRegistered = (state) => state.v2Onboarding.email;\n\nexport const getCompanyName = (state) =>\n get(state, ['v2Onboarding', 'data', 'companyName'], null);\n\nexport const getVerifyRequestLoadingStatus = (state) =>\n state.v2Onboarding.mutations[VERIFY_CODE].pending > 0;\n\nexport const getCompleteProfileRequestLoadingStatus = (state) =>\n state.v2Onboarding.mutations[COMPLETE_PROFILE].pending > 0;\n\nexport const getInviteEmailRequestLoadingStatus = (state) =>\n state.v2Onboarding.mutations[INVITE_EMAILS].pending > 0;\n\nexport const getResendCodeRequestLoadingStatus = (state) =>\n state.v2Onboarding.mutations[RESEND_CODE].pending > 0;\n","/* eslint-disable max-len */\nexport const PLACEHOLDERS = {\n DEFAULT_TITLE_TEXT: 'Name your flow here...',\n DEFAULT_DESCRIPTION_TEXT: 'Add a description here (optional)',\n DEFAULT_ADD_BLOCK_TITLE_TEXT: 'Write your question or statement here...',\n INPUT_BLOCK_DESCRIPTION_TEXT: 'Enter Description...',\n};\n\nexport const BUILDER_ACTION_BLOCK = {\n TITLE_TEXT: 'Action',\n CHOOSE_ACTION_TYPE_ACCORDION_ITEM_TEXT: 'Choose an action type',\n ACTION_BLOCK_TITLE: 'Create an app',\n ACTION_BLOCK_DESCRIPTION:\n 'Automate workflows – collect, store, and discuss information.',\n};\n\nexport const BUILDER_TRIGGER_BLOCK = {\n TITLE_TEXT: 'Trigger',\n TYPE_ACCORDION_ITEM_TEXT: 'Choose a trigger type',\n ON_DEMAND_ACCORDION_HEADING_TEXT: 'On demand',\n ON_DEMAND_ACCORDION_BODY_TEXT:\n 'Manually prompt participants to answer the flow whenever you’d like.',\n SCHEDULED_DATE_TIME_ACCORDION_HEADING_TEXT: 'Scheduled date & time',\n SCHEDULED_DATE_TIME_ACCORDION_BODY_TEXT:\n 'Automatically prompt participants to answer the flow on a scheduled date and time.',\n NO_TRIGGER_ACCORDION_HEADING_TEXT: 'No trigger',\n NO_TRIGGER_ACCORDION_BODY_TEXT:\n 'Flows that don’t require prompting, participants can always answer the flow anytime.',\n TRIGGER_NOTIFICATION_ACCORDION_ITEM_TEXT: 'Trigger Notifications',\n CONFIGURATION_SETTINGS_ACCORDION_ITEM_TEXT: 'Configure Settings',\n DUE_DATE: 'due date',\n};\n\nexport const BUILDER_COMPLETION_BLOCK = {\n ERROR:\n 'You have errors in your flow - please fix them before you create the flow.',\n};\n\nexport const FLOW_NAME_MAX_LENGTH_ERROR = 'Maximum limit is 30 characters';\n\nexport const CONFIGURE_SETTINGS = {\n DEADLINE_CONFIGURATION_HEADING_TEXT:\n 'After it is triggered, how long do participants have to complete the form?',\n DEADLINE_CONFIGURATION_BODY_TEXT:\n 'After this, you’ll be able to set up reminder notifications so that participants know to fill it out.',\n SHORTCUT_CONFIGURATION_HEADING_TEXT:\n 'Can participants answer anytime outside of a triggered occurrence?',\n SHORTCUT_CONFIGURATION_BODY_TEXT:\n 'Enabling this will allow participants to answer this flow anytime from the Main or Flow feeds, regardless of whether or not the flow has been triggered.',\n SHORTCUT_CONFIGURATION_LINK_TEXT: ' Learn more about answer anytime',\n SHORTCUT_CONFIGURATION_LINK:\n 'https://www.joinassembly.com/articles/flows-to-dos-vs-answer-anytime-vs-view-feeds',\n SHORTCUT_CONFIGURATION_NO_TRIGGER_TOOLTIP_TEXT: `No trigger flows will always have this enabled. This is the only way participants can answer this flow without being prompted to do so.`,\n ALLOW_ANYTIME_CONFIGURATION_HEADING_TEXT:\n 'Allow participants to answer this flow anytime?',\n ALLOW_ANYTIME_CONFIGURATION_BODY_TEXT:\n 'Enabling this will allow participants to answer this flow anytime from the Main or Flow feeds, regardless of whether or not the flow has been triggered.',\n ONDEMAND_SET_DUE_DATE_HEADING_TEXT: 'Set a default due date',\n ONDEMAND_SET_DUE_DATE_BODY_TEXT:\n 'After it is triggered, how long do participants have to complete the form?',\n ONDEMAND_VALUE_CANNOT_BE_ZERO: 'cannot be set to 0.',\n};\n\nexport const CONFIGURE_SETTINGS_FLOW_START =\n 'What date should this flow start?';\nexport const CONFIGURE_SETTINGS_FLOW_RECUR = 'When should this flow recur?';\nexport const CONFIGURE_SETTINGS_ERROR_MESSAGE = {\n START_TIME_OCCURRED_IN_THE_PAST: 'Start time cannot occur in the past',\n END_TIME_OCCURRED_IN_THE_PAST: 'End time cannot occur in the past',\n DUE_DATE_CANNOT_BE_LONGER_THAN_FLOW_SCHEDULE:\n 'Due date cannot be longer than the flow schedule',\n};\nexport const CONFIGURE_SETTINGS_PICK_A_FREQUENCY = 'Pick a frequency';\nexport const CONFIGURE_SETTINGS_PICK_A_TIME = 'Pick a time';\nexport const CONFIGURE_SETTINGS_PICK_A_DATE = 'Pick a date';\nexport const REMINDER_EXTENDS_ERROR = 'Reminder extends beyond recurrence';\nexport const TIMEZONE_LABEL =\n 'In what time zone would you like to run this flow?';\nexport const CHOOSE_TIMEZONE = 'Choose a time zone';\n\nexport const CONFIGURE_SETTINGS_FLOW_END_BLOCK = {\n TITLE_TEXT: `When should this flow's schedule end?`,\n MANUALLY: {\n LABEL_TEXT: 'Never',\n INFO_TEXT: 'You’ll be able to end your flow from the flow’s feed.',\n },\n ON: 'On',\n DISABLED_INFO_TEXT:\n 'Since this flow will only run once, there’s no need to specify an ending.',\n};\n\nexport const ONLY_ONCE = 'Only once';\nexport const DAILY = 'Daily';\nexport const WEEKLY_ON = 'Weekly on';\nexport const BIWEEKLY_ON = 'Biweekly on';\nexport const QUARTERLY_ON_THE = 'Quarterly on the';\nexport const ANNUALLY_ON = 'Annually on';\nexport const EVERY_WEEKDAY = 'Every weekday (Monday-Friday)';\nexport const MINUTES = 'minutes';\nexport const HOURS = 'hours';\nexport const DAYS = 'days';\nexport const WEEKS = 'weeks';\n\nexport const BUILDER_PARTICIPANTS_BLOCK = {\n TITLE_TEXT: 'Participation',\n PARTICIPANTS_ACCORDION_ITEM_TEXT: 'Select participants',\n DESCRIPTION_TITLE_TEXT: 'Choose your participants by selecting criteria.',\n DESCRIPTION_CONTENT_TEXT:\n 'Choose a criteria to start, and see the filtered list on the right. Participants will be automatically added or removed from this list whenever they meet or do not meet the selected criteria.',\n};\n\nexport const BUILDER_PREVIEW_BLOCK = {\n ACCORDION_ITEM_TEXT: 'Finishing touches',\n TITLE:\n 'Before you create your flow, make sure it has a good, descriptive name.',\n DESCRIPTION:\n 'You’ll want your participants and viewers to be able to tell your routine apart from the rest. Add a unique name, emoji, and description to make sure people can identify it.',\n};\n\nexport const BUILDER_FLOW_CREATED_MODAL = {\n HEADING: 'Congrats, you created your flow!',\n ON_DEMAND_CONTENT_TITLE:\n 'Want to prompt participants to start answering right away? Run',\n SCHEDULED_START_ON: 'It is scheduled to start on',\n SCHEDULED_IN_THE_MEAN_TIME:\n 'In the meantime, you can view the flows feed or go to the main feed.',\n SCHEDULED_FLOW: {\n PRIMARY_BUTTON_TEXT: 'View main feed',\n SECONDARY_BUTTON_TEXT: 'View flow feed',\n },\n ON_DEMAND_FLOW: {\n PRIMARY_BUTTON_TEXT: 'Run Now',\n SECONDARY_BUTTON_TEXT: 'View flow feed',\n },\n NO_TRIGGER_CONTENT_TITLE: `Any participant can now answer this flow at any time. You can create a post in this flow now by clicking “Answer now” below or view other activity in the main feed.`,\n NO_TRIGGER_FLOW: {\n PRIMARY_BUTTON_TEXT: 'Answer now',\n SECONDARY_BUTTON_TEXT: 'View main feed',\n },\n QUICK_SETUP_CONTENT_TITLE:\n 'Your flow is done and ready to go! When the meeting that you linked to this flow starts, the flow will be triggered. If you need to customize it -- like adjust the scheduled time, edit block content, or change permissions -- you can do that from the ‘Builder’ tab of your',\n QUICK_SETUP: {\n PRIMARY_BUTTON_TEXT: 'Go to my flow’s feed',\n SECONDARY_BUTTON_TEXT: 'Go to main feed',\n },\n SHARE_THIS_FLOW: 'Share this flow',\n};\n\nexport const BUILDER_VISIBILITY_BLOCK = {\n TITLE_TEXT: 'Visibility',\n CONFIGURE_VISIBILITY_ACCORDION_ITEM_TEXT: 'Configure Visibility',\n RESPONSE_NOTIFICATIONS_VISIBILITY_ACCORDION_ITEM_TEXT:\n 'Response Notifications',\n CUSTOM_OPTION_TEXT:\n 'Flow owner will always have visibility, regardless of your criteria selection.',\n PARTICIPANTS_ONLY_OPTION_TEXT:\n 'Flow owner will always have visibility, even if they are not a participant.',\n ENTIRE_ORGANIZATION: 'Entire organization',\n PARTICIPANTS_ONLY: 'Participants only',\n OWNER_ONLY: 'Owner only',\n CUSTOM: 'Custom',\n BODY_CONTENT_TITLE: 'Who can see this flow’s responses?',\n BODY_CONTENT_SUBTITLE:\n 'The owner of the flow will always have visibility, and each participant can always view their own responses.',\n};\n\nexport const BUILDER_CONTENT_BLOCK = {\n TITLE_TEXT: 'Content',\n ADD_CONTENT_ACCORDION_ITEM_TEXT: 'Add your content',\n};\n\nexport const BUILDER_RIGHT_DRAWER_SETTINGS = {\n NAME_YOUR_FLOW: 'Name your flow',\n DESCRIPTION: 'Description (optional)',\n};\n\nexport const SHARE_SHEET_MODAL = {\n HEADING: 'Share',\n FLOW_MEMBERS: 'Flow members',\n DESCRIPTION:\n 'Share this flow with members of your workspace. Choosing participants will define who can respond to this flow, and choosing viewers will define who can view responses.',\n CHOOSE_PARTICIPANTS: 'Choose participants',\n CHOOSE_VIEWERS: 'Choose viewers',\n PARTICIPANTS_BLOCK: {\n MODAL_HEADING: 'Choose participants',\n DESCRIPTION: `Use criteria to select individual members or create an auto-updating\n list of particpants selected by department, email, and other\n criteria.`,\n TITLE: 'Select participants',\n },\n VIEWERS_BLOCK: {\n MODAL_HEADING: 'Choose viewers',\n DESCRIPTION:\n 'To select specific viewers, use the custom option below to select individual members or create an auto-updating list of viewers selected by department, email, and other criteria. ',\n },\n RESPONSE_SETTINGS: 'Response settings',\n RESPONSES_ARE: 'Responses are',\n NOT_ANONYMOUS: 'not anonymous',\n ANONYMOUS: 'anonymous',\n OPTIONALLY_ANONYMOUS: 'optionally anonymous',\n CHANGE_SETTINGS: 'Change settings',\n ANONYMOUS_SETTINGS_BLOCK: {\n MODAL_TITLE: 'Edit response settings',\n TITLE: 'Set response anonymity',\n SUBTITLE:\n 'You can choose to have all responses be anonymous, no responses be anonymous, or give respondents the option to decide. Changing this setting at any time will only apply going forward.',\n },\n LINK_SETTINGS_BLOCK: {\n MODAL_HEADING: 'Edit link access settings',\n },\n LINK_ACCESS_SETTINGS: 'Link access settings',\n ONLY_GROUP_I_SELECT_LABEL: 'Only people or groups I select',\n EVERYONE_CAN_ACCESS_LABEL: 'Everyone in this workspace',\n ANYONE_WITH_LINK_CAN_ACCESS_LABEL: 'Anyone with the link',\n WHO_CAN_ACCESS_FLOW_LABEL: `Who can access this flow’s link?`,\n CAN_ACCESS_FLOW_DESCRIPTION: `You can keep it restricted to people you choose or grant access to anyone.`,\n ANYONE_IN_WORKSPACE_LABEL: 'Anyone in this workspace',\n NO_ONE_SELECTED_LABEL: 'No one selected',\n SHARE_YOUR_FLOW_LABEL: 'Share your flow with following links',\n FLOWS_LINK_VISIBILITY_LABEL:\n 'Make this flow visible in everyone’s Flows list',\n ALL_RESPONSES_ARE_NOT_ANONYMOUS: 'All responses are not anonymous',\n ALL_RESPONSES_ARE_OPTIONALLY_ANONYMOUS: 'Anonymous responses are optional',\n ALL_RESPONSES_ARE_ANONYMOUS: 'All responses are anonymous',\n};\n\nexport const SCALE_LABEL = 'Scale';\nexport const DROPDOWN_LABEL = 'Dropdown';\nexport const OPEN_ENDED_LABEL = 'Open Ended';\nexport const FILE_UPLOAD_LABEL = 'File Upload';\nexport const GIF_SELECTOR_LABEL = 'Select a GIF';\nexport const MULTI_CHOICE_LABEL = 'Multiple Choice';\nexport const PERSON_SELECTOR_LABEL = 'Select Person';\nexport const GIVE_POINTS_STACK_LABEL = 'Give a person points';\nexport const GIVE_POINTS_STACK_EXISTING_LABEL =\n 'Give points stack • Limit 1 per flow';\n\nexport const ADD_LEFT_LABEL = 'Add Left Label';\nexport const ADD_MIDDLE_LABEL = 'Add Middle Label';\nexport const ADD_RIGHT_LABEL = 'Add Right Label';\nexport const COLLECT_LABEL = 'COLLECT';\nexport const ADVANCED_COLLECT_LABEL = 'ADVANCED COLLECT';\nexport const LIMIT_PERCENTAGE = 'Limit up to a percentage of allowance';\nexport const LIMIT_VALUE = 'Limit up to an exact value';\nexport const MINIMUM_CHARACTERS = 'Minimum characters';\nexport const MAXIMUM_CHARACTERS = 'Maximum characters';\nexport const SHOW_ALL_FORMATTING_OPTIONS =\n 'Show all formatting and attachment options';\nexport const MENTIONS_STRING = 'Mentions (@FirstNameLastName)';\nexport const PARTICIPANTS_CAN_SELECT = 'Participants can select';\nexport const CHOOSE_WHO_CAN_BE_SELECTED = 'Choose who can be selected';\nexport const A_RANGE = 'A range';\nexport const AN_EXACT_NUMBER = 'An exact number';\nexport const SAME_AS_PARTICIPANTS = 'Same as participants';\nexport const SAME_AS_VIEWERS = 'Same as viewers';\nexport const FORMS_EDITOR = {\n ADD_BLOCK_LABEL: 'Add a block to start building',\n ADD_ANOTHER_BLOCK_LABEL: 'Add another block',\n};\nexport const ONLY_ONE_PERSON = 'Only one person';\nexport const UNLIMITED_PEOPLE = 'Unlimited people';\nexport const BLOCK_SETTINGS = 'Block Settings';\nexport const CHOOSE_RANGE = 'Choose a range';\nexport const REMOVE_DESCRIPTION = 'Remove description';\nexport const ADD_DESCRIPTION = 'Add a description';\nexport const GIVEN_IN_POSTS = 'given in posts';\nexport const LIMIT_AMOUNT_OF = 'Limit the amount of ';\nexport const toolTipContentForPointsStack = (pluralCurrency: string) =>\n `Not all Assembly members have ${pluralCurrency} to give, so this can’t be made a required block.`;\n\nexport const FILE_UPLOAD_TITLE = 'Upload File';\nexport const FILE_UPLOAD_LIMIT = 'Maximum: 25MB or 15 files';\nexport const PERSON_SELECTOR_PLACEHOLDER_LABEL = 'Select a Person';\n\nexport const UPTO = 'up to';\n\nexport const ADD_YOUR_ANSWER = 'Add your answer(optional)';\nexport const DROPDOWN_SELECTOR_PLACEHOLDER_LABEL = 'Select an option';\n\nexport const GIVE_POINTS = 'Give Points';\nexport const BLOCK_MUST_BE_LINKED_TO = 'block is linked to a';\nexport const PERSON_SELECTION = 'Person Selection';\nexport const DELETING_GIVE_POINTS_STACK_TITLE = 'Deleting Give Points Stack';\nexport const DELETING_GIVE_POINTS_STACK_INFO =\n // eslint-disable-next-line max-len\n 'Deleting this Give Points block will also delete the linked Person Selection block. Please confirm this action.';\nexport const DELETING_LINKED_PERSON_SELECTOR_INFO =\n 'Deleting this Person Selection block will also delete the linked Give Points block. Please confirm this action.';\nexport const CUSTOM_RECURRENCE = 'Custom recurrence';\nexport const REPEAT_EVERY = 'Repeat every';\nexport const REPEAT_ON = 'Repeat on';\nexport const MONTHLY_ON_THE = 'Monthly on the';\nexport const ADD_MORE_CRITERIA_LABEL = 'Add more criteria';\nexport const ADD_PARTICIPANT_CRITERIA_LABEL = 'Add participant criteria';\nexport const ADD_SELECTABLE_CRITERIA = 'Add selectable criteria';\nexport const ADD_VISIBILITY_CRITERIA_LABEL = 'Add viewer criteria';\nexport const BUILDER_ADD_PARTICIPATION_CRITERIA = 'Add participant criteria';\n\nexport const MenuItemsTexts = {\n criteriaMenuItems: {\n PARTICIPANTS_MATCHES_ANY: 'Participant matches any',\n PARTICIPANTS_MATCHES_ALL: 'Participant matches all',\n },\n criteriaConditionItems: {\n OR_PARTICIPANT_MATCHES: 'Or participant matches',\n AND_PARTICIPANT_MATCHES: 'And participant matches',\n },\n};\n\nexport const CUSTOM_SELECTION = 'Custom Selection';\nexport const CUSTOM_PERSON_SELECTOR_BLOCK_SETTINGS =\n 'Using custom selection to limit the list of available people within the person selection block works just like participants or visibility. Use the Member criteria if you have a few people in mind.';\n\nexport const FLOW_BUILDER_CREATION_ERROR =\n 'Unable to create your flow at the moment. Please try again later.';\n\nexport const FLOW_BUILDER_EDIT_ERROR =\n 'Unable to save your flow at the moment. Please try again later.';\n\nexport const PERSON_SELECTOR_BUILDER_BLOCK_LABEL =\n 'Whomever the participant selects will receive the points specified in the linked block.';\n\nexport const LEARN_MORE_HELPER_LINK =\n 'https://www.joinassembly.com/articles/flows-builder';\nexport const AMOUNT_OF = 'amount of';\nexport const GET_HELP_LINK =\n 'https://www.joinassembly.com/articles/flows-sharing';\nexport const BUILDER_NAVIGATION_MODAL_TEXT = {\n CREATE_FLOW: {\n HEADING: 'Discard unfinished flow?',\n BUILDER_NAVIGATION_MODAL_PREFIX_TEXT: 'Are you sure you’d like to leave',\n BUILDER_NAVIGATION_MODAL_SUFFIX_TEXT:\n 'and discard it? Your progress won’t be saved, and you will need to start over when building it again.',\n PRIMARY_BUTTON: {\n TEXT: 'Discard flow',\n },\n SECONDARY_BUTTON: {\n TEXT: 'Keep building',\n },\n },\n EDIT_FLOW: {\n HEADING: 'Leaving edit mode',\n BUILDER_NAVIGATION_MODAL_PREFIX_TEXT:\n ' Are you sure you want to leave? If you made changes to',\n BUILDER_NAVIGATION_MODAL_SUFFIX_TEXT:\n ' , choose whether to save or revert them before you go. Or, click “Go back” to keep editing this flow.',\n PRIMARY_BUTTON: {\n TEXT: 'Save and leave',\n },\n SECONDARY_BUTTON: {\n TEXT: 'Revert and leave',\n },\n TERTIARY_BUTTON: {\n TEXT: 'Go back',\n },\n },\n};\n\nexport const HIDE_BUILDER_HEADER = 'The builder is only available on desktop';\nexport const HIDE_BUILDER_BODY =\n 'Please head to your nearest computer to edit this flow!';\n\nexport const FLOW_COMPLETION_GENERIC_ERROR_TEXT =\n 'Flow title and emoji are required';\nexport const FLOW_COMPLETION_EMOTICON_ERROR_TEXT = 'Emoji is required';\nexport const FLOW_COMPLETION_TITLE_ERROR_TEXT = 'Flow title is required';\n\nexport const NO_RESULTS = 'No results found';\nexport const ANSWER_ANYTIME = 'Answer anytime';\n\nexport const CREATE_FLOW_WITH_INVITE_MEMBERS = {\n HEADING: 'Invite new teammates to this flow',\n getAddedNewMembersInviteCountText: (count: number) =>\n `You added ${count} teammate who isn’t members of this Assembly yet:`,\n getInviteMemberDescription: (inviteText: string) =>\n `By clicking \"${inviteText}\" this invite will be sent out. When they accept the invite, this flow will be waiting for them once it runs.`,\n CREATE_AND_INVITE: 'Create and invite',\n SAVE_AND_INVITE: 'Save and invite',\n SECONDARY_BUTTON_TEXT: 'Go back',\n};\n\nexport const NOT_A_MEMBER_TOOLTIP_TEXT =\n 'This person is not a member of your Assembly, you’ll be prompted to invite them before you create this flow.';\n\nexport const PENDING_MEMBER_TOOLTIP_TEXT =\n 'This person is pending, they haven’t accepted their invite yet.';\n\nexport const INVITE_PENDING = 'Invite pending';\nexport const INVITE_UPON_FLOW_CREATION = 'Invite upon flow creation';\nexport const INVITE_UPON_SAVE = 'Invite upon save';\n\nexport const WELCOME_TO_BUILDER_TOAST = {\n title: 'Welcome to the builder!',\n subTitle:\n 'Create and edit your first flow from here. Get started with your first survey -- build and invite, or build a test run to see how it works.',\n};\n","import { YOU } from '../languages/en/home';\n\nimport {\n Profile,\n AllowanceType,\n UserStatus,\n MemberRole,\n QuickSetupData,\n MemberState,\n} from '../interfaces/user';\n\nimport { capitalizeFirstLetter } from './text';\nimport { FeedPostUserProps } from '../interfaces/Feed';\nimport { CurrentUser } from '../interfaces/currentUser';\nimport { IMemberDTO } from '../interfaces/member';\nimport { isEmpty } from 'lodash';\n\ninterface DisplayUserNameParamType {\n user: FeedPostUserProps;\n currentUserId: string;\n showOnlyFirstName?: boolean | undefined;\n}\n\ninterface SerializeUserProps {\n profile?: {\n firstName: string;\n lastName: string;\n };\n firstName?: string;\n lastName?: string;\n id?: string | number;\n}\n\nexport const serializeUser = (user: SerializeUserProps) => {\n const { profile } = user;\n if (profile) {\n return {\n ...user,\n profile: {\n ...profile,\n firstName: capitalizeFirstLetter(profile.firstName),\n lastName: capitalizeFirstLetter(profile.lastName),\n },\n };\n }\n return {\n ...user,\n firstName: capitalizeFirstLetter(user.firstName),\n lastName: capitalizeFirstLetter(user.lastName),\n };\n};\n\nexport const getFullName = (profile: Profile | FeedPostUserProps): string => {\n return isEmpty(profile?.firstName) && isEmpty(profile?.lastName)\n ? ''\n : `${profile?.firstName} ${profile?.lastName}`;\n};\n\nexport const getProfileFullName = ({\n firstName,\n lastName,\n}: {\n firstName: string;\n lastName: string;\n}) => {\n return `${firstName} ${lastName}`;\n};\n\nconst getIsCurrentUser = (userId: string, currentUserId: string) => {\n return currentUserId === userId;\n};\n\nexport const isUserAdmin = ({ role }: { role: MemberRole[] }) =>\n role.some((_role) => {\n return _role === MemberRole.Admin || _role === MemberRole.Owner;\n });\n\nexport const isUserOwner = ({ role }: { role: MemberRole[] }) =>\n role.some((_role) => {\n return _role === MemberRole.Owner;\n });\n\nexport const isUserManager = (user: CurrentUser) => user.profile.isManager;\n\nexport const getDisplayUserName = (param: DisplayUserNameParamType) => {\n const { user, currentUserId, showOnlyFirstName = false } = param;\n const isCurrentUser = getIsCurrentUser(user.memberID, currentUserId);\n if (isCurrentUser) {\n return YOU;\n }\n\n if (showOnlyFirstName) {\n return user.firstName;\n }\n\n return `${user.firstName} ${user.lastName}`;\n};\n\nexport const canCurrentUserGiveAllowance = (currentUser: CurrentUser) => {\n const { allowance } = currentUser;\n const hasCustomAllowanceOf0 =\n allowance.type === AllowanceType.CUSTOM && allowance.points === 0;\n const hasDefaultAllowanceOf0 =\n AllowanceType.REGULAR && allowance.points === 0;\n const hasNoAllowance =\n currentUser.allowance.type === AllowanceType.NO_ALLOWANCE;\n const isObserver = currentUser.status === UserStatus.OBSERVER;\n const isReceiver = currentUser.status === UserStatus.RECEIVER;\n\n if (\n hasCustomAllowanceOf0 ||\n hasNoAllowance ||\n isObserver ||\n isReceiver ||\n hasDefaultAllowanceOf0\n ) {\n return false;\n }\n return true;\n};\n\nexport const canCurrentUserGiveRecognition = (currentUser: CurrentUser) => {\n if (\n currentUser.status === UserStatus.OBSERVER ||\n currentUser.status === UserStatus.RECEIVER\n ) {\n return false;\n }\n return true;\n};\n\nexport const canMemberReceiveAllowance = (member: IMemberDTO) => {\n if (\n member.status === UserStatus.OBSERVER ||\n member.status === UserStatus.GIVER\n ) {\n return false;\n }\n return true;\n};\n\nexport const getQuickSetupProgress = (\n quickSetupData: QuickSetupData,\n isPremiumUser: boolean,\n) => {\n let value = 1;\n if (quickSetupData?.givenFirstRecognition) {\n value += 1;\n }\n if (quickSetupData?.isRewardsSet) {\n value += 1;\n }\n if (quickSetupData?.isIntegrationConnected) {\n value += 1;\n }\n if (quickSetupData?.isUserInvited) {\n value += 1;\n }\n if (isPremiumUser) {\n if (quickSetupData?.isBirthdaySet) {\n value += 1;\n }\n if (quickSetupData?.isAnniversarySet) {\n value += 1;\n }\n if (quickSetupData?.isCoreValuesSet) {\n value += 1;\n }\n return Math.round(value * 12.5);\n }\n return value * 20;\n};\n\nexport const isDeactivatedUser = (user: FeedPostUserProps) =>\n user?.memberState === MemberState.DEACTIVATED;\n\nexport const setCurrentUserFirstLogin = (isFirstLogin: boolean) => {\n localStorage.setItem('userFirstLogin', JSON.stringify(isFirstLogin));\n};\n\nexport const getCurrentUserFirstLogin = () => {\n const isFirstLoginVal = localStorage.getItem('userFirstLogin');\n if (isFirstLoginVal) {\n return JSON.parse(isFirstLoginVal) as boolean;\n }\n return false;\n};\n","export enum AllowanceType {\n REGULAR = 'regular',\n CUSTOM = 'custom',\n NO_ALLOWANCE = 'no',\n}\n\nexport enum AllowanceCycle {\n MONTHLY = 'monthly',\n}\n\nexport enum UserStatus {\n NORMAL = 'normal',\n RECEIVER = 'receiver',\n OBSERVER = 'observer',\n GIVER = 'giver',\n}\n\nexport enum MemberRole {\n Admin = 'Admin',\n Employee = 'Employee',\n Owner = 'Owner',\n}\nexport interface Profile {\n firstName: string;\n lastName: string;\n username: string;\n}\n\nexport enum MemberState {\n NEW = 'NEW',\n ACTIVE = 'ACTIVE',\n DEACTIVATED = 'DEACTIVATED',\n PENDING = 'PENDING',\n}\n\nexport interface User {\n _id: string;\n isDeleted: boolean;\n profile: Profile;\n firstName?: string;\n lastName?: string;\n image?: string;\n}\n\nexport interface QuickSetupData {\n givenFirstRecognition: boolean;\n isAnniversarySet: boolean;\n isBirthdaySet: boolean;\n isCoreValuesSet: boolean;\n isRewardsSet: boolean;\n isUserInvited: boolean;\n isIntegrationConnected: boolean;\n}\n\nexport interface Mention {\n id: string;\n name: string;\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport _ from 'lodash';\nimport { put } from 'redux-saga/effects';\nimport history from '../history';\nimport { API_URL_WITH_V2 } from '../config';\nimport { signOutAction } from './Session';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../containers/helpers/ErrorHelper';\nimport { AuthHeaders } from './shared/HeaderToken';\nimport Logger from '../Utils/Logger';\nimport { serializeUser, setCurrentUserFirstLogin } from '../Utils/user';\nimport { adminActions } from './Admin';\nimport { bootIntercom } from '../Utils/Intercom';\nimport {\n showSuccessMessage,\n showErrorMessage,\n showInfoMessage,\n} from '../Utils/flashHandler';\nimport {\n checkAdmin,\n getAllowanceTypeLiteralForUser,\n getUserStatusTypeLiteralForUser,\n} from '../Utils/admin';\nimport * as Analytics from '../Utils/analytics';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n GET_USER_INFO: `${API_URL_WITH_V2}/auth/user/info`,\n UPDATE_USER_ACCOUNT_SETTINGS: `${API_URL_WITH_V2}/user/settings/updateaccount`,\n GET_MY_REWARDS_HISTORY: `${API_URL_WITH_V2}/user/settings/history`,\n};\n\nexport const IMAGE_UPLOAD_STATUS = {\n BLANK: 'BLANK',\n SUCCESS: 'SUCCESS',\n FAILED: 'FAILED',\n};\n\nconst processError = (error = {}, dispatch) => {\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(meActions.requestFailed(ErrorMessages.serverError));\n break;\n case 403: // Forbidden\n // redirect to home\n history.push('/404');\n break;\n case 404: // Page not found\n dispatch(meActions.requestFailed(ErrorMessages.serverError));\n break;\n // mostly my error\n case 401: // Not authorised\n dispatch(signOutAction());\n break;\n case 422:\n /* falls through */\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n dispatch(meActions.requestFailed(msg));\n }\n break;\n default:\n dispatch(meActions.requestFailed(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const GET_MY_USER_INFO = 'GET_MY_USER_INFO';\nexport const GOT_MY_POINTS_TO_REDEEM = 'got_my_points_to_redeem';\nexport const GOT_MY_POINTS_TO_GIVE = 'got_my_points_to_give';\nexport const GOT_MY_DETAILS = 'got_my_details';\nexport const GOT_MY_IP_DETAILS = 'GOT_MY_IP_DETAILS';\nexport const GOT_MY_REWARDS_HISTORY = 'got_my_rewards_history';\nexport const PROFILE_IMAGE_UPLOAD_SUCCESS = 'PROFILE_IMAGE_UPLOAD_SUCCESS';\nexport const PROFILE_IMAGE_UPLOAD_RESET = 'PROFILE_IMAGE_UPLOAD_RESET';\nexport const PROFILE_IMAGE_UPLOAD_FAILURE = 'PROFILE_IMAGE_UPLOAD_FAILURE';\nexport const REQUEST_FAILED = 'me_request_failed';\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst gotMyPointsToRedeem = (pointsEarned) => ({\n type: GOT_MY_POINTS_TO_REDEEM,\n pointsEarned,\n});\n\nconst gotMyPointsToGive = (pointsToGive) => ({\n type: GOT_MY_POINTS_TO_GIVE,\n pointsToGive,\n});\n\nconst gotMyDetails = (me) => ({\n me,\n type: GOT_MY_DETAILS,\n});\n\nconst gotMyIPDetails = (details) => ({\n type: GOT_MY_IP_DETAILS,\n details,\n});\n\nconst gotMyRewardsHistory = (myRewardsHistory) => ({\n myRewardsHistory,\n type: GOT_MY_REWARDS_HISTORY,\n});\n\nconst profileImageUploadedSuccessfully = () => ({\n type: PROFILE_IMAGE_UPLOAD_SUCCESS,\n});\nconst profileImageUploadFailed = () => ({\n type: PROFILE_IMAGE_UPLOAD_FAILURE,\n});\n\nconst resetImageUpload = () => ({\n type: PROFILE_IMAGE_UPLOAD_RESET,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const meActions = {\n gotMyPointsToRedeem,\n gotMyPointsToGive,\n requestFailed,\n gotMyDetails,\n gotMyRewardsHistory,\n resetImageUpload,\n profileImageUploadedSuccessfully,\n profileImageUploadFailed,\n gotMyIPDetails,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getUserInfoAction =\n () =>\n // Logger(\"getUserInfoAction\", true);\n async (dispatch) => {\n try {\n const me = JSON.parse(localStorage.getItem('user'));\n updateMyDetails(me, dispatch);\n\n const res = await axios.get(apiEndpoints.GET_USER_INFO, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n Logger(AuthHeaders(), false);\n if (result.success) {\n const { user, employer, currency } = result.data;\n // user = {...user, userRoles : result.data.userRoles};\n dispatch(meActions.gotMyPointsToRedeem(user.pointsEarned));\n updateMyDetails(user, dispatch);\n dispatch(adminActions.gotMyEmployer(employer));\n dispatch(adminActions.gotCompanyDetails({ currency }));\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n\nexport const getUpdatedCurrencyAction =\n () =>\n // Logger(\"getUserInfoAction\", true);\n async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.GET_USER_INFO, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n Logger(AuthHeaders(), false);\n if (result.success) {\n const { currency } = result.data;\n dispatch(adminActions.gotCompanyDetails({ currency }));\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n\nexport function* userInfoSaga() {\n const res = yield axios.get(apiEndpoints.GET_USER_INFO, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const { user, employer, currency } = result.data;\n yield put(meActions.gotMyPointsToRedeem(user.pointsEarned));\n updateMyDetails(user);\n yield put(meActions.gotMyDetails(user));\n yield put(adminActions.gotMyEmployer(employer));\n yield put(adminActions.gotCompanyDetails({ currency }));\n }\n}\n\nexport const updateMySettingsAction =\n (props) =>\n // Request\n // firstName\n // lastname\n // department\n // file (profileImage)\n // Notifications (ALL BOOLEAN)\n // carrotNotif(Notify me when I receive new Carrots)\n // allowanceNotif(Remind me if I forget to use my allowance)\n // anniversaryNotif(Inform me of my Workaversary and Birthday)\n // commentsNotif(Notify me of comments on posts I’m apart of)\n // activityNotif(Notify me of other fun and/or interesting activity)\n\n async (dispatch) => {\n dispatch(showInfoMessage('Saving your changes...'));\n try {\n const res = await axios.post(\n apiEndpoints.UPDATE_USER_ACCOUNT_SETTINGS,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(showSuccessMessage('Your changes has been saved.'));\n const { user } = result.data;\n // user = {...user, userRoles : result.data.userRoles};\n updateMyDetails(user, dispatch);\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\nexport const updateMyProfileImageAction =\n (props) =>\n // Request\n // firstName\n // lastname\n // department\n // file (profileImage)\n // Notifications (ALL BOOLEAN)\n // carrotNotif(Notify me when I receive new Carrots)\n // allowanceNotif(Remind me if I forget to use my allowance)\n // anniversaryNotif(Inform me of my Workaversary and Birthday)\n // commentsNotif(Notify me of comments on posts I’m apart of)\n // activityNotif(Notify me of other fun and/or interesting activity)\n\n async (dispatch) => {\n dispatch(showInfoMessage('Uploading your profile pic...'));\n try {\n const res = await axios.post(\n apiEndpoints.UPDATE_USER_ACCOUNT_SETTINGS,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(showSuccessMessage('Profile pic updated successfully'));\n const { user } = result.data;\n // user = {...user, userRoles : result.data.userRoles};\n updateMyDetails(user, dispatch);\n dispatch(meActions.profileImageUploadedSuccessfully());\n }\n } catch (error) {\n processError(error, dispatch);\n dispatch(meActions.profileImageUploadFailed());\n dispatch(\n showErrorMessage('Whoops, Image upload failed. Please try again.'),\n );\n }\n };\nexport const getMyRewardsAction =\n () =>\n // Response\n // My life time carrots earned and money cashed out\n // ALL Rewards claimes\n\n async (dispatch) => {\n try {\n const res = await axios.get(\n apiEndpoints.GET_MY_REWARDS_HISTORY,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(\n meActions.gotMyRewardsHistory(\n result.data ? result.data.history : null,\n ),\n );\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n\nconst postAuthActions = (user) => {\n const firstName = _.get(user, ['profile', 'firstName'], '');\n const lastName = _.get(user, ['profile', 'lastName'], '');\n const name = `${firstName} ${lastName}`;\n const assemblyId = _.get(user, ['employerId'], '');\n bootIntercom({\n email: user.email,\n user_id: user._id,\n name,\n firstName,\n lastName,\n isAdmin: checkAdmin(user.role),\n externalId: user._id,\n userShoutoutStatus: getUserStatusTypeLiteralForUser(user),\n allowanceType: getAllowanceTypeLiteralForUser(user),\n });\n Analytics.identifyUserForAnalytics(user._id, {\n email: user.email,\n name,\n isAdmin: checkAdmin(user.role),\n assemblyId,\n });\n};\n\nexport const updateMyDetails = (me, dispatch) => {\n localStorage.setItem('user', JSON.stringify(me));\n if (me && me.isFirstLogin !== undefined && me.isFirstLogin !== null) {\n setCurrentUserFirstLogin(me.isFirstLogin);\n }\n postAuthActions(me);\n if (window.raven) {\n window.Raven.setUserContext({\n email: me.email,\n id: me._id,\n });\n }\n if (dispatch) {\n dispatch(meActions.gotMyDetails(me));\n }\n};\n\nexport const getMyIPDetails = () => async (dispatch) => {\n try {\n const ipStackURL = 'https://ipapi.co/json/';\n // `http://api.ipstack.com/check?access_key=${IP_STACK_ACCESS_TOKEN}`\n const res = await axios.get(ipStackURL);\n const result = res.data;\n Logger(result, true);\n\n if (result.country) {\n // country_code\n dispatch(meActions.gotMyIPDetails({ countryCode: result.country }));\n }\n } catch (error) {\n processError(error, dispatch);\n }\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case GOT_MY_POINTS_TO_REDEEM:\n return { ...state, pointsEarned: action.pointsEarned };\n case GOT_MY_POINTS_TO_GIVE:\n return { ...state, pointsToGive: action.pointsToGive };\n case GOT_MY_DETAILS: {\n const me = serializeUser(action.me);\n return { ...state, me };\n }\n case GOT_MY_IP_DETAILS:\n return {\n ...state,\n ipDetails: { countryCode: action.details.countryCode },\n };\n case GOT_MY_REWARDS_HISTORY:\n return { ...state, myRewardsHistory: action.myRewardsHistory };\n case PROFILE_IMAGE_UPLOAD_SUCCESS:\n return { ...state, imageUploadStatus: IMAGE_UPLOAD_STATUS.SUCCESS };\n case PROFILE_IMAGE_UPLOAD_FAILURE:\n return { ...state, imageUploadStatus: IMAGE_UPLOAD_STATUS.FAILED };\n case PROFILE_IMAGE_UPLOAD_RESET:\n return { ...state, imageUploadStatus: IMAGE_UPLOAD_STATUS.BLANK };\n case REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","export enum ReactionType {\n REGULAR = 'REGULAR',\n CUSTOM = 'CUSTOM',\n}\n\nexport interface ReactionMember {\n name: string;\n memberID: string;\n}\n\nexport type PostReaction = {\n name: string;\n type: ReactionType;\n value: string;\n displayName?: string;\n members: ReactionMember[];\n};\n","import mixpanel from 'mixpanel-browser';\nimport { isSourceMSTeams } from '../msteams';\nimport {\n AnalyticsEvents,\n ANALYTICS_EVENTS,\n FEED_EVENTS,\n LEFT_DRAWER_EVENT_NAME,\n RIGHT_DRAWER_EVENT_NAME,\n} from './constants';\nimport { GET_PLATFORM, MIXPANEL_KEY } from '../../config';\n\nimport { getUserAnniversary, getUserBirthday } from '../admin';\n\nimport {\n EventPropsType,\n FeedAnalyticsEventProps,\n FeedEventNameType,\n LeftDrawerEventNameType,\n LeftDrawerEventProps,\n ParticipationAnalyticsEventProps,\n ParticipationEventNameType,\n PostAnalyticsEventProps,\n PostEventNameType,\n RightDrawerEventNameType,\n RightDrawerEventProps,\n SuperProps,\n TrackLeftDrawerEventProps,\n UserProps,\n} from './interfaces';\n\nimport { CurrentUser } from '../../interfaces/currentUser';\nimport { isUserAdmin, isUserManager } from '../user';\nimport { getFlowPerms } from '../flows/feeds';\n\nconst getUserID = () => {\n const user = localStorage.getItem('user');\n if (user) {\n const me = JSON.parse(user);\n return me._id;\n }\n return null;\n};\n\nconst initAnalytics = () => {\n mixpanel.init(MIXPANEL_KEY);\n};\n\nconst initDataDogRum = () => {\n // datadogRum.init({\n // applicationId: DATA_DOG.APPLICATION_ID,\n // clientToken: DATA_DOG.CLIENT_TOKEN,\n // site: 'datadoghq.com',\n // service: 'assembly',\n // env: DATA_DOG.ENV,\n // version: '1.0.0',\n // sampleRate: 100,\n // trackInteractions: false,\n // });\n //\n // datadogRum.startSessionReplayRecording();\n};\n\nconst identifyUserForAnalytics = (\n userId: string,\n {\n email,\n name,\n isAdmin,\n assemblyId,\n }: { email: string; name: string; isAdmin: boolean; assemblyId: string },\n) => {\n mixpanel.identify(userId);\n mixpanel.register({\n Email: email,\n Name: name,\n isAdmin,\n Platform: GET_PLATFORM(isSourceMSTeams()),\n assemblyId,\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // DD_RUM.onReady(function () {\n // // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // // @ts-ignore\n // DD_RUM.setUser({\n // id: userId,\n // name,\n // email,\n // });\n // });\n // mixpanel.track('UserOnline');\n};\n\nconst signoutEvent = () => {\n mixpanel.reset();\n};\n\nconst optOutFromTracking = () => {\n mixpanel.opt_out_tracking();\n};\n\n// const registerPageView = (pageName: string) => {\n// let pageURL = '';\n// let referrer = '';\n// if (window) {\n// pageURL = window.location.href;\n// referrer = document.referrer;\n// }\n// mixpanel.register({\n// 'Page Name': pageName,\n// Platform: GET_PLATFORM(isSourceMSTeams()),\n// 'Page URL': pageURL,\n// 'Referrer URL': referrer,\n// });\n// mixpanel.track(ANALYTICS_EVENTS.PAGE_VIEW);\n// };\n\nconst trackPageView = (pageName: string) => {\n let pageURL = '';\n let referrer = '';\n if (window) {\n pageURL = window.location.href;\n referrer = document.referrer;\n }\n const eventProps = {\n 'Page Name': pageName,\n Platform: GET_PLATFORM(isSourceMSTeams()),\n 'Page URL': pageURL,\n 'Referrer URL': referrer,\n };\n mixpanel.track(ANALYTICS_EVENTS.PAGE_VIEW, eventProps);\n};\n\nconst registerSuperProps = (superProps: Partial) => {\n mixpanel.register(superProps);\n};\n\nconst registerUserProps = (userProps: Partial) => {\n const userID = getUserID() || userProps?.$distinct_id;\n if (userID) {\n mixpanel.identify(userID);\n mixpanel.people.set(userProps);\n }\n};\n\nconst registerPropsFromUser = (user: CurrentUser) => {\n const isAdmin = isUserAdmin(user);\n const isManager = isUserManager(user);\n const Department = user.profile.department || '';\n const allowanceType = user.allowance.type;\n const allowanceValue = user.allowance.points;\n const userStatus = user.status;\n const totalPointsGiven = user.totalPointsGiven;\n const birthday = getUserBirthday(user);\n const hiredday = getUserAnniversary(user);\n const userProps: Partial = {\n Platform: GET_PLATFORM(isSourceMSTeams()),\n isAdmin,\n isManager,\n Department,\n 'Allowance Type': allowanceType,\n 'Total Allowance': allowanceValue,\n 'User Status': userStatus,\n 'Total Points Given': totalPointsGiven,\n Birthday: birthday,\n Anniversary: hiredday,\n };\n const superProps: Partial = {\n Platform: GET_PLATFORM(isSourceMSTeams()),\n isAdmin,\n isManager,\n Department,\n 'Allowance Type': allowanceType,\n 'Total Allowance': allowanceValue,\n 'User Status': userStatus,\n 'Total Points Given': totalPointsGiven,\n };\n\n registerUserProps(userProps);\n registerSuperProps(superProps);\n};\n\nconst trackEvent = (\n eventName: string,\n userProps?: Partial,\n eventProps?: EventPropsType,\n superProps?: Partial,\n) => {\n if (superProps) {\n registerSuperProps(superProps);\n }\n if (userProps) {\n registerUserProps(userProps);\n }\n mixpanel.track(eventName, eventProps);\n};\n\nconst trackFeedEvent = (\n action: FeedEventNameType,\n eventProps: FeedAnalyticsEventProps,\n) => {\n trackEvent(FEED_EVENTS, undefined, {\n ...eventProps,\n action: action,\n event: AnalyticsEvents.ACTION,\n });\n};\n\nconst trackPostEvent = (\n eventName: PostEventNameType,\n eventProps: PostAnalyticsEventProps,\n) => {\n trackEvent(eventName, undefined, eventProps);\n};\n\nconst trackRightDrawerEvent = (\n action: RightDrawerEventNameType,\n eventProps: RightDrawerEventProps,\n) => {\n trackEvent(RIGHT_DRAWER_EVENT_NAME, undefined, {\n ...eventProps,\n action: action,\n event: AnalyticsEvents.ACTION,\n });\n};\n\nconst trackParticipationFlowEvents = (\n participationEventName: ParticipationEventNameType,\n participationEventProps: ParticipationAnalyticsEventProps,\n) => {\n trackEvent(participationEventName, undefined, participationEventProps);\n};\n\nconst trackMainFeedActionBarEvent = (\n eventName: string,\n eventProps: EventPropsType,\n) => {\n trackEvent(eventName, undefined, eventProps);\n};\n\nconst trackLeftDrawerEvent = (\n action: LeftDrawerEventNameType,\n args?: TrackLeftDrawerEventProps,\n) => {\n const eventProps: LeftDrawerEventProps = {\n notificationTypeClicked: args?.notificationTypeClicked,\n flowId: args?.flowId || args?.id,\n flowName: args?.label,\n flowPerms: getFlowPerms({\n isFlowOwner: args?.isFlowOwner || false,\n isFlowViewer: args?.isFlowViewer || false,\n isFlowParticipant: args?.isFlowParticipant || false,\n }),\n flowIsDue: !!args?.occurrence?.activeOccurrence,\n flowOccurrenceRunning: !!args?.occurrence?.activeOccurrence,\n isArchived: args?.isArchived || false,\n postId: args?.postId,\n responseId: args?.responseId,\n };\n\n trackEvent(LEFT_DRAWER_EVENT_NAME, undefined, {\n ...eventProps,\n action: action,\n event: AnalyticsEvents.ACTION,\n });\n};\n\nexport {\n initAnalytics,\n initDataDogRum,\n optOutFromTracking,\n identifyUserForAnalytics,\n trackPageView,\n trackEvent,\n trackFeedEvent,\n trackPostEvent,\n trackRightDrawerEvent,\n trackParticipationFlowEvents,\n trackLeftDrawerEvent,\n signoutEvent,\n registerPropsFromUser,\n registerSuperProps,\n registerUserProps,\n trackMainFeedActionBarEvent,\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport moment from 'moment-timezone';\nimport { DEFAULT_TIMEZONE } from '../constants';\nimport timezones from '../data/timezones/index.json';\n\nconst BEGIN_YEAR = 1972;\nconst START_YEAR = 1950;\n\nexport const getMonthFromDateObject = (dateObject) => {\n if (!dateObject.month && !dateObject.monthNumber) {\n return '';\n }\n if (dateObject.month) {\n return dateObject.month;\n }\n return moment.months(dateObject.monthNumber - 1);\n};\n\nexport const getMonthsToShow = () => {\n return moment.months().map((mon) => {\n return {\n value: mon,\n label: mon,\n };\n });\n};\n\nconst isFeb = (month) => moment().month(month).month() === 1;\n\nexport const getDaysForMonth = (month) => {\n const monthMoment = moment([1971, moment().month(month).month()]);\n const daysInMonth = isFeb(month)\n ? monthMoment.daysInMonth() + 1\n : monthMoment.daysInMonth();\n return Array.from({ length: daysInMonth }, (v, k) => ({\n value: k + 1,\n }));\n};\n\nexport const getDateFromDateObject = (dateObject) => {\n if (!dateObject) {\n return null;\n }\n const { month, monthNumber, year = BEGIN_YEAR, date } = dateObject;\n\n if (month) {\n return moment(`${year} ${month} ${date}`, 'YYYY MMMM DD');\n }\n return moment(`${year} ${monthNumber} ${date}`, 'YYYY MM DD');\n};\n\nexport const getDateObjectFromMomentDate = (momentDate) => {\n if (!momentDate) {\n return null;\n }\n const date = momentDate.date();\n const month = momentDate.format('MMMM');\n const monthNumber = Number(momentDate.format('M'));\n const year = Number(momentDate.format('YYYY'));\n return {\n date,\n month,\n monthNumber,\n year,\n };\n};\n\nexport const validateMonthDayAndYear = (month, day, year = BEGIN_YEAR) => {\n const monthMoment = moment([year, moment().month(month).month(), day]);\n return monthMoment.isValid();\n};\n\nexport const getHireYearOptions = () => {\n let END_YEAR = moment().year() + 1;\n const yearOptions = [];\n while (START_YEAR < END_YEAR) {\n yearOptions.push({ value: END_YEAR });\n END_YEAR -= 1;\n }\n return yearOptions;\n};\n\nexport const getDatePhrase = (date) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n return `${moment.monthsShort()[month]} ${day}, ${year}`;\n};\n\nexport const getStartDay = (date) => moment.utc(date).startOf('day').toDate();\n\nexport const getEndDay = (date) => moment.utc(date).endOf('day').toDate();\n\nexport const getMonthByNumber = (monthNumber) => {\n const monthsMap = {\n 1: 'January',\n 2: 'February',\n 3: 'March',\n 4: 'April',\n 5: 'May',\n 6: 'June',\n 7: 'July',\n 8: 'August',\n 9: 'September',\n 10: 'October',\n 11: 'November',\n 12: 'December',\n };\n\n return monthsMap[monthNumber];\n};\n\nexport const getAbbreviatedMonthByNumber = (monthNumber) => {\n const abbreviatedMonthsMap = {\n 1: 'Jan',\n 2: 'Feb',\n 3: 'Mar',\n 4: 'Apr',\n 5: 'May',\n 6: 'Jun',\n 7: 'Jul',\n 8: 'Aug',\n 9: 'Sep',\n 10: 'Oct',\n 11: 'Nov',\n 12: 'Dec',\n };\n\n return abbreviatedMonthsMap[monthNumber];\n};\n\nexport const getLocalTimeAtTimeZone = (ianaTimeZone, format = 'h:mma (z)') => {\n const localTime = moment();\n const convertedTime = moment.tz(localTime, ianaTimeZone);\n return convertedTime.format(format);\n};\n\nexport const changeTimezone = (date, ianatz = DEFAULT_TIMEZONE) => {\n // suppose the date is 12:00 UTC\n const invdate = new Date(\n date.toLocaleString('en-US', {\n timeZone: ianatz,\n }),\n );\n\n // then invdate will be 07:00 in Toronto\n // and the diff is 5 hours\n const diff = date.getTime() - invdate.getTime();\n\n // so 12:00 in Toronto is 17:00 UTC\n return new Date(date.getTime() - diff); // needs to substract\n};\n\nexport const mapTimezoneValue = (timezoneValue) => {\n let filteredTimezone = timezones.filter(\n (timezone) => timezone.key === timezoneValue,\n );\n if (filteredTimezone.length === 0) {\n filteredTimezone = timezones.filter((timezone) =>\n timezone.otherUtc.includes(timezoneValue),\n );\n }\n if (filteredTimezone.length > 0) {\n return filteredTimezone[0].value;\n }\n return undefined;\n};\n\nexport const detectTimezone = () => {\n const detectedValue = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const hasValue = mapTimezoneValue(detectedValue);\n if (hasValue !== undefined && hasValue.length > 0) {\n return detectedValue;\n }\n return null;\n};\n\nexport const getCurrentTimeInTimeZone = (timeZone) => {\n if (timeZone) {\n const hasValue = mapTimezoneValue(timeZone);\n if (hasValue !== '' || hasValue !== undefined) {\n const now = new Date();\n const res = new Date(now.toLocaleString('en-US', { timeZone }));\n const time = res.toLocaleString('en-US', {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n });\n const timezoneCode = moment.tz(timeZone).zoneAbbr();\n return `${time} (${timezoneCode})`;\n }\n }\n return null;\n};\n\nconst convertTZ = (date: Date | string, tzString: string) => {\n return new Date(\n (typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', {\n timeZone: tzString,\n }),\n );\n};\n\nexport const getCurrentDateForTimeZone = (timeZone: string): Date => {\n const timeZoneCurrentDate = convertTZ(new Date().toISOString(), timeZone);\n return timeZoneCurrentDate;\n};\n\nexport const getDateForTimeZone = (\n date: Date | string,\n timeZone: string,\n): Date => {\n return convertTZ(date, timeZone);\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport reactStringReplace from 'react-string-replace';\nimport { Emoji } from 'emoji-mart';\nimport _ from 'lodash';\nimport titleize from 'titleize';\n\nexport const CASHOUT_TITLE_TEXT_MAX_LENGTH = 35;\nexport const MENTION_REGEX = /@__(.*?)__@/;\nexport const MENTION_REGEX_GLOBAL = /@__(.*?)__@/g;\nexport const URL_REGEX = /(https?:\\/\\/?\\S+|www\\.\\S+)/gi;\nexport const DOMAIN_REGEX =\n /(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/g;\n\nexport const getProfileFullName = (user) => {\n if (user && user.profile) {\n return `${user.profile.firstName} ${user.profile.lastName}`;\n }\n return '';\n};\n\nexport const isValidDomain = (value) => {\n if (value.match(DOMAIN_REGEX)) {\n return true;\n }\n return false;\n};\n\nexport const capitalizeFirstLetter = (name) => {\n if (!name) {\n return '';\n }\n return titleize(name);\n};\n\nexport const httpRegExp = new RegExp(`((http(s?))\\\\://)`, 'gm');\n\nexport const capitalizeFirstLetterInText = (text) =>\n text.replace(/./, (c) => c.toUpperCase());\n\nexport const getTimezoneAbbreviation = (d) => {\n const date = d.toString();\n let timezone = date.match(/\\(.+\\)/g)[0];\n timezone = timezone.replace('(', '').replace(')', '');\n let abbreviation = '';\n timezone.split(' ').forEach((word) => {\n // We insert the first letter of every word in the abbreviation variable\n abbreviation += word.split('')[0];\n });\n\n // And finally we return the abbreviation\n return abbreviation;\n};\n\nexport const singularizeWord = (value) => {\n const word = value.split('');\n return word.slice(0, -1).join('');\n};\n\nexport const getTaggedUsersFromMessage = (\n message,\n taggedUsers,\n isNotification = false,\n) => {\n let replacedText = message;\n if (taggedUsers?.length > 0) {\n replacedText = reactStringReplace(replacedText, MENTION_REGEX, (match) => {\n const filteredEmployeeArr = taggedUsers\n .filter((employee) => employee._id === match)\n .map((employee) => {\n if (isNotification) {\n return employee.isDeleted\n ? 'Deactivated User'\n : getProfileFullName(employee);\n }\n return getProfileFullName(employee);\n });\n return filteredEmployeeArr;\n });\n }\n if (typeof replacedText === 'object') {\n return replacedText.join('');\n }\n return replacedText;\n};\n\nexport const getPostFormattedMessage = (text, taggedUsers, onUserClicked) => {\n let replacedText = text;\n replacedText = reactStringReplace(replacedText, /#(\\w+)/g, (match, i) => (\n \n #{match}\n \n ));\n replacedText = reactStringReplace(\n replacedText,\n /:([^\\s]*?):/g,\n (match, i) => ,\n );\n\n if (taggedUsers.length > 0) {\n replacedText = reactStringReplace(\n replacedText,\n MENTION_REGEX,\n (match, i) => {\n const filteredEmployeeArr = taggedUsers\n .filter((employee) => employee._id === match)\n .map((employee) => {\n if (onUserClicked) {\n return (\n {\n onUserClicked(employee);\n }\n : null\n }\n >\n {employee.isDeleted\n ? 'Deactivated User'\n : getProfileFullName(employee)}\n \n );\n }\n return (\n \n \n {employee.isDeleted\n ? 'Deactivated User'\n : getProfileFullName(employee)}\n \n \n );\n });\n return filteredEmployeeArr;\n },\n );\n }\n return replacedText;\n};\n\nexport const getFormattedMessage = (text, employeesArr) => {\n let replacedText = text;\n\n replacedText = reactStringReplace(replacedText, /#(\\w+)/g, (match, i) => (\n \n #{match}\n \n ));\n replacedText = reactStringReplace(replacedText, /:(.*?):/g, (match, i) => (\n \n ));\n\n if (employeesArr) {\n replacedText = reactStringReplace(\n replacedText,\n MENTION_REGEX,\n (match, i) => {\n const filteredEmployeeArr = employeesArr.filter((employee) => {\n return employee.id === match;\n });\n return (\n \n {filteredEmployeeArr[0].name}\n \n );\n },\n );\n }\n\n return replacedText;\n};\n\nexport const getFirstLetterOfName = (user) => {\n if (user && user.profile && user.profile.firstName) {\n return `${user.profile.firstName.slice(0, 1).toUpperCase()}`;\n }\n return '';\n};\n\nexport const getFirstLastName = (fullNameStr) => {\n const fullName = fullNameStr.trim().split(' ');\n let firstName = '';\n let lastName = '';\n for (const index in fullName) {\n if (Number(index) === 0) {\n firstName = fullName[index];\n } else {\n lastName = `${lastName} ${fullName[index]}`;\n }\n }\n lastName = lastName.trim();\n\n return [firstName, lastName];\n};\n\nexport const getFullName = (user) => {\n if (user) {\n return `${user.firstName} ${user.lastName}`;\n }\n return '';\n};\nexport const getUsersNamesCombined = (users) => {\n let names = '';\n for (let i = 0; i < users.length; i += 1) {\n names += users[i].profile.firstName;\n if (Number(users.length) === 1) {\n } else if (Number(i) === users.length - 2) {\n names += ' & ';\n } else if (Number(i) !== users.length - 1) {\n names += ', ';\n }\n }\n return names;\n};\nexport const replaceAll = function (text, search, replacement) {\n return text.replace(new RegExp(search, 'g'), replacement);\n};\n\nexport const trimText = (text, trimToLength) => {\n let newText = text;\n if (text.length > trimToLength) {\n newText = text.substring(0, trimToLength);\n newText = `${newText}...`;\n }\n return newText;\n};\n\nexport const sortUsingName = (users) =>\n users.sort((a, b) => {\n let aName = '';\n let bName = '';\n if (a.profile) {\n aName = a.profile.firstName.toLowerCase();\n } else if (a.firstName) {\n aName = a.firstName;\n }\n if (b.profile) {\n bName = b.profile.firstName.toLowerCase();\n } else if (b.firstName) {\n bName = b.firstName;\n }\n return aName < bName ? -1 : aName > bName ? 1 : 0;\n });\n\nexport function truncate(n, useWordBoundary) {\n if (this.length <= n) {\n return this;\n }\n const subString = this.substr(0, n - 1);\n return `${\n useWordBoundary\n ? subString.substr(0, subString.lastIndexOf(' '))\n : subString\n }...`;\n}\n\nexport const joinArrayWithCommasAnd = (arr) => {\n if (arr.length === 1) return arr[0];\n const firsts = arr.slice(0, arr.length - 1);\n const last = arr[arr.length - 1];\n return `${firsts.join(', ')} and ${last}`;\n};\n\nexport const convertUsersForSearch = (arr) => {\n const keyMap = {\n name: 'displayText',\n username: 'secondaryText',\n };\n return arr.map((obj) => {\n return _.mapKeys(obj, (value, key) => {\n return keyMap[key];\n });\n });\n};\n\nexport const getCoworkersOptions = (coworkers) =>\n coworkers.map((coworker) => {\n const { _id: id, profile, email } = coworker;\n const { firstName, lastName } = profile;\n return {\n id,\n label: `${firstName} ${lastName} (${email})`,\n tagLabel: `${firstName} ${lastName}`,\n };\n });\n\nexport const getIds = (array) => array.map(({ id }) => id);\n\nexport const getCoworkersFromIds = (ids, coworkers) => {\n if (ids.length === 0 || coworkers.length === 0) {\n return [];\n }\n return coworkers.reduce((acc, coworker) => {\n const { _id: id } = coworker;\n if (ids.indexOf(id) !== -1) {\n acc.push(coworker);\n }\n return acc;\n }, []);\n};\n\nexport const filterExceptCurrentUser = (array, currentUserId) =>\n array.filter(({ id }) => id !== currentUserId);\n\nexport const trimSpaces = (string) => {\n return string\n .replace(/ /g, ' ')\n .replace(/&/g, '&')\n .replace(/>/g, '>')\n .replace(/</g, '<');\n};\n","export const EACH = 'each';\nexport const LEFT = 'left';\nexport const GIVE = 'give';\nexport const ME = 'Me';\nexport const OF = 'of';\nexport const MY = 'my';\nexport const SHOWING = 'Showing';\nexport const EDIT = 'Edit';\nexport const CLOSE = 'Close';\nexport const CLEAR = 'Clear';\nexport const AVATAR = 'Avatar';\nexport const NAME = 'Name';\nexport const HANDLE = 'Handle';\nexport const EMAIL = 'Email';\nexport const DEPARTMENT = 'Department';\nexport const TIME_ZONE = 'Time Zone';\nexport const MANAGER = 'Direct Manager';\nexport const DIRECT = 'Direct';\nexport const REPORTS = 'Reports';\nexport const POST = 'Post';\nexport const BIRTHDAY = 'Birthday';\nexport const START = 'Start';\nexport const DATE = 'Date';\nexport const PROFILE = 'Profile';\nexport const INFORMATION = 'Information';\nexport const IN = 'In';\nexport const APP = 'App';\nexport const CELEBRATED = 'celebrated';\nexport const OK = 'OK';\nexport const CANCEL = 'Cancel';\nexport const AND_LOWER = 'and';\nexport const OTHERS_LOWER = 'others';\nexport const YOUR = 'your';\nexport const YOU = 'You';\nexport const ADMIN_LOWER = 'admin';\nexport const UPLOADED = 'uploaded';\nexport const LOADING = 'Loading';\nexport const NO = 'No';\nexport const UPGRADE = 'Upgrade';\nexport const OR = 'OR';\nexport const FOR = 'for';\nexport const A = 'a';\nexport const AN = 'an';\nexport const LEARN = 'Learn';\nexport const MORE = 'more';\nexport const REQUIRED = 'Required';\nexport const WITH = 'with';\nexport const SHORTCUT = 'Shortcut';\nexport const VIEW = 'View';\nexport const FEED = 'Feed';\nexport const REMIND = 'Remind';\nexport const RUN = 'Run';\nexport const NOW = 'now';\nexport const END = 'End';\nexport const OCCURRENCE = 'occurrence';\nexport const DONE = 'Done';\nexport const ANSWER = 'Answer';\nexport const FLOW = 'flow';\nexport const RECOMMENDED = 'Recommended';\nexport const TEMPLATES = 'Templates';\nexport const CONFIRM = 'Confirm';\nexport const PREVIEW = 'Preview';\nexport const CATEGORIES = 'Categories';\nexport const ANSWERED = 'answered';\nexport const POSTED = 'posted';\nexport const ANONYMOUS = 'Anonymous';\nexport const ANONYMOUSLY = 'Anonymously';\nexport const EVERYONE = 'Everyone';\nexport const PRIVATELY = 'privately';\nexport const ONLY = 'only';\nexport const OWNER = 'owner';\nexport const PARTICIPANTS = 'participants';\nexport const CUSTOM = 'custom';\nexport const DATES = 'Dates';\nexport const START_DATE = 'Start Date';\nexport const END_DATE = 'End Date';\nexport const AT = 'at';\nexport const DUE = 'Due';\nexport const CLOSES = 'Closes';\nexport const ARCHIVE = 'Archive';\nexport const UNARCHIVE = 'Unarchive';\nexport const THIS = 'this';\nexport const ADDITIONAL = 'Additional';\nexport const OPTIONS = 'options';\nexport const SETTINGS = 'Settings';\nexport const VERSION = 'Version';\nexport const BLOCK = 'Block';\nexport const MENTIONED = 'Mentioned';\nexport const DESCRIPTION = 'Description';\nexport const WHEN = 'When';\nexport const ABOUT = 'About';\nexport const FILTER = 'Filter';\nexport const PEOPLE = 'People';\nexport const PERSON = 'Person';\nexport const MANAGE = 'Manage';\nexport const INSIGHTS = 'Insights';\nexport const EDITOR = 'Editor';\nexport const NEXT = 'Next';\nexport const TO = 'to';\nexport const DELETE = 'Delete';\nexport const CREATE = 'Create';\nexport const OPTION = 'option';\nexport const UNLIMITED = 'Unlimited';\nexport const EMOJIS = 'Emojis';\nexport const GIFS = 'GIFs';\nexport const ATTACHMENTS = 'Attachments';\nexport const ROUTINE = 'Routine';\nexport const ADD = 'Add';\nexport const ANOTHER = 'another';\nexport const OTHER = 'Other';\nexport const CHOOSE = 'Choose';\nexport const CONTAINS = 'Contains';\nexport const BETWEEN = 'between';\nexport const AND = 'and';\nexport const EXACTLY = 'exactly';\nexport const MINUTES = 'minutes';\nexport const HOURS = 'hours';\nexport const DAYS = 'days';\nexport const WEEKS = 'weeks';\nexport const MONTHS = 'months';\nexport const YEARS = 'years';\nexport const TRY = 'Try';\nexport const AGAIN = 'again';\nexport const ON = 'on';\nexport const OFF = 'off';\nexport const SELECTABLE = 'selectable';\nexport const BY = 'by';\nexport const CREATED = 'created';\nexport const BLOCKS = 'blocks';\nexport const FORM = 'form';\nexport const HIDE = 'hide';\nexport const ANYTIME = 'Anytime';\nexport const SCHEDULE = 'Schedule';\nexport const RUNS = 'Runs';\nexport const SAVE = 'Save';\nexport const REFRESH = 'Refresh';\nexport const LIST = 'List';\nexport const SENT = 'sent';\nexport const MESSAGE = 'message';\nexport const PARTICIPANT = 'participant';\nexport const RECURS = 'Recurs';\nexport const ACCEPT = 'Accept';\nexport const USE = 'Use';\nexport const TEMPLATE = 'template';\nexport const ENTER = 'Enter';\nexport const THE = 'the';\nexport const REFRESHES = 'Refreshes';\nexport const ITEM = 'item';\nexport const TASK = 'task';\nexport const PENDING = 'pending';\nexport const GOOGLE = 'google';\nexport const OUTLOOK = 'outlook';\nexport const UNASSIGNED = 'unassigned';\nexport const ASSIGNEE = 'assignee';\nexport const NOT = 'not';\nexport const ERROR = 'error';\nexport const REASSIGN = 'reassign';\nexport const UNASSIGN = 'unassign';\nexport const SHARE = 'Share';\nexport const BACK = 'Back';\nexport const UNARCHIVED = 'Unarchived';\nexport const INCOMPLETE = 'Incomplete';\nexport const CHANGED_TO = 'Changed to';\nexport const LOADING_LABEL = 'Loading...';\nexport const SOMEONE = 'someone';\n","import { GifRatingsProps } from '../atomic/atoms/Giphy/interface';\n\nexport enum AssemblyCurrencyType {\n REGULAR = 'REGULAR',\n CUSTOM = 'CUSTOM',\n}\n\nexport enum PrivateMessageAndImpactLevelValues {\n MANAGER_ONLY = 'MANAGER_ONLY',\n ADMINS_ONLY = 'ADMINS_ONLY',\n MANAGER_AND_CUSTOM_ALLOWANCES = 'MANAGER_AND_CUSTOM_ALLOWANCES_ONLY',\n EVERYONE = 'EVERYONE',\n}\n\nexport interface AssemblyCurrency {\n name: string;\n pluralName: string;\n type: AssemblyCurrencyType;\n value?: string;\n}\n\nexport enum CurrencyLevel {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n HUGE = 'huge',\n ABOVE = 'above',\n}\n\nexport enum CreditState {\n UNVERIFIED = 'UNVERIFIED',\n UNVERIFIED_BY_ADMIN = 'UNVERIFIED_BY_ADMIN',\n SOFT_VERIFIED = 'SOFTVERIFIED',\n SOFT_VERIFIED_BY_ADMIN = 'SOFTVERIFIED_BY_ADMIN',\n VERIFIED_BY_ADMIN = 'VERIFIED_BY_ADMIN',\n DENIED_BY_ADMIN = 'DENIED_BY_ADMIN',\n VERIFIED = 'VERIFIED',\n}\n\nexport interface AssemblySettings {\n userManagement: {\n approvalAccess: {\n enabled: boolean;\n value: string[];\n };\n inviteAccess: {\n enabled: boolean;\n value: string[];\n };\n canLoginUsingLink: {\n enabled: boolean;\n };\n };\n coreValues: {\n enabled: boolean;\n value: string[];\n };\n postImpactLevel: {\n enabled: boolean;\n value: {\n customType: PrivateMessageAndImpactLevelValues;\n levels: { percentage: number; name: CurrencyLevel }[];\n };\n };\n privateMessage: {\n enabled: boolean;\n value: PrivateMessageAndImpactLevelValues;\n };\n minMessageChar: {\n enabled: boolean;\n value: number;\n };\n gifAccessibility: {\n enabled: boolean;\n value: GifRatingsProps;\n };\n blockWordsMessage: {\n enabled: boolean;\n value: string[];\n };\n canDeletePosts: {\n enabled: boolean;\n value: string;\n };\n activeSpecialMention: string;\n badgeAttachability: { enabled: boolean };\n imageAttachability: { enabled: boolean };\n}\n\ninterface AssemblyAccounts {\n creditState: CreditState;\n rewards: {\n isChargeable: boolean;\n };\n}\n\ninterface AssemblyFlow {\n creation: {\n enabled: boolean;\n value: string;\n };\n gifAccessibility: {\n value: GifRatingsProps;\n enabled: boolean;\n };\n participationCriteriaAccessibility: {\n everyone: Array;\n };\n contentStackAccessibility: {\n GIVE_POINTS_STACK: Array;\n };\n}\n\nexport interface Assembly {\n assemblyId: string;\n domain: string;\n logo: string;\n name: string;\n exchangeRate: string;\n timeZone: string;\n currency: AssemblyCurrency;\n settings: AssemblySettings;\n accounts: AssemblyAccounts;\n flow?: AssemblyFlow;\n whitelistedDomains?: string[];\n}\n","import React, { useState } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const ImageWrapper = styled.img<{\n placeholderImage?: boolean;\n imgLoaded?: boolean;\n}>`\n display: ${({ placeholderImage, imgLoaded }) =>\n placeholderImage && !imgLoaded ? 'none' : 'inherit'};\n max-width: 100%;\n`;\nexport const ImagePlaceholderAnimation = keyframes`\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(100%);\n }\n`;\nexport const ImagePlaceholder = styled.div<{\n imgLoaded?: boolean;\n height?: string;\n width?: string;\n}>`\n display: ${({ imgLoaded }) => (imgLoaded ? 'none' : 'block')};\n position: relative;\n z-index: 0;\n background: ${ThemeV2.palette.gray4};\n height: ${({ height }) => height || '100%'};\n width: ${({ width }) => width || '100%'};\n &:after {\n content: '';\n top: 0;\n bottom: 0;\n transform: translateX(100%);\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: 1;\n background: -webkit-linear-gradient(\n left,\n rgba(255, 255, 255, 0) 0%,\n rgba(255, 255, 255, 0.4) 50%,\n rgba(128, 186, 232, 0) 99%,\n rgba(125, 185, 232, 0) 100%\n );\n animation: ${ImagePlaceholderAnimation} 1s infinite;\n }\n`;\n\nexport interface ImageProps {\n className?: string;\n src: string;\n srcset?: string;\n alt: string;\n width?: string;\n height?: string;\n isFullWidth?: boolean;\n placeholder?: boolean;\n onError?: () => void;\n}\n\nconst Image = (props: ImageProps) => {\n const [imgLoaded, setLoading] = useState(false);\n const {\n className,\n src,\n srcset,\n alt,\n height,\n width,\n isFullWidth,\n placeholder: placeholderImage = false,\n onError,\n } = props;\n\n // Requires Height and width for the Placeholder if we don't use any wrapper\n // check GifContainer to know how to use it with wrapper\n const handleImageLoad = () => {\n setLoading(true);\n };\n return (\n <>\n \n {placeholderImage && (\n \n )}\n \n );\n};\n\nexport default Image;\n","import styled, { css } from 'styled-components';\nimport { makeStyles, createTheme } from '@material-ui/core/styles';\n\nimport ThemeV2 from '../../componentsV2/theme';\n\nexport interface FlexInterface {\n borderBottom?: boolean;\n justifyContent?: string;\n alignItems?: string;\n margin?: string;\n padding?: string;\n height?: string;\n flexWrap?: string;\n flexDirection?: string;\n flex?: number;\n width?: string;\n inlineFlex?: boolean;\n gap?: string;\n alignContent?: string;\n}\n\nexport const Flex = styled.div`\n display: ${({ inlineFlex }) => (inlineFlex ? `inline-flex` : `flex`)};\n flex-direction: ${({ flexDirection }) => flexDirection || `row`};\n align-items: ${({ alignItems }) => alignItems || `center`};\n justify-content: ${({ justifyContent }) => justifyContent || `unset`};\n padding: ${({ padding }) => (padding ? `${padding}` : `unset`)};\n margin: ${({ margin }) => (margin ? `${margin}` : `unset`)};\n border-bottom: ${({ borderBottom }) =>\n borderBottom ? `1px solid ${ThemeV2.palette.gray4}` : 'unset'};\n height: ${({ height }) => height && `${height}`};\n width: ${({ width }) => width && `${width}`};\n flex-wrap: ${(props) => props.flexWrap && props.flexWrap};\n flex: ${({ flex }) => flex && flex};\n gap: ${({ gap }) => gap && `${gap}`};\n align-content: ${({ alignContent }) => alignContent && alignContent};\n box-sizing: border-box;\n`;\n\nexport const FlexCSS = css`\n display: flex;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n`;\n\nexport const Spacing = createTheme({\n spacing: 4,\n});\n\nexport const themeStyles = makeStyles({\n displayNone: {\n display: 'none',\n },\n displayFlex: {\n display: 'flex',\n },\n displayBlock: {\n display: 'block',\n },\n displayInlineBlock: {\n display: 'inline-block',\n },\n displayInlineFlex: {\n display: 'inline-flex',\n },\n flexJustifyBetween: {\n justifyContent: 'space-between',\n },\n flexJustifyAround: {\n justifyContent: 'space-around',\n },\n flexJustifyStart: {\n justifyContent: 'flex-start',\n },\n flexJustifyEnd: {\n justifyContent: 'flex-end',\n },\n flexJustifyCenter: {\n justifyContent: 'center',\n },\n flexAlignItemsCenter: {\n alignItems: 'center',\n },\n flexAlignItemsBaseline: {\n alignItems: 'baseline',\n },\n flexAlignItemsStart: {\n alignItems: 'flex-start',\n },\n flexAlignItemsEnd: {\n alignItems: 'flex-end',\n },\n flexAlignItemsStretch: {\n alignItems: 'stretch',\n },\n flexDirectionRow: {\n flexDirection: 'row',\n },\n flex1: { flex: 1 },\n flex2: { flex: 2 },\n flex3: { flex: 3 },\n flex4: { flex: 4 },\n flex5: { flex: 5 },\n flex6: { flex: 6 },\n flex7: { flex: 7 },\n flex8: { flex: 8 },\n margin: ({ top, right, bottom, left }: MarginPaddingProps) => ({\n margin: `${top}px ${right}px ${bottom}px ${left}px`,\n }),\n padding: ({ top, right, bottom, left }: MarginPaddingProps) => ({\n padding: `${top}px ${right}px ${bottom}px ${left}px`,\n }),\n marginRight: ({ right }: { right?: number }) => ({\n marginRight: `${right}px !important`,\n }),\n marginBottom: ({ bottom }: { bottom?: number }) => ({\n marginBottom: `${bottom}px !important`,\n }),\n});\n\ninterface MarginPaddingProps {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\nexport const margin = (top = 0, right = 0, bottom = 0, left = 0) => {\n const spacing = themeStyles({ top, right, bottom, left });\n return spacing.margin;\n};\n\nexport const padding = (top = 0, right = 0, bottom = 0, left = 0) => {\n const spacing = themeStyles({ top, right, bottom, left });\n return spacing.padding;\n};\n\nexport const marginRight = (right = 0) => {\n const spacing = themeStyles({ right });\n return spacing.marginRight;\n};\n\nexport const marginBottom = (bottom = 0) => {\n const spacing = themeStyles({ bottom });\n return spacing.marginBottom;\n};\n","import RoutesList from '../../../aV2/routes/routesList';\nimport { SSOOptions, SSOContent, SSOTypes } from './common';\n\nexport enum SSOErrorCodes {\n ASSEMBLY_NOT_FOUND = 'ASSEMBLY_NOT_FOUND',\n ASSEMBLY_NOT_ACTIVE = 'ASSEMBLY_NOT_ACTIVE',\n ASSEMBLY_ALREADY_EXISTS = 'ASSEMBLY_ALREADY_EXISTS',\n SIGNIN_VIA_SLACK = 'SIGNIN_VIA_SLACK',\n SIGNIN_VIA_ADP = 'SIGNIN_VIA_ADP',\n SIGNIN_VIA_OFFICE365 = 'SIGNIN_VIA_OFFICE365',\n SIGNIN_VIA_GOOGLE = 'SIGNIN_VIA_GSUITE',\n SIGNIN_WITH_EMAIL = 'SIGNIN_WITH_EMAIL',\n SIGNIN_VIA_SAML = 'SIGNIN_VIA_SAML',\n USER_NOT_FOUND = 'USER_NOT_FOUND',\n SLACK_USER_NOT_IN_ASSEMBLY = 'SLACK_USER_NOT_IN_ASSEMBLY',\n SSO_USER_NOT_IN_ASSEMBLY = 'SSO_USER_NOT_IN_ASSEMBLY',\n OFFICE365_USER_NOT_IN_ASSEMBLY = 'OFFICE365_USER_NOT_IN_ASSEMBLY',\n ADMIN_APPROVAL_REQUESTED = 'ADMIN_APPROVAL_REQUESTED',\n SLACK_TEAM_MISMATCH = 'SLACK_TEAM_MISMATCH',\n OFFICE365_TENANT_MISMATCH = 'OFFICE365_TENANT_MISMATCH',\n SLACK_SIGN_IN_DISABLED = 'SLACK_SIGN_IN_DISABLED',\n SSO_SIGN_IN_DISABLED = 'SSO_SIGN_IN_DISABLED',\n OFFICE365_SIGNIN_DISABLED = 'OFFICE365_SIGNIN_DISABLED',\n SLACK_SIGN_UP_DISABLED = 'SLACK_SIGN_UP_DISABLED',\n SSO_SIGN_UP_DISABLED = 'SSO_SIGN_UP_DISABLED',\n OFFICE365_SIGN_UP_DISABLED = 'OFFICE365_SIGN_UP_DISABLED',\n CONSENT_REQUIRED = 'consent_required',\n ACCESS_DENIED = 'access_denied', // Common for Slack and Google\n USER_CANCELLED = 'CancelledByUser',\n SERVER_ERROR = 'SERVER_ERROR',\n // Google SSO Errors https://github.com/anthonyjgrove/react-google-login#onfailure-callback\n POPUP_CLOSED_BY_USER = 'popup_closed_by_user',\n COOKIES_NOT_ALLOWED = 'idpiframe_initialization_failed',\n IMMEDIATE_FAILED = 'immediate_failed',\n INTERNAL_ERROR = 'internal_error',\n INTERNAL_ERROR_LIFION = 'internal_error_lifion',\n ADP_SIGN_IN_DISABLED = 'ADP_SIGN_IN_DISABLED',\n ADP_USER_NOT_IN_ASSEMBLY = 'ADP_USER_NOT_IN_ASSEMBLY',\n NEW_ADP_USER_ERROR = 'NEW_ADP_USER_ERROR',\n LIFION_SIGNIN_BLOCKED = 'LIFION_SIGNIN_BLOCKED',\n}\n\nexport const ErrorData = {\n [SSOErrorCodes.ASSEMBLY_NOT_ACTIVE]: {\n primaryText: '\tThis account is closed',\n secondaryText: 'Sorry, your Assembly account has been closed',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.ENTER_EMAIL,\n buttonIcon: null,\n },\n [SSOErrorCodes.ASSEMBLY_NOT_FOUND]: {\n primaryText: 'Assembly not found',\n secondaryText: 'Sorry, your Assembly account has not been set up yet',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.ENTER_EMAIL,\n buttonIcon: null,\n },\n [SSOErrorCodes.ASSEMBLY_ALREADY_EXISTS]: {\n primaryText: 'Assembly account exists',\n secondaryText: 'Sorry, Assembly already exists for this :sso account',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SIGNIN_VIA_SLACK]: {\n primaryText: 'Please use your SSO',\n secondaryText:\n 'Your account is authorized with Slack – please click the “Sign in with Slack” button to log in to your Assembly',\n buttonText: 'Sign in with Slack',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.SLACK].ssoParam,\n )}?auto=true`,\n buttonIcon: 'slack-mini-logo-white',\n },\n [SSOErrorCodes.SIGNIN_VIA_ADP]: {\n primaryText: 'Please use your SSO',\n secondaryText:\n 'Your account is authorized with ADP – please click the “Sign in with ADP” button to log in to your Assembly',\n buttonText: 'Sign in with ADP',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.ADP].ssoParam,\n )}?auto=true`,\n buttonIcon: 'adp-mini-logo-white',\n },\n [SSOErrorCodes.SIGNIN_VIA_OFFICE365]: {\n primaryText: 'Please use your SSO',\n secondaryText:\n // eslint-disable-next-line max-len\n 'Your account is authorized with Office 365 – please click the “Sign in with Office 365” button to log in to your Assembly',\n buttonText: 'Sign in with Office 365',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.OFFICE365].ssoParam,\n )}?auto=true`,\n buttonIcon: 'office-365-mini-logo',\n },\n [SSOErrorCodes.SIGNIN_VIA_GOOGLE]: {\n primaryText: 'Please use your SSO',\n secondaryText:\n // eslint-disable-next-line max-len\n 'Your account is authorized with Google – please click the “Sign in with Google\" button to log in to your Assembly',\n buttonText: 'Sign in with Google',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.GOOGLE].ssoParam,\n )}?auto=true`,\n buttonIcon: SSOContent[SSOOptions.GOOGLE].logo,\n },\n [SSOErrorCodes.SIGNIN_VIA_SAML]: {\n primaryText: 'Please sign in with :samlName',\n secondaryText:\n // eslint-disable-next-line max-len\n 'Your account requires authorization with :samlName - please click the “Sign in with :samlName” button to log into your Assembly. If you don’t have :samlName access, please talk to your Assembly admin.',\n buttonText: 'Sign in with :samlName',\n urlToPush: `/auth/saml?assemblyId=:id`,\n buttonIcon: 'key',\n },\n [SSOErrorCodes.SIGNIN_WITH_EMAIL]: {\n primaryText: 'Please use email and password',\n secondaryText:\n // eslint-disable-next-line max-len\n 'Your account is authorized with email and password – please click the “Sign in with Email” button to log in to your Assembly',\n buttonText: 'Sign in with Email',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.USER_NOT_FOUND]: {\n primaryText: 'Account not found',\n secondaryText:\n 'Sorry, we’re not able to find your account. Please talk to your admin or try creating a new Assembly',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.ENTER_EMAIL,\n buttonIcon: null,\n },\n [SSOErrorCodes.SLACK_USER_NOT_IN_ASSEMBLY]: {\n primaryText: 'This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SSO_USER_NOT_IN_ASSEMBLY]: {\n primaryText: 'This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.OFFICE365_USER_NOT_IN_ASSEMBLY]: {\n primaryText: 'This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.ADMIN_APPROVAL_REQUESTED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n // eslint-disable-next-line max-len\n 'A request has been sent to you account’s admin – If your Assembly admin approves your access, we will notify you',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SLACK_TEAM_MISMATCH]: {\n primaryText: 'Slack is already connected',\n secondaryText:\n 'Sorry, each Slack account can only be associated with a single Assembly account',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.OFFICE365_TENANT_MISMATCH]: {\n primaryText: 'Office 365 is already connected',\n secondaryText:\n 'Sorry, each Office 365 account can only be associated with a single Assembly account',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SLACK_SIGN_IN_DISABLED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SSO_SIGN_IN_DISABLED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.OFFICE365_SIGNIN_DISABLED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SLACK_SIGN_UP_DISABLED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.SSO_SIGN_UP_DISABLED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.OFFICE365_SIGN_UP_DISABLED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText:\n 'If you’d like to join, you’ll have to ask permission from your Assembly’s admin',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.CONSENT_REQUIRED]: {\n primaryText: 'Authentication denied',\n secondaryText:\n 'Whoops, you declined Assembly’s permission to connect with Office 365',\n buttonText: 'Sign in with Office 365',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.OFFICE365].ssoParam,\n )}?auto=true`,\n buttonIcon: 'office-365-mini-logo',\n },\n [SSOErrorCodes.ACCESS_DENIED]: {\n primaryText: 'Authentication denied',\n secondaryText:\n 'Whoops, you declined Assembly’s permission to connect with :sso',\n buttonText: 'Sign in with :sso',\n urlToPush: '',\n buttonIcon: null,\n },\n [SSOErrorCodes.USER_CANCELLED]: {\n primaryText: 'Authentication denied',\n // eslint-disable-next-line max-len\n secondaryText: `Whoops, you declined Assembly’s permission to connect with :sso. If you didn't, then this might be an issue with your Teams app. Please update your Microsoft Teams application and try again.`,\n buttonText: 'Sign in with :sso',\n urlToPush: '',\n buttonIcon: 'slack-mini-logo-white',\n },\n [SSOErrorCodes.SERVER_ERROR]: {\n primaryText: 'Whoops, some wires got crossed',\n secondaryText: 'Sorry for the error, please try again now or try later',\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.POPUP_CLOSED_BY_USER]: {\n primaryText: 'Authentication denied',\n secondaryText: 'Incomplete login. Please try again.',\n buttonText: 'Sign in with :sso',\n urlToPush: '',\n buttonIcon: 'google-light',\n },\n [SSOErrorCodes.IMMEDIATE_FAILED]: {\n primaryText: 'Authentication denied',\n secondaryText: 'Whoops! Some wires got crossed. Please try again.',\n buttonText: 'Sign in with Google',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.GOOGLE].ssoParam,\n )}?auto=true`,\n buttonIcon: 'google-light',\n },\n [SSOErrorCodes.COOKIES_NOT_ALLOWED]: {\n primaryText: 'Authentication denied',\n secondaryText: 'Please enable third party cookies to allow Google sign-in',\n buttonText: 'Sign in with Google',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.GOOGLE].ssoParam,\n )}?auto=true`,\n buttonIcon: 'google-light',\n },\n [SSOErrorCodes.INTERNAL_ERROR]: {\n primaryText: 'Authentication denied',\n secondaryText: `We could not sign you in with ADP. Please contact your ADP administrator to make sure that\n you have Assembly for workforce now installed`,\n buttonText: 'Sign in with ADP',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.ADP].ssoParam,\n )}?auto=true`,\n buttonIcon: SSOContent[SSOOptions.ADP].logo,\n },\n [SSOErrorCodes.INTERNAL_ERROR_LIFION]: {\n primaryText: 'Authentication denied',\n secondaryText: `We could not sign you in with Lifion. Please contact your Lifion administrator to make sure that\n you have Assembly installed`,\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SSOErrorCodes.ADP_SIGN_IN_DISABLED]: {\n primaryText: 'Authentication denied',\n secondaryText:\n 'Whoops! It looks like ADP sign-in is not available for this Assembly. Please contact your admin.',\n buttonText: 'Sign in with ADP',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.ADP].ssoParam,\n )}?auto=true`,\n buttonIcon: SSOContent[SSOOptions.ADP].logo,\n },\n [SSOErrorCodes.ADP_USER_NOT_IN_ASSEMBLY]: {\n primaryText: 'Authentication denied',\n secondaryText: `Whoops! We couldn’t find an Assembly account for this user.\n Please ensure you are using the correct email or contact your admin.`,\n buttonText: 'Sign in with ADP',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.ADP].ssoParam,\n )}?auto=true`,\n buttonIcon: SSOContent[SSOOptions.ADP].logo,\n },\n [SSOErrorCodes.NEW_ADP_USER_ERROR]: {\n primaryText: 'Authentication denied',\n secondaryText: `Whoops! Looks like you haven’t been invited to this Assembly yet. Please contact your admin.`,\n buttonText: 'Sign in with ADP',\n urlToPush: `/${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n SSOContent[SSOOptions.ADP].ssoParam,\n )}?auto=true`,\n buttonIcon: SSOContent[SSOOptions.ADP].logo,\n },\n [SSOErrorCodes.LIFION_SIGNIN_BLOCKED]: {\n primaryText: 'Sorry! This Assembly is invite only',\n secondaryText: `Whoops! Looks like you haven’t been invited to this Assembly yet. Please contact your admin.`,\n buttonText: 'Thanks, take me back',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n};\n\nconst ssoToBeReplacedErrorCodes = [\n SSOErrorCodes.USER_CANCELLED,\n SSOErrorCodes.POPUP_CLOSED_BY_USER,\n SSOErrorCodes.ACCESS_DENIED,\n];\n\nexport const getSSOErrorData = (\n errorCode: SSOErrorCodes,\n ssoType: SSOTypes,\n sso: SSOOptions,\n) => {\n if (!Object.values(SSOErrorCodes).includes(errorCode)) {\n const [subErrorCode, samlName, assemblyId] = errorCode.split('-');\n if (\n subErrorCode &&\n samlName &&\n assemblyId &&\n subErrorCode === SSOErrorCodes.SIGNIN_VIA_SAML\n ) {\n return {\n headerText: ErrorData[\n SSOErrorCodes.SIGNIN_VIA_SAML\n ].primaryText.replace(':samlName', samlName),\n bodyText: ErrorData[\n SSOErrorCodes.SIGNIN_VIA_SAML\n ].secondaryText.replaceAll(':samlName', samlName),\n buttonText: ErrorData[SSOErrorCodes.SIGNIN_VIA_SAML].buttonText.replace(\n ':samlName',\n samlName,\n ),\n urlToPush: ErrorData[SSOErrorCodes.SIGNIN_VIA_SAML].urlToPush.replace(\n ':id',\n assemblyId,\n ),\n buttonIcon: ErrorData[SSOErrorCodes.SIGNIN_VIA_SAML].buttonIcon,\n };\n }\n return {\n headerText: ErrorData[SSOErrorCodes.SERVER_ERROR].primaryText,\n bodyText: ErrorData[SSOErrorCodes.SERVER_ERROR].secondaryText,\n buttonText: ErrorData[SSOErrorCodes.SERVER_ERROR].buttonText,\n urlToPush: ErrorData[SSOErrorCodes.SERVER_ERROR].urlToPush,\n buttonIcon: ErrorData[SSOErrorCodes.SERVER_ERROR].buttonIcon,\n };\n }\n\n if (errorCode === SSOErrorCodes.INTERNAL_ERROR && sso === SSOOptions.LIFION) {\n return {\n headerText: ErrorData[SSOErrorCodes.INTERNAL_ERROR_LIFION].primaryText,\n bodyText: ErrorData[SSOErrorCodes.INTERNAL_ERROR_LIFION].secondaryText,\n buttonText: ErrorData[SSOErrorCodes.INTERNAL_ERROR_LIFION].buttonText,\n urlToPush: ErrorData[SSOErrorCodes.INTERNAL_ERROR_LIFION].urlToPush,\n buttonIcon: ErrorData[SSOErrorCodes.INTERNAL_ERROR_LIFION].buttonIcon,\n };\n }\n\n if (errorCode === SSOErrorCodes.ASSEMBLY_ALREADY_EXISTS) {\n let message = ErrorData[errorCode].secondaryText;\n message = message.replace(/:sso/g, SSOContent[sso].displayName);\n\n return {\n headerText: ErrorData[errorCode].primaryText,\n bodyText: message,\n buttonText: ErrorData[errorCode].buttonText,\n urlToPush: ErrorData[errorCode].urlToPush,\n buttonIcon: ErrorData[errorCode].buttonIcon,\n };\n }\n\n const headerText = ErrorData[errorCode].primaryText;\n let bodyText = ErrorData[errorCode].secondaryText;\n let { buttonIcon } = ErrorData[errorCode];\n let { buttonText, urlToPush } = ErrorData[errorCode];\n if (ssoType === SSOTypes.SIGN_UP) {\n if (errorCode === SSOErrorCodes.CONSENT_REQUIRED) {\n buttonText = 'Sign up with Office 365';\n urlToPush = `/${RoutesList.SSO_SIGNUP_AUTHORIZE_FN(\n SSOContent[SSOOptions.OFFICE365].ssoParam,\n )}?auto=true`;\n }\n if (errorCode === SSOErrorCodes.ACCESS_DENIED) {\n buttonText = `Sign up with ${SSOContent[sso].displayName}`;\n urlToPush = `/${RoutesList.SSO_SIGNUP_AUTHORIZE_FN(\n SSOContent[sso].ssoParam,\n )}?auto=true`;\n }\n }\n\n if (ssoToBeReplacedErrorCodes.indexOf(errorCode) !== -1) {\n bodyText = bodyText.replace(':sso', SSOContent[sso].displayName);\n buttonText = buttonText.replace(':sso', SSOContent[sso].displayName);\n urlToPush = `/${RoutesList.SSO_AUTHORIZE_FN(\n SSOContent[sso].ssoParam,\n ssoType,\n )}?auto=true`;\n buttonIcon = SSOContent[sso].logo;\n }\n return {\n headerText,\n bodyText,\n buttonText,\n urlToPush,\n buttonIcon,\n };\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { MenuProps } from '@material-ui/core/Menu';\nimport Select from '@material-ui/core/Select';\nimport Input from '@material-ui/core/Input';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport SVGIcon from '../SVGIcon';\nimport Body from '../Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { DropdownProps, Item } from './interfaces';\n\nconst useStyles = makeStyles({\n menuItemStyle: {\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n '& ul': {\n backgroundColor: ThemeV2.palette.gray1,\n },\n '& li': {\n fontSize: '14px',\n padding: '.5rem .75rem',\n '&:hover, &:focus, &:visited': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n '&.Mui-selected, &.Mui-selected:hover': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n },\n },\n root: ({\n selectedMenuItemId,\n width,\n isFilter,\n icon,\n hasCalendar,\n }: DropdownProps) => ({\n zIndex: 0,\n position: 'relative',\n width,\n left: '.5rem',\n padding: '0px',\n borderRadius: '2px',\n overflow: 'hidden',\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: hasCalendar\n ? ThemeV2.palette.geekBlue6\n : ThemeV2.palette.gray5,\n borderStyle: isFilter ? 'none' : 'solid',\n transition: 'all .3s',\n },\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: hasCalendar\n ? ThemeV2.palette.geekBlue6\n : ThemeV2.palette.geekBlue5,\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: isFilter ? '' : ThemeV2.palette.geekBlue5,\n boxShadow: isFilter ? '' : '0px 0px 4px rgba(24, 144, 255, 0.5)',\n backgroundColor: isFilter ? '' : 'transparent',\n },\n '& .MuiInputAdornment-positionStart': {\n position: 'absolute',\n left: '.5rem',\n zIndex: hasCalendar ? 0 : -1,\n cursor: 'pointer',\n },\n '& .MuiSelect-select': {\n padding: isFilter ? '0px' : '.5rem 1.5rem .5rem 0rem',\n paddingLeft: icon ? '2rem' : '1rem',\n fontSize: '1rem',\n lineHeight: '1.5rem',\n color: ThemeV2.palette.gray9,\n backgroundColor: hasCalendar ? ThemeV2.palette.geekBlue6 : 'transparent',\n '&:focus': {\n backgroundColor: hasCalendar\n ? ThemeV2.palette.geekBlue6\n : 'transparent',\n },\n },\n '& .MuiSelect-icon': {\n right: '.5rem',\n color: ThemeV2.palette.gray6,\n },\n '& .placeholder': {\n opacity: isFilter || !selectedMenuItemId ? 0.6 : 1,\n fontSize: isFilter ? '12px' : '14px',\n textAlign: isFilter ? 'right' : 'left',\n paddingRight: isFilter ? '2rem' : 0,\n fontWeight: ThemeV2.typography.fontWeightMedium,\n color: hasCalendar ? ThemeV2.palette.white : ThemeV2.palette.gray9,\n },\n '& .caret': {\n position: 'absolute',\n top: isFilter ? '1.5px' : '10px',\n right: '8px',\n zIndex: hasCalendar ? 0 : -1,\n cursor: 'pointer',\n '& svg': {\n width: '24px',\n height: '20px',\n '& path': {\n fill: hasCalendar ? ThemeV2.palette.white : ThemeV2.palette.gray6,\n },\n },\n },\n '&.MuiInput-underline:before': {\n borderBottom: 'none',\n },\n '&.MuiInput-underline:hover:not(.Mui-disabled):before': {\n borderBottom: 'none',\n },\n '&.MuiInput-underline:after': {\n borderBottom: 'none',\n },\n }),\n rippleVisible: {\n opacity: 0.5,\n },\n filterMenuItem: {\n fontSize: '.75rem !important',\n color: ThemeV2.palette.gray7,\n },\n});\n\nconst Dropdown = (props: DropdownProps) => {\n const {\n menuItems,\n onChange,\n openPopup,\n selectedMenuItemId,\n isFilter,\n placeholder,\n icon,\n filterPlaceholder,\n removeBorder,\n className: parentClassName,\n isDropdownOpen,\n toggleDropdown,\n hasCalendar,\n } = props;\n const classes = useStyles(props);\n const root = `${classes.root} ${parentClassName}`;\n\n const InputElement = useMemo(\n () => (removeBorder ? Input : OutlinedInput),\n [removeBorder],\n );\n\n const handlePopup = useCallback(\n (event: React.MouseEvent, item: Item) => {\n const hasPopUp = item.showPopup || false;\n if (hasPopUp) {\n event.stopPropagation();\n openPopup(event, item.id);\n }\n },\n [openPopup],\n );\n\n const handleOnChange = useCallback(\n (event: React.ChangeEvent<{ value: unknown }>, child: React.ReactNode) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore-next-line */\n const { id: hasPopUp } = child.props;\n if (hasPopUp === '0') {\n const selectedId = event.target.value as number | string;\n onChange(selectedId);\n }\n },\n [onChange],\n );\n\n const renderValue = useCallback(() => {\n const menuItem = menuItems.find((item) => {\n return item.id === selectedMenuItemId;\n });\n return (\n \n {menuItem?.value || placeholder}\n \n );\n }, [menuItems, selectedMenuItemId, placeholder]);\n\n const Caret = useCallback(() => {\n const caretStyles = isDropdownOpen\n ? {\n transform: 'scaleX(-1) scaleY(-1)',\n bottom: isFilter ? '3px' : '11px',\n pointerEvents: 'none',\n }\n : { pointerEvents: 'none' };\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore-next-line */\n \n );\n }, [isDropdownOpen, isFilter]);\n\n const svgColor = useMemo(\n () => (hasCalendar ? ThemeV2.palette.white : ThemeV2.palette.gray6),\n [hasCalendar],\n );\n\n const svgIcon = ;\n\n const handleOnClick = useCallback(() => {\n toggleDropdown();\n }, [toggleDropdown]);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore-next-line */\n const menuProps: MenuProps = useMemo(\n () => ({\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n getContentAnchorEl: null,\n MenuListProps: {\n disablePadding: true,\n },\n classes: {\n paper: classes.menuItemStyle,\n },\n }),\n [classes.menuItemStyle],\n );\n\n const onMenuItemClick = useCallback(\n (item: Item) => (event: React.MouseEvent) =>\n handlePopup(event, item),\n [handlePopup],\n );\n\n return (\n {svgIcon}\n }\n />\n }\n displayEmpty\n renderValue={renderValue}\n MenuProps={menuProps}\n open={isDropdownOpen}\n data-testid=\"dropdownCalendar\"\n >\n {isFilter && (\n \n {filterPlaceholder || 'Filter by'}\n \n )}\n {menuItems.map((item) => (\n \n {item.value}\n \n ))}\n \n );\n};\n\nDropdown.defaultProps = {\n icon: '',\n selectedMenuItemId: '',\n isFilter: false,\n placeholder: '',\n filterPlaceholder: '',\n className: '',\n showDropdown: true,\n openPopup: () => {},\n closePopup: () => {},\n onPopoverClick: () => {},\n toggleDropdown: () => {},\n hasCalendar: false,\n};\n\nexport default Dropdown;\n","import titleize from 'titleize';\n\nexport const ANALYTICS_EVENTS = {\n ACCOUNT_SIGN_UP: 'Account Setup - Sign Up',\n ACCOUNT_VERIFICATION: 'Account Setup - Verification',\n ACCOUNT_SETUP_COMPANY_NAME: 'Account Setup - Company Name',\n ACCOUNT_SETUP_PROFILE_NAME: 'Account Setup - Profile Name',\n ACCOUNT_SETUP_QUICK_INVITES: 'Account Setup - Quick Invites',\n ACCOUNT_SETUP_COMPLETE: 'Account Setup - Complete',\n\n PAGE_VIEW: 'page_view',\n CREATE_POST_START: 'feed.post.recognition.compose',\n CREATE_POST_GIVEN: 'feed.post.recognition.given',\n CREATE_POST_GIVE_ERROR: 'feed.post.recognition.give.error',\n RECOGNITION_PARTICIPATION_START: 'recognition.participation.start',\n RECOGNITION_PARTICIPATION_EXIT: 'recognition.participation.exit',\n RECOGNITION_PARTICIPATION_POST: 'recognition.participation.post',\n RECOGNITION_PARTICIPATION_POST_ERROR: 'recognition.participation.post.error',\n\n SAML_CONFIG_ENABLE_START: 'saml.enable.start',\n SAML_CONFIG_SAVE_TEST_ERROR: 'saml.save.test.error',\n SAML_CONFIG_SAVE_TEST_SUCCESS: 'saml.save.test.success',\n};\n\nexport const FEED_ANALYTICS_EVENTS = {\n FEED_SORTED: 'feedSorted',\n FEED_SCROLLED: 'feedScrolled',\n VIEWERS_HOVERED: 'viewersHovered',\n VIEWERS_SEARCHED: 'viewersSearched',\n VIEWER_PROFILE_CLICKED: 'viewerProfileClicked',\n FLOW_FEED_MENU_OPENED: 'flowFeedMenuOpened',\n FLOW_ARCHIVED: 'flowArchived',\n FLOW_LINK_COPIED: 'flowLinkCopied',\n FLOW_RAN: 'flowRan',\n PARTICIPANTS_REMINDED: 'participantsReminded',\n OCCURRENCE_ENDED: 'occurrenceEnded',\n EDIT_NOTIFICATIONS_CLICKED: 'editNotificationSettingsClicked',\n HOME_CLICKED: 'homeClicked',\n};\n\nexport const PAGE_NAMES = {\n HOME: 'Home',\n REDEEM: 'Redeem',\n SETTINGS: 'Settings',\n SIGN_OUT: 'Sign out',\n};\n\nexport const ADMIN_PAGE_NAME = (path: string) => {\n return path\n .substring(1)\n .split('/')\n .map((sub) => titleize(sub))\n .join(' -> ');\n};\n\nexport const LEFT_DRAWER_EVENT_NAME = 'left.drawer.events';\nexport const LEFT_DRAWER_ANALYTICS_EVENTS = {\n LEFT_DRAWER_EVENTS_LEFT_DRAWER_COLLAPSED: 'leftDrawerCollapsed',\n LEFT_DRAWER_EVENTS_LEFT_DRAWER_EXPANDED: 'leftDrawerExpanded',\n LEFT_DRAWER_EVENTS_REDEEM_CLICKED: 'redeemClicked',\n LEFT_DRAWER_EVENTS_MAIN_FEED_CLICKED: 'mainFeedClicked',\n LEFT_DRAWER_EVENTS_REWARDS_CLICKED: 'rewardsClicked',\n LEFT_DRAWER_EVENTS_FEEDS_LIST_EXPANDED: 'feedListExpanded',\n LEFT_DRAWER_EVENTS_FEEDS_LIST_COLLAPSED: 'feedListCollapsed',\n LEFT_DRAWER_EVENTS_FLOW_CLICKED: 'flowClicked',\n LEFT_DRAWER_EVENTS_FLOW_MENU_OPENED: 'flowMenuOpen',\n LEFT_DRAWER_EVENTS_FLOW_ARCHIVED: 'flowArchived',\n LEFT_DRAWER_EVENTS_FLOW_LINK_COPIED: 'flowLinkCopied',\n LEFT_DRAWER_EVENTS_FLOW_RAN: 'flowRan',\n LEFT_DRAWER_EVENTS_PARTICIPANTS_REMINDED: 'participantsReminded',\n LEFT_DRAWER_EVENTS_OCCURRENCE_ENDED: 'occurrenceEnded',\n LEFT_DRAWER_EVENTS_EDIT_NOTIFICATION_SETTINGS_CLICKED:\n 'editNotificationSettingsClicked',\n LEFT_DRAWER_EVENTS_ARCHIVED_LIST_EXPANDED: 'archivedListExpanded',\n LEFT_DRAWER_EVENTS_ARCHIVED_LIST_COLLAPSED: 'archivedListCollapsed',\n LEFT_DRAWER_EVENTS_FLOW_UNARCHIVED: 'flowUnarchived',\n LEFT_DRAWER_EVENTS_FLOW_UNARCHIVE_CANCELLED: 'flowUnarchiveCancelled',\n LEFT_DRAWER_EVENTS_UNREAD_NOTIFICATIONS_VIEW_CLICKED:\n 'unreadNotificationsViewClicked',\n LEFT_DRAWER_EVENTS_ALL_NOTIFICATIONS_VIEW_CLICKED:\n 'allNotificationsViewClicked',\n LEFT_DRAWER_EVENTS_MARKED_ALL_READ_CLICKED: 'markedAllReadClicked',\n LEFT_DRAWER_EVENTS_NOTIFICATION_CLICKED: 'notificationClicked',\n LEFT_DRAWER_EVENTS_NOTIFICATION_SETTINGS_CLICKED:\n 'notificationSettingsClicked',\n LEFT_DRAWER_EVENTS_SETTINGS_GENERAL_CLICKED: 'settingsGeneralClicked',\n LEFT_DRAWER_EVENTS_SETTINGS_NOTIFICATIONS_CLICKED:\n 'settingsNotificationsClicked',\n};\n\nexport const POST_ANALYTICS_EVENTS = {\n SEE_FULL_POST_CLICK: 'seeFullPostClicked',\n MENU_CLICKED: 'postMenuClicked',\n DELETED: 'postDeleted',\n LINK_COPIED: 'postLinkCopied',\n MEMBER_NAME_CLICKED: 'postMemberNameClicked',\n FLOW_CLICKED: 'flowclicked',\n MENTIONED_MEMBER_NAME_CLICKED: 'mentionedMemberNameClicked',\n FILE_DOWNLOADED: 'postFileDownloaded',\n COMMENT_STARTED: 'commentStarted',\n COMMENT_POSTED: 'commentPosted',\n COMMENT_EXITED: 'commentExited',\n COMMENT_ERRORED: 'commentErrored',\n COMMENT_DELETED: 'commentDeleted',\n COMMENT_DELETE_ERRORED: 'commentDeleteErrored',\n COMMENT_REACTION_ADDED: 'reactionAdded',\n COMMENT_REACTION_ADD_ERRORED: 'reactionAddErrored',\n COMMENT_REACTION_REMOVED: 'reactionRemoved',\n};\n\nexport const FLOW_BUILDER_EVENTS = {\n // Action Events\n FLOW_CREATED: 'flowCreated',\n FLOW_PREVIEWED: 'flowPreviewed',\n FLOW_EDIT_SAVED: 'flowEditSaved',\n ACTION_SELECTED: 'actionSelected',\n FLOW_EMOJI_ADDED: 'flowEmojiAdded',\n FLOW_TITLE_ADDED: 'flowTitleAdded',\n TRIGGER_SELECTED: 'triggerSelected',\n VIEWERS_SELECTED: 'viewersSelected',\n FLOW_DRAFT_EXITED: 'flowDraftExited',\n FLOW_EDIT_CLICKED: 'flowEditClicked',\n FLOW_EDIT_REVERTED: 'flowEditReverted',\n FLOW_OWNER_CHANGED: 'flowOwnerChanged',\n CONTENT_BLOCK_ADDED: 'contentBlockAdded',\n CONTENT_BLOCK_DELETED: 'contentBlockDeleted',\n PARTICIPANTS_SELECTED: 'participantsSelected',\n FLOW_DESCRIPTION_ADDED: 'flowDescriptionAdded',\n SCHEDULE_START_DATE_SELECTED: 'scheduleStartDateSelected',\n SCHEDULE_START_TIME_SELECTED: 'scheduleStartTimeSelected',\n SCHEDULE_END_DATE_SELECTED: 'scheduleEndDateSelected',\n SCHEDULE_END_TIME_SELECTED: 'scheduleEndTimeSelected',\n RECURRENCE_SELECTED: 'recurrenceSelected',\n DUE_DATE: 'dueDate',\n SHORT_CUT: 'shortcut',\n\n // Show Events\n ACTION_SHOW: 'actionShow',\n BUILDER_SHOW: 'builderShow',\n TRIGGER_SHOW: 'triggerShow',\n CONTENT_SHOW: 'contentShow',\n VISIBILITY_SHOW: 'visibilityShow',\n CONFIRMATION_SHOW: 'confirmationShow',\n PARTICIPATION_SHOW: 'participationShow',\n\n // Error Events\n EMOJI_ERROR: 'emojiError',\n FLOW_TITLE_ERROR: 'flowTitleError',\n FLOW_OWNER_ERROR: 'flowOwnerError',\n CREATE_FLOW_ERROR: 'createFlowError',\n SELECT_VIEWERS_ERROR: 'selectViewersError',\n SELECT_CONTENT_ERROR: 'selectContentError',\n FLOW_DESCRIPTION_ERROR: 'flowDescriptionError',\n SCHEDULE_END_TIME_ERROR: 'scheduleEndTimeError',\n SCHEDULE_DUE_DATE_ERROR: 'scheduleDueDateError',\n SCHEDULE_END_DATE_ERROR: 'scheduleEndDateError',\n EDIT_SAVE_CHANGES_ERROR: 'editSaveChangesError',\n EDIT_REVERT_CHANGES_ERROR: 'editRevertChangesError',\n SCHEDULE_START_DATE_ERROR: 'scheduleStartDateError',\n SCHEDULE_START_TIME_ERROR: 'scheDuleStartTimeError',\n SELECT_PARTICIPANTS_ERROR: 'selectParticipantsError',\n};\n\nexport const RIGHT_DRAWER_EVENT_NAME = 'right.drawer.events';\nexport const RIGHT_DRAWER_EVENTS = {\n RIGHT_DRAWER_EXPANDED: 'rightDrawerExpanded',\n RIGHT_DRAWER_COLLAPSED: 'rightDrawerCollapsed',\n TAB_CLICKED: 'tabClicked',\n FILTER_SECTION_EXPANDED: 'filterSectionExpanded',\n FILTER_SECTION_COLLAPSED: 'filterSectionCollapsed',\n FILTERS_APPLIED: 'filtersApplied',\n FILTERS_CLEARED: 'filtersCleared',\n MEMBER_SEARCHED: 'memberSearched',\n MEMBER_CLICKED: 'memberClicked',\n SHOW_MORE_CLICKED: 'showMoreClicked',\n SHOW_LESS_CLICKED: 'showLessClicked',\n CLICK_MEMBER_NAME: 'clickMemberName',\n};\n\nexport const PARTICIPATION_ANALYTICS_EVENTS = {\n START: 'participationStarted',\n BLOCK_ANSWERED: 'blockAnswered',\n BLOCK_SKIPPED: 'blockSkipped',\n POSTED: 'participationPosted',\n EXIT_TRIGGERED: 'participationExited',\n EXIT_LEAVE_CLICKED: 'participationExitLeaveClicked',\n EXIT_CANCELED: 'participationExitCanceled',\n ERRORED: 'participationErrored',\n NAVIGATION_PREV_CLICKED: 'navigationUpClicked',\n NAVIGATION_NEXT_CLICKED: 'navigationDownClicked',\n PROGRESSBAR_CLICKED: 'progressBarClicked',\n VIEWERS_HOVERED: 'viewersHovered',\n VIEWERS_SEARCHED: 'viewersSearched',\n NEED_HELP_CLICKED: 'needHelpClicked',\n};\n\nexport const ACCOUNT_ONBOARDING_EVENTS = {\n GO_BACK: 'goBack',\n NEXT_STEP: 'nextStep',\n SKIP_SETUP: 'skipSetup',\n LEAVE_SETUP: 'leaveSetup',\n SELECT_PATH: 'selectPath',\n FINISH_SETUP: 'finishSetup',\n INVITE_LATER: 'inviteLater',\n REQUEST_DEMO: 'requestDemo',\n USE_TEMPLATE: 'useTemplate',\n INVITE_CREATE: 'inviteCreate',\n SELECT_MEETING: 'selectMeeting',\n CALENDAR_CONNECT: 'calendarConnect',\n TEMPLATE_SELECTED: 'templateSelected',\n COMPLETE_ONBOARDING: 'completeOnboarding',\n EXPLORE_TEMPLATES: 'exploreTemplates',\n};\n\nexport const INVITE_MEMBER_EVENTS = {\n INVITE_START: 'inviteStart',\n COPY_INVITE_LINK: 'copyInviteLink',\n INVITE_COMPLETE: 'inviteComplete',\n};\n\nexport const MANAGE_USERS_EVENTS = {\n INVITE_START: 'inviteStart',\n COPY_INVITE_LINK: 'copyInviteLink',\n INVITE_COMPLETE: 'inviteComplete',\n};\n\nexport const TEMPLATE_GALLERY_EVENTS = {\n APPLY_FILTER: 'applyFilter',\n PREVIEW_TEMPLATE: 'previewTemplate',\n USE_TEMPLATE: 'useTemplate',\n SEARCH: 'search',\n START_FROM_SCRATCH: 'startFromScratch',\n TEMPLATE_GALLERY_SHOW: 'templateGalleryShow',\n};\n\nexport const ACTION_EVENTS = {\n SHOW: 'show',\n ERROR: 'error',\n ACTION: 'action',\n};\n\nexport const MAIN_FEED_ACTION_BAR_EVENTS = {\n DROPDOWN_ACTION_BAR_OPENED: 'dropdownActionBarOpened',\n ACTION_BAR_DROPDOWN_CLOSED: 'actionBarDropdownClosed',\n ACTION_BAR_DROPDOWN_SEARCHED: 'actionBarDropdownSearched',\n ACTION_BAR_DROPDOWN_SEARCH_CLEAR_CLICKED:\n 'actionBarDropdownSearchClearClicked',\n ADD_FLOW_CLICKED: 'addFlowClicked',\n NEED_HELP_CLICKED: 'needHelpClicked',\n PARTICIPATION_STARTED: 'participationStarted',\n VIEW_FEED_CLICKED: 'viewFeedClicked',\n};\n\nexport const NOTEBOOK_EVENTS = {\n NOTEBOOK_TASK_CREATION: 'noteCreated',\n NOTEBOOK_SHOW: 'notebookShow',\n NOTEBOOK_ERROR: 'notebookError',\n NOTEBOOK_SECTION_COLLAPSED: 'sectionCollapse',\n NOTEBOOK_SECTION_EXPANDED: 'sectionExpand',\n NOTEBOOK_SECTION_CHANGED: 'noteSectionChange',\n};\n\nexport const NOTEBOOK_TASK_EVENTS = {\n NOTEBOOK_TASK_CREATE: 'create',\n NOTEBOOK_TASK_ARCHIVE: 'archive',\n NOTEBOOK_TASK_DELETE: 'delete',\n NOTEBOOK_TASK_TITLE_UPDATE: 'updateTitle',\n NOTEBOOK_TASK_ASSIGNMENT_UPDATE: 'updateAssignment',\n NOTEBOOK_TASK_STATUS_UPDATE: 'updateStatus',\n NOTEBOOK_TASK_DUE_DATE_UPDATE: 'updateDueDate',\n NOTEBOOK_TASK_SHOW: 'notebookTaskShow',\n NOTEBOOK_TASK_ERROR: 'notebookTaskError',\n};\n\nexport const SHARE_SHEET_EVENTS = {\n SHARE_SHEET_SHOW: 'shareSheetShow',\n SHARE_SHEET_STARTED: 'shareSheetStarted',\n COPY_LINK: 'copyLink',\n PARTICIPANTS_SELECTED: 'participantsSelected',\n VIEWERS_SELECTED: 'viewersSelected',\n SHARE_SHEET_COMPLETED: 'shareSheetCompleted',\n SHARE_SHEET_ERROR: 'shareSheetError',\n ANONYMOUS_TOGGLE_ON: 'anonymousToggleOn',\n ANONYMOUS_TOGGLE_OFF: 'anonymousToggleOff',\n ANONYMOUS_OPTIONAL_ON: 'anonymousOptionalOn',\n UPDATE_LINK: 'updateLink',\n NEW_LINK_SETTINGS: 'newLinkSettings',\n};\n\nexport enum AnalyticsEvents {\n SHOW = 'show',\n ACTION = 'action',\n ERROR = 'error',\n}\n\nexport const NOTEBOOK_EVENT = 'notebook.events';\nexport const NOTEBOOK_TASK_EVENT = 'task.events';\nexport const BUILDER_EVENTS = 'builder.events';\nexport const FLOW_INSIGHTS_EVENTS = 'insights.events';\nexport const ONBOARDING_EVENTS = 'account.onboarding.events';\nexport const INVITE_MEMBER_EVENT = 'invite.events';\nexport const TEMPLATE_GALLERY_EVENT = 'template.events';\nexport const FEED_EVENTS = 'feed.events';\nexport const SHARE_SHEET_EVENT = 'share.sheet.events';\n","import {\n InputAdornment,\n InputBaseComponentProps,\n InputLabelProps,\n OutlinedInputProps,\n} from '@material-ui/core';\nimport TextField from '@material-ui/core/TextField';\nimport React, { useMemo, KeyboardEvent } from 'react';\nimport styled, { css } from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport SVGIcon from '../../atoms/SVGIcon';\n\nconst muiTextFieldHeight = (height: number, padding: string) => {\n const offset = (53 - height) / 2;\n\n return css`\n input.MuiInputBase-input.MuiOutlinedInput-input {\n padding-top: ${() => (padding ? padding : `calc(18.5px - ${offset}px)`)};\n padding-bottom: ${() =>\n padding ? padding : `calc(18.5px - ${offset}px)`};\n }\n\n label {\n top: -${offset}px;\n }\n\n label[data-shrink='true'] {\n top: 0;\n }\n `;\n};\n\nexport interface TextfieldProps {\n value: string;\n onChange: (e: React.ChangeEvent) => void;\n onSuffixAdornmentClick?: (e: React.MouseEvent) => void;\n label?: React.ReactNode;\n name?: string;\n helperText?: string | React.ReactNode;\n placeholder?: string;\n hasError?: boolean;\n multiline?: boolean;\n maxRows?: number;\n minRows?: number;\n disabled?: boolean;\n icon?: string;\n suffix?: string;\n prefix?: React.ReactNode;\n type?: string;\n size?: 'small' | 'medium' | 'large';\n className?: string;\n onBlur?: () => void;\n onKeyPress?: (e: KeyboardEvent) => void;\n onInputFocus?: () => void;\n inputProps?: InputBaseComponentProps;\n InputLabelPropsObj?: Partial;\n InputProps?: Partial;\n autoFocus?: boolean;\n removeElevation?: boolean;\n background?: string;\n autoComplete?: string;\n spellCheck?: boolean;\n fullWidth?: boolean;\n padding?: string;\n}\n\nconst StyledTextfield = styled(TextField)<{\n height: number;\n activated: number;\n error?: boolean;\n disabled?: boolean;\n label?: React.ReactNode;\n background?: string;\n $removeElevation?: boolean;\n padding?: string;\n}>`\n width: 100%;\n font-family: ${ThemeV2.typography.adminFontFamily};\n ${({ height, padding }) => muiTextFieldHeight(height || 40, padding || '')}\n .MuiFormLabel-root.MuiInputLabel-root {\n font-size: 14px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n > span {\n line-height: 0;\n }\n &.MuiInputLabel-shrink {\n transform: translate(14px, 0px) scale(0.75);\n top: -4px;\n color: ${(props) => {\n return props?.error ? ThemeV2.palette.dustRed6 : 'inherit';\n }};\n }\n color: ${({ disabled, activated, error }) => {\n if (disabled) {\n return ThemeV2.palette.gray6;\n }\n if (activated) {\n return ThemeV2.palette.gray9;\n }\n if (error) {\n return ThemeV2.palette.dustRed6;\n }\n return ThemeV2.palette.gray7;\n }};\n &.Mui-focused {\n color: ${(props) => {\n return props?.error\n ? ThemeV2.palette.dustRed6\n : ThemeV2.palette.geekBlue6;\n }};\n }\n }\n .MuiInputBase-root {\n input {\n margin-left: 0px;\n font-size: 14px;\n line-height: 22px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n height: 16px;\n }\n background-color: ${({ disabled, background }) => {\n if (background) return background;\n if (disabled) return ThemeV2.palette.gray3;\n return 'transparent';\n }};\n fieldset {\n border-color: ${({ activated, disabled }) => {\n if (disabled) {\n return ThemeV2.palette.gray3;\n }\n return activated ? ThemeV2.palette.gray7 : ThemeV2.palette.gray5;\n }};\n ${({ label }) =>\n label &&\n `span {\n font-size: 10.5px;\n line-height: 20px;\n padding: 0 4px;\n }`}\n }\n &:hover {\n box-shadow: ${({ disabled, $removeElevation }) =>\n disabled || $removeElevation\n ? 'none'\n : `0px 2px 4px rgba(0, 0, 0, 0.04),\n 0px 3px 4px rgba(0, 0, 0, 0.02), 0px 1px 5px rgba(0, 0, 0, 0.12)`};\n\n fieldset {\n border-color: ${({ activated, disabled, error }) => {\n if (disabled) {\n return ThemeV2.palette.gray3;\n }\n if (error) {\n return ThemeV2.palette.dustRed6;\n }\n return activated ? ThemeV2.palette.gray7 : ThemeV2.palette.gray5;\n }};\n }\n }\n }\n .MuiOutlinedInput-root.Mui-disabled .MuiOutlinedInput-notchedOutline {\n border-color: ${ThemeV2.palette.gray3};\n }\n .MuiOutlinedInput-root.Mui-focused {\n .MuiOutlinedInput-notchedOutline {\n border-width: 1px;\n border-color: ${ThemeV2.palette.geekBlue6};\n }\n .MuiInputAdornment-root {\n svg > path:last-of-type {\n fill: ${ThemeV2.palette.geekBlue6};\n }\n }\n }\n .MuiOutlinedInput-root.Mui-error {\n .MuiInputAdornment-root {\n svg > path:last-of-type {\n fill: ${ThemeV2.palette.dustRed6};\n }\n }\n .MuiOutlinedInput-notchedOutline {\n border-color: ${ThemeV2.palette.dustRed6};\n }\n }\n .MuiInputAdornment-root {\n p {\n font-size: 14px;\n line-height: 22px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n }\n svg > path:last-of-type {\n fill: ${({ activated }) =>\n activated ? ThemeV2.palette.gray9 : ThemeV2.palette.gray6};\n }\n }\n p {\n color: ${({ disabled }) =>\n disabled ? ThemeV2.palette.gray6 : ThemeV2.palette.gray7};\n }\n .MuiAutocomplete-endAdornment {\n top: unset;\n }\n`;\n\nconst NewTextfield = ({\n label,\n name,\n helperText,\n placeholder,\n size = 'medium',\n value,\n onChange,\n onKeyPress,\n hasError,\n disabled,\n multiline,\n maxRows,\n minRows,\n icon,\n suffix,\n prefix,\n type = 'text',\n className,\n onBlur,\n onInputFocus,\n inputProps,\n InputLabelPropsObj,\n onSuffixAdornmentClick,\n InputProps: propInputProps,\n autoFocus = false,\n removeElevation = false,\n background,\n autoComplete,\n spellCheck = true,\n fullWidth,\n padding = '',\n}: TextfieldProps) => {\n const calculateHeight = () => {\n if (size === 'small') {\n return 32;\n }\n if (size === 'medium') {\n return 40;\n }\n return 48;\n };\n const InputProps = useMemo(\n () => ({\n ...(propInputProps && {\n ...propInputProps,\n }),\n ...(suffix && {\n endAdornment: (\n \n {suffix}\n \n ),\n }),\n ...(icon && {\n startAdornment: (\n \n \n \n ),\n }),\n ...(prefix && {\n startAdornment: (\n {prefix}\n ),\n }),\n }),\n [icon, prefix, propInputProps, suffix, onSuffixAdornmentClick],\n );\n\n const newInputProps = useMemo(() => {\n const defaultValue = { 'aria-label': name, spellCheck };\n if (inputProps) {\n return { ...inputProps, ...defaultValue };\n }\n return defaultValue;\n }, [inputProps, name, spellCheck]);\n\n return (\n 0 ? 1 : 0}\n error={hasError}\n disabled={disabled}\n InputProps={InputProps}\n onBlur={onBlur}\n onFocus={onInputFocus}\n multiline={multiline}\n maxRows={maxRows}\n minRows={minRows}\n background={background}\n // eslint-disable-next-line react/jsx-no-duplicate-props\n inputProps={newInputProps}\n InputLabelProps={InputLabelPropsObj}\n className={className}\n autoFocus={autoFocus}\n $removeElevation={removeElevation}\n autoComplete={autoComplete}\n fullWidth={fullWidth}\n padding={padding}\n />\n );\n};\n\nexport default NewTextfield;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { checkIfProduction } from './admin';\n\nconst appID = checkIfProduction() ? 'vnd9nsk2' : 'jo3ehwt7';\n\nexport const updateIntercom = (data = {}) => {\n window.Intercom('update', data);\n};\n\nexport const bootIntercom = (user = {}) => {\n if (checkIfProduction()) {\n window.Intercom('boot', {\n app_id: appID,\n hide_default_launcher: true,\n ...user,\n });\n }\n};\n\nexport const rebootIntercom = () => {\n window.Intercom('boot', {\n app_id: appID,\n hide_default_launcher: true,\n });\n};\n\nexport const openIntercomMessenger = () => {\n if (checkIfProduction()) {\n window.Intercom('show');\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { string, bool } from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: ({ color, isFullWidth, marginTop, marginBottom }) => ({\n height: '1px',\n width: isFullWidth ? '100%' : '150px',\n background: color,\n marginTop,\n marginBottom,\n boxSizing: 'border-box',\n }),\n});\n\nconst Divider = ({\n color,\n isFullWidth,\n className: parentClassName,\n marginTop,\n marginBottom,\n}) => {\n const { root } = useStyles({ color, isFullWidth, marginTop, marginBottom });\n const className = `${root} ${parentClassName}`;\n return
;\n};\n\nDivider.propTypes = {\n color: string,\n isFullWidth: bool,\n className: string,\n marginTop: string,\n marginBottom: string,\n};\n\nDivider.defaultProps = {\n color: ThemeV2.palette.gray6,\n isFullWidth: false,\n className: '',\n marginTop: '0',\n marginBottom: '0',\n};\n\nexport default Divider;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport isNil from 'lodash.isnil';\nimport Bowser from 'bowser';\nimport axios from 'axios';\n\nclass Client {\n static ping() {\n console.log('Client ready');\n }\n\n static apiEndpoint(environment) {\n environment = environment || 'production';\n if (environment === 'development') {\n return 'https://api-dev.joinassembly.com';\n } else if (environment === 'LOCAL') {\n return 'http://localhost:8080';\n }\n return 'https://api-prod.joinassembly.com';\n }\n\n static clientInformation() {\n const clientInformationObject = {\n platform: 'WEB',\n };\n if (!isNil(window)) {\n clientInformationObject.viewport = {\n width: window.outerWidth,\n height: window.outerHeight,\n };\n const { browser, os } = Bowser.parse(window.navigator.userAgent);\n clientInformationObject.browser = browser;\n clientInformationObject.os = os;\n }\n\n return clientInformationObject;\n }\n\n static campaign({ lander, referrer }) {\n const campaignLander = lander || window.location.href;\n let campaignReferrer = referrer || window.document.referrer;\n if (!isNil(campaignReferrer)) {\n const match = campaignReferrer.match(/joinassembly\\.com|carrothr\\.com/);\n if (!isNil(match)) {\n campaignReferrer = null;\n }\n }\n return {\n lander: campaignLander,\n referrer: campaignReferrer,\n };\n }\n\n static async event({\n environment,\n type,\n employerId,\n userId,\n payload,\n lander,\n referrer,\n }) {\n if (isNil(type)) {\n throw new Error('Please provide an event type');\n }\n\n const eventObject = {\n type,\n employerId,\n userId,\n campaign: Client.campaign({ lander, referrer }),\n payload,\n client: Client.clientInformation(),\n };\n const apiEndpoint = Client.apiEndpoint(environment);\n const url = `${apiEndpoint}/api/v2/metrics/events/record`;\n await axios.post(url, { event: eventObject });\n }\n}\nClient.eventTypes = {\n REGISTRATION: 'REGISTRATION',\n PROFILE_COMPLETE: 'PROFILE_COMPLETE',\n SUBSCRIPTION: 'SUBSCRIPTION',\n};\n\nexport default Client;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport cookie from 'react-cookies';\nimport qs from 'qs';\nimport Client from '../../vendors/assembly_metrics';\nimport { checkIfProduction } from '../admin';\n\nexport const EventType = {\n REGISTRATION: 'REGISTRATION',\n PROFILE_COMPLETE: 'PROFILE_COMPLETE',\n SUBSCRIPTION: 'SUBSCRIPTION',\n};\n\nexport function trackEvent(eventType, props) {\n const { userId } = props;\n\n const lander = cookie.load('lander') || null;\n const referrer = cookie.load('referrer') || null;\n const userIdStored = cookie.load('userId');\n\n if (userId && userId !== userIdStored) {\n cookie.save('userId', userId, { path: '/' });\n }\n\n let type;\n switch (eventType) {\n case EventType.REGISTRATION:\n type = Client.eventTypes.REGISTRATION;\n break;\n case EventType.PROFILE_COMPLETE:\n type = Client.eventTypes.PROFILE_COMPLETE;\n break;\n case EventType.SUBSCRIPTION:\n type = Client.eventTypes.SUBSCRIPTION;\n break;\n default:\n type = eventType;\n }\n\n Client.event({\n environment: checkIfProduction() ? 'production' : 'development',\n type,\n lander,\n referrer,\n ...props,\n });\n}\n\nexport function saveTrackingDetails() {\n const parsed = qs.parse(window.location.search, { ignoreQueryPrefix: true });\n const { lander, referrer } = parsed;\n\n if (\n !cookie.load('lander') &&\n Object.prototype.hasOwnProperty.call(parsed, 'lander')\n ) {\n cookie.save('lander', lander || '-', { path: '/' });\n }\n if (\n !cookie.load('referrer') &&\n Object.prototype.hasOwnProperty.call(parsed, 'referrer')\n ) {\n cookie.save('referrer', referrer || '-', { path: '/' });\n }\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { createSelector } from 'reselect';\nimport _ from 'lodash';\nimport { GET_APP_CURRENCY } from '../../Utils/constants';\nimport DEFAULT_CURRENCY from '../../Utils/superadmin/constants';\n\nexport const employerSelector = (state) =>\n _.get(state, ['admin', 'employer'], null);\n\nexport const regularAllowanceSelector = (state) =>\n _.get(state, ['admin', 'employer', 'regularAllowance'], 0);\n\nexport const getEmployerCompanyDetails = (state) =>\n _.get(state, ['admin', 'companyDetails'], null);\n\nexport const getEmployerCustomCurrencySelector = (state) => {\n const currency = {};\n currency.singular = _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyName'],\n null,\n );\n currency.plural = _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyNamePlural'],\n null,\n );\n return GET_APP_CURRENCY(currency);\n};\n\nexport const getEmployerCustomIconSelector = (state) => {\n let icon = null;\n const customIcon = _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyIconURL'],\n null,\n );\n const emoji = _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyEmoji'],\n null,\n );\n if (customIcon && customIcon.length > 0) {\n icon = {};\n icon.type = 'icon';\n icon.value = customIcon;\n } else if (emoji) {\n icon = {};\n icon.type = 'emoji';\n icon.value = emoji;\n }\n return icon;\n};\n\nconst currencyNameSelector = (state) => {\n return _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyName'],\n DEFAULT_CURRENCY.CURRENCY_NAME,\n );\n};\n\nconst customURLSelector = (state) => {\n return _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyIconURL'],\n null,\n );\n};\n\nconst customEmojiSelector = (state) => {\n return _.get(\n state,\n ['admin', 'companyDetails', 'currency', 'currencyEmoji'],\n null,\n );\n};\n\nexport const getEmployerAssemblyIconSelector = createSelector(\n customEmojiSelector,\n customURLSelector,\n currencyNameSelector,\n (emoji, customUrl, currencyName) => {\n let hexCode = null;\n let url = null;\n let id = currencyName;\n if (emoji) {\n if (emoji.hexCode) {\n hexCode = emoji.hexCode;\n }\n if (emoji.url) {\n url = emoji.url;\n }\n if (emoji.id) {\n id = emoji.id;\n }\n }\n if (customUrl) {\n url = customUrl;\n }\n return { hexCode, url, id, currencyName };\n },\n);\n\nexport const getEmployerCustomLogoSelector = (state) => {\n let logo = null;\n if (\n _.get(\n state,\n ['admin', 'employer', 'logo', 'original', 'relativeUrl'],\n false,\n )\n ) {\n logo = {};\n logo.path = _.get(\n state,\n ['admin', 'employer', 'logo', 'original', 'relativeUrl'],\n null,\n );\n logo.name = _.get(\n state,\n ['admin', 'employer', 'logo', 'original', 'filename'],\n '',\n );\n }\n return logo;\n};\n\nexport const getRewardsPaymentStatus = createSelector(\n employerSelector,\n (employer) => {\n if (!employer) {\n return false;\n }\n return _.get(employer, ['accounts', 'rewards', 'isChargeable'], false);\n },\n);\n\nexport const getSlackIntegrationSelector = (state) =>\n _.get(state, ['admin', 'employer', 'integrations', 'slack_v2'], null);\n\nexport const isSlackIntegratedSelector = createSelector(\n getSlackIntegrationSelector,\n (slackInfo) => {\n if (!slackInfo) {\n return false;\n }\n return _.get(slackInfo, ['isAdded'], false);\n },\n);\n\nexport const getSlackOnboardingStep = (state) => {\n let slackOnboardingStep = null;\n if (\n _.get(\n state,\n ['admin', 'employer', 'integrations', 'slack_v2', 'isAdded'],\n false,\n )\n ) {\n slackOnboardingStep = _.get(\n state,\n ['admin', 'employer', 'integrations', 'slack_v2', 'onboardingStep'],\n null,\n );\n }\n return slackOnboardingStep;\n};\n","export enum IntegrationProvidersEnum {\n SLACK = 'SLACK',\n MSTEAM = 'MSTEAM',\n}\n\nexport enum ConnectionStatusEnum {\n AUTHORIZED = 'AUTHORIZED',\n NOT_AUTHORIZED = 'NOT_AUTHORIZED',\n CONFIGURATION_COMPLETE = 'CONFIGURATION_COMPLETE',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum IntegrationStatusEnum {\n ACTIVE = 'ACTIVE',\n COMING_SOON = 'COMING_SOON',\n}\n\nexport interface BotStatusResponse {\n id: IntegrationProvidersEnum;\n status: ConnectionStatusEnum;\n integrationStatus: IntegrationStatusEnum;\n metaData?: {\n welcomeMessageSent: boolean;\n activeChannel: {\n id: string;\n name: string;\n };\n slackTeam?: {\n id: string;\n name: string;\n };\n msteam?: {\n id: string;\n name: string;\n };\n };\n}\n\nexport interface BotDetailsItem {\n id: IntegrationProvidersEnum;\n logo: string;\n displayText: string;\n buttonText: string;\n warningText: string;\n redirectURL?: string;\n isBotConnected: boolean;\n isWelcomeMessageSent: boolean;\n activeChannel?: {\n id: string;\n displayText: string;\n };\n slackTeam?: {\n id: string;\n name: string;\n };\n msteam?: {\n id: string;\n name: string;\n };\n disabled: boolean;\n}\n\nexport interface IntegrationsPresentationalProps {\n botsDetails: [BotDetailsItem];\n isRequestLoading: boolean;\n onActionClick: (id: string) => void;\n errorMessage: string | null;\n onDisconnectSuccess: () => void;\n hideError: () => void;\n}\n","import { API_URL_WITH_V3, API_URL_WITH_V2 } from '../../config';\n\nexport const TEST = 'test';\nexport const TEST_WITH_SUB = 'testWithSub';\nexport const GET_SSO_OAUTH_CONFIG = 'getSSOOAuthConfig';\nexport const AUTHORIZE_SSO = 'authorizeSSO';\nexport const SIGN_IN_SSO = 'signInSSO';\nexport const GET_IDENTITY_MANAGER_DATA = 'getIdentityManagerData';\nexport const GET_INTEGRATION_DATA = 'getIntegrationData';\nexport const GET_JOB_STATUS = 'getJobStatus';\nexport const CONFIGURE_IDENTITY_MANAGER = 'configureIdentityManager';\nexport const GET_IDENTITY_MANAGER_SETTINGS_DATA = 'getSettingsData';\nexport const DISCONNECT_IDENTITY_MANAGER = 'disconnectIdentityManager';\nexport const SWITCH_ACCOUNT_PREVIEW = 'switchAccountPreview';\nexport const SWITCH_ACCOUNT = 'switchAccount';\nexport const GET_BOT_MANAGER_DATA = 'getBotManagerData';\nexport const DISCONNECT_BOT_MANAGER = 'disconnectBotManager';\n\nexport const GET_PENDING_REQUESTS = 'GET_PENDING_REQUESTS';\nexport const AUTO_APPROVE_MEMBERS = 'AUTO_APPROVE_MEMBERS';\n\nconst endpoints: Record = {\n [GET_SSO_OAUTH_CONFIG]: {\n method: 'GET',\n url: `${API_URL_WITH_V3}/users/identity/:sso/oauth2Config/im`,\n },\n [AUTHORIZE_SSO]: {\n method: 'POST',\n url: `${API_URL_WITH_V3}/assembly/integration/:sso/authorize`,\n },\n [SIGN_IN_SSO]: {\n method: 'POST',\n url: `${API_URL_WITH_V3}/users/identity/:sso/signin`,\n },\n [GET_IDENTITY_MANAGER_DATA]: {\n method: 'GET',\n url: `${API_URL_WITH_V3}/assembly/integration/identityManagerData`,\n },\n [GET_INTEGRATION_DATA]: {\n method: 'GET',\n url: `${API_URL_WITH_V3}/assembly/integration/:sso/integrationData`,\n },\n [GET_JOB_STATUS]: {\n method: 'GET',\n url: `${API_URL_WITH_V3}/monitoring/job/:jobId/status`,\n },\n [CONFIGURE_IDENTITY_MANAGER]: {\n method: 'POST',\n url: `${API_URL_WITH_V3}/assembly/integration/:sso/configure`,\n },\n [GET_IDENTITY_MANAGER_SETTINGS_DATA]: {\n method: 'PUT',\n url: `${API_URL_WITH_V3}/assembly/integration/:sso/settings`,\n },\n [DISCONNECT_IDENTITY_MANAGER]: {\n method: 'PUT',\n url: `${API_URL_WITH_V3}/assembly/integration/:sso/disconnect`,\n },\n [SWITCH_ACCOUNT_PREVIEW]: {\n method: 'POST',\n url: `${API_URL_WITH_V2}/employer/billing/plans/switch/preview`,\n },\n [SWITCH_ACCOUNT]: {\n method: 'POST',\n url: `${API_URL_WITH_V2}/employer/billing/plans/switch`,\n },\n [GET_BOT_MANAGER_DATA]: {\n method: 'GET',\n url: `${API_URL_WITH_V3}/assembly/bot/botManagerData`,\n },\n [DISCONNECT_BOT_MANAGER]: {\n method: 'PUT',\n url: `${API_URL_WITH_V3}/assembly/bot/:sso/disconnect`,\n },\n [TEST]: {\n method: 'GET',\n url: '/test',\n },\n [TEST_WITH_SUB]: {\n method: 'GET',\n url: '/test/:sub',\n },\n [GET_PENDING_REQUESTS]: {\n method: 'GET',\n url: `${API_URL_WITH_V3}/assembly/members/invite`,\n },\n [AUTO_APPROVE_MEMBERS]: {\n method: 'POST',\n url: `${API_URL_WITH_V3}/assembly/members/invite/approve`,\n },\n};\n\nexport default endpoints;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { PulseLoader } from 'react-spinners';\nimport Grid from '@material-ui/core/Grid';\n\nimport themeV2 from '../../componentsV2/theme';\n\nconst LoadingPulse = (props) => (\n \n {/* */}\n \n {/* */}\n \n);\n\nexport default LoadingPulse;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport { put, takeEvery } from 'redux-saga/effects';\nimport _ from 'lodash';\nimport { API_URL_WITH_V2 } from '../../../../config';\nimport { AuthHeadersV2 } from '../../../shared/HeaderToken';\nimport { resetBillingInvoices } from '../../../../aV2/modules/admin/billings/paymentsHistory/index';\n\nconst apiEndpoints = {\n TIERS: `${API_URL_WITH_V2}/employer/billing/plans`,\n CURRENT_PLAN: `${API_URL_WITH_V2}/employer/billing/plans/active`,\n SWITCH_TIER_PREVIEW: `${API_URL_WITH_V2}/employer/billing/plans/switch/preview`,\n SWITCH_TIER: `${API_URL_WITH_V2}/employer/billing/plans/switch`,\n ADD_PAYMENT: `${API_URL_WITH_V2}/employer/billing/cards/add`,\n};\n\nconst GET_ACCOUNT_TIERS = '@admin/v2/GET_ACCOUNT_TIERS';\nexport const GET_CURRENT_PLAN = '@admin/v2/GET_CURRENT_PLAN';\nconst SWITCH_TIER_PREVIEW = '@admin/v2/SWITCH_TIER_PREVIEW';\nexport const SWITCH_TIER = '@admin/v2/SWITCH_TIER';\nexport const ADD_PAYMENT = '@admin/v2/ADD_PAYMENT';\n\nfunction* resetBillingInvoicesSaga() {\n yield put(resetBillingInvoices());\n}\nexport function* watchAccountPlanChangeSagas() {\n yield takeEvery(success(SWITCH_TIER), resetBillingInvoicesSaga);\n yield takeEvery(success(ADD_PAYMENT), resetBillingInvoicesSaga);\n}\n\nexport const getAccountTiers = () => ({\n type: GET_ACCOUNT_TIERS,\n request: {\n url: apiEndpoints.TIERS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getCurrentPlanRequest = () => ({\n type: GET_CURRENT_PLAN,\n request: {\n url: apiEndpoints.CURRENT_PLAN,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const switchAccountPreview = (data) => ({\n type: SWITCH_TIER_PREVIEW,\n request: {\n url: apiEndpoints.SWITCH_TIER_PREVIEW,\n data,\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const switchAccountTiers = (data) => ({\n type: SWITCH_TIER,\n request: {\n url: apiEndpoints.SWITCH_TIER,\n data,\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const addPaymentMethod = (data) => ({\n type: ADD_PAYMENT,\n request: {\n url: apiEndpoints.ADD_PAYMENT,\n data,\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport default requestsReducer({\n actionType: GET_ACCOUNT_TIERS,\n getData: (state, action, config) => {\n switch (action.type) {\n case success(GET_ACCOUNT_TIERS): {\n const { activePlan, availablePlans } = _.get(\n action,\n ['data', 'data'],\n {},\n );\n return { ...state.data, activePlan, availablePlans };\n }\n default:\n return state;\n }\n },\n mutations: {\n [GET_CURRENT_PLAN]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(GET_CURRENT_PLAN): {\n const details = _.get(action, ['data', 'data', 'details'], null);\n const { plan, ...rest } = details;\n return {\n ...state.data,\n activePlan: plan,\n accountDetails: { ...rest },\n };\n }\n default:\n return state;\n }\n },\n },\n [SWITCH_TIER]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(SWITCH_TIER): {\n const { activePlan, details } = _.get(\n action,\n ['data', 'data'],\n null,\n );\n return {\n ...state.data,\n activePlan,\n accountDetails: { ...details },\n };\n }\n default:\n return state;\n }\n },\n },\n [ADD_PAYMENT]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(ADD_PAYMENT): {\n const { cards } = _.get(action, ['data', 'data'], null);\n if (cards) {\n return {\n ...state.data,\n accountDetails: {\n ...state.data.accountDetails,\n creditCards: cards,\n },\n };\n }\n return state;\n }\n default:\n return state;\n }\n },\n },\n [SWITCH_TIER_PREVIEW]: { updateData: false },\n },\n});\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Modal from '@material-ui/core/Modal';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst ChildWrapper = styled.div<{ showMobileFullScreen?: boolean }>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: ${ThemeV2.palette.gray1};\n border: 1px solid ${ThemeV2.palette.white3};\n box-sizing: border-box;\n border-radius: 4px;\n outline: none;\n @media (max-width: 768px) {\n top: ${({ showMobileFullScreen }) => (showMobileFullScreen ? '0' : '50%')};\n left: ${({ showMobileFullScreen }) => (showMobileFullScreen ? '0' : '50%')};\n bottom: ${({ showMobileFullScreen }) =>\n showMobileFullScreen ? '0' : 'unset'};\n transform: ${({ showMobileFullScreen }) =>\n showMobileFullScreen ? 'unset' : 'translate(-50%, -50%)'};\n max-width: ${({ showMobileFullScreen }) =>\n showMobileFullScreen && '100% !important'};\n border-radius: 0px;\n }\n`;\n\nexport interface ModalProps {\n isOpen: boolean;\n handleClose(): void;\n customClass?: string;\n children: React.ReactNode;\n className?: string;\n showMobileFullScreen?: boolean;\n}\n\n// Copied from src/componentsV2/core/Modal/index.jsx and TS Changes\nconst SimpleModal = (props: ModalProps) => {\n const { isOpen, handleClose, className, children, showMobileFullScreen } =\n props;\n return (\n \n \n {children}\n \n \n );\n};\n\nexport default SimpleModal;\n","import styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { iconButtonColors } from '../Button/buttonConfigs';\nimport { StylesComponentsProps } from './interface';\n\nconst ButtonSize = {\n large: '48px',\n normal: '32px',\n small: '24px',\n};\n\nexport const IconButtonRoot = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n height: ${(props) => ButtonSize[props.size || 'normal']};\n width: ${(props) => ButtonSize[props.size || 'normal']};\n line-height: ${(props) => ButtonSize[props.size || 'normal']};\n border-radius: ${(props) => (props.rounded ? '20px' : '4px')};\n border: none;\n outline: none;\n cursor: pointer;\n box-shadow: ${({ color, isSelected }) =>\n color !== 'text' &&\n color !== 'textWithBackground' &&\n (isSelected\n ? '0px 0px 2px rgba(0, 0, 0, 0.04), 0px 2px 2px rgba(0, 0, 0, 0.02), 0px 1px 3px rgba(0, 0, 0, 0.12)'\n : '0px 2px 4px rgba(0, 0, 0, 0.04), 0px 3px 4px rgba(0, 0, 0, 0.02), 0px 1px 5px rgba(0, 0, 0, 0.12)')};\n background: ${({ isSelected, color }) =>\n isSelected\n ? iconButtonColors[color].focus.background\n : iconButtonColors[color].default.background};\n transition: 0.2s ease;\n transition-property: box-shadow background;\n & span svg path {\n fill: ${({ isSelected, color, icon }) => {\n if (icon === 'more' && !isSelected) {\n return ThemeV2.palette.gray6;\n }\n return isSelected\n ? iconButtonColors[color].focus.color\n : iconButtonColors[color].default.color;\n }};\n }\n &:disabled {\n background: ${({ iconBgColor }) => iconBgColor || ThemeV2.palette.gray3};\n cursor: default;\n box-shadow: none;\n & span svg path {\n fill: ${ThemeV2.palette.gray6};\n }\n }\n &:not(:disabled):hover,\n &:not(:disabled):focus-visible {\n background: ${({ isSelected, color }) =>\n isSelected\n ? iconButtonColors[color].focus.background\n : iconButtonColors[color].hover.background};\n box-shadow: ${({ color, isSelected }) =>\n color !== 'text' &&\n color !== 'textWithBackground' &&\n !isSelected &&\n '0px 8px 10px rgba(0, 0, 0, 0.04), 0px 3px 14px rgba(0, 0, 0, 0.02), 0px 4px 5px rgba(0, 0, 0, 0.12)'};\n & span svg path {\n fill: ${({ isSelected, color }) =>\n isSelected\n ? iconButtonColors[color].focus.color\n : iconButtonColors[color].hover.color};\n }\n }\n &:not(:disabled):active {\n background: ${({ color }) => iconButtonColors[color].focus.background};\n box-shadow: ${({ color }) =>\n color !== 'text' &&\n color !== 'textWithBackground' &&\n '0px 0px 2px rgba(0, 0, 0, 0.04), 0px 2px 2px rgba(0, 0, 0, 0.02), 0px 1px 3px rgba(0, 0, 0, 0.12)'};\n & span svg path {\n fill: ${({ color }) => iconButtonColors[color].focus.color};\n }\n }\n`;\nIconButtonRoot.displayName = 'IconButtonRoot';\n","import React from 'react';\nimport { IconButtonProps, ButtonSize } from './interface';\nimport SVGIcon from '../SVGIcon';\nimport { IconButtonRoot } from './styles';\n\nconst IconButton = (props: IconButtonProps) => {\n const {\n disabled,\n size,\n icon,\n rounded,\n title,\n className,\n children,\n onClick,\n isSelected = false,\n iconBgColor,\n iconColor,\n dataTestId = '',\n buttonRef,\n color = 'text',\n rotate = 0,\n } = props;\n return (\n \n {icon && (\n \n )}\n {children}\n \n );\n};\n\nexport default IconButton;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { useCallback } from 'react';\nimport { string, oneOfType, number, bool, array } from 'prop-types';\nimport { useField, useFormikContext } from 'formik';\n\nimport Input, { inputTypePropType } from '../Input';\n\nconst Field = ({\n type,\n value: fieldValue,\n helperText,\n isMultiSelectEnable,\n ...props\n}) => {\n const [field, meta] = useField(props);\n const { name, hasDropdown } = props;\n const { onBlur, onChange, value: formValues } = field;\n const { error, touched } = meta;\n // DO NOT Use useField helpers as its not memoized\n // https://github.com/formium/formik/issues/2268\n // const { setValue, setTouched } = helpers;\n const { setFieldTouched, setFieldValue } = useFormikContext();\n const value =\n type === 'button' || type === 'submit' ? fieldValue : formValues;\n const handleChange = useCallback(\n (valueOrEvent, secondArg) => {\n if (\n [\n 'dropdownWithMultiSelect',\n 'date',\n 'textV2_text',\n 'textV2_number',\n 'textV2_password',\n 'dropdown',\n ].indexOf(type) !== -1\n ) {\n setFieldValue(name, valueOrEvent);\n setFieldTouched(name, true);\n } else if (['textWithChips'].indexOf(type) !== -1) {\n setFieldValue(name, secondArg);\n setFieldTouched(name, true);\n } else {\n onChange(valueOrEvent);\n }\n },\n [type, setFieldTouched, name, setFieldValue, onChange],\n );\n return (\n \n );\n};\n\nField.propTypes = {\n name: string,\n type: inputTypePropType,\n value: oneOfType([string, number, bool, array]),\n helperText: string,\n hasDropdown: bool,\n isMultiSelectEnable: bool,\n};\n\nField.defaultProps = {\n name: '',\n type: 'text',\n value: '',\n helperText: null,\n hasDropdown: false,\n isMultiSelectEnable: true,\n};\n\nexport default Field;\n","export enum BenchmarkStatus {\n TOP_PERFORMER = 'TOP_PERFORMER',\n NEED_A_BOOST = 'NEED_A_BOOST',\n DOING_GREAT = 'DOING_GREAT',\n}\n","import { useState, useCallback } from 'react';\n\nconst useToggle = (initialValue = false) => {\n const [toggleValue, setToggleValue] = useState(initialValue);\n\n const setToggle = useCallback(() => {\n setToggleValue(!toggleValue);\n }, [toggleValue]);\n const setToggleValueSynchronous = useCallback(() => {\n setToggleValue((prevToggleValue) => !prevToggleValue);\n }, []);\n\n const setToggleToFalse = useCallback(() => setToggleValue(false), []);\n const setToggleToTrue = useCallback(() => setToggleValue(true), []);\n\n return {\n models: { toggleValue },\n operations: {\n setToggleValue: setToggle,\n setToggleToFalse,\n setToggleToTrue,\n setToggleValueSynchronous,\n },\n };\n};\n\nexport default useToggle;\n","enum SplitNames {\n NOTEBOOK = 'NOTEBOOK',\n FLOWS_INSIGHTS = 'FLOWS_INSIGHTS',\n INVITE_USER_ON_FLOW_CREATION = 'INVITE_USER_ON_FLOW_CREATION',\n QUICK_SETUP = 'QUICK_SETUP',\n REWARDS_UPDATE = 'REWARDS_UPDATE',\n LOGO_AND_CURRENCY_SETTINGS = 'ADD_LOGO_AND_CURRENCY_SETTINGS',\n ADD_OUTLOOK_CALENDAR = 'ADD_OUTLOOK_CALENDAR',\n AXOMO_REWARDS = 'AXOMO_REWARDS',\n FILE_PREVIEWER = 'FILE_PREVIEWER',\n PAGINATED_INTEGRATION_DATA = 'PAGINATED_INTEGRATION_DATA',\n NOTEBOOK_RIGHT_DRAWER = 'NOTEBOOK_RIGHT_DRAWER',\n SHARESHEET_ANONYMOUS_SETTINGS = 'SHARESHEET_ANONYMOUS_SETTINGS',\n COMBINED_USERS_MANAGE_INVITE = 'COMBINED_USERS_MANAGE_INVITE',\n REMOVE_PASSWORD_BASED_AUTH = 'REMOVE_PASSWORD_BASED_AUTH',\n}\n\nenum TreatmentTypes {\n CONTROL = 'control',\n ON = 'on',\n OFF = 'off',\n NOT_YET_SET = 'NOT_YET_SET',\n}\n\nexport { SplitNames, TreatmentTypes };\n","// @ts-nocheck TODO: type issues need to be fixed in this file\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SHOW_USER_PROFILE = 'show_user_profile';\nexport const HIDE_USER_PROFILE = 'hide_user_profile';\nexport const TOGGLE_NOTIFICATIONS = 'toggle_notifications';\n\nexport const RESIZE_WINDOW = 'resize_window';\n\nexport const SHOW_INCOMPLETE_ONBOARDING = 'show_incomplete_onboarding';\nexport const HIDE_INCOMPLETE_ONBOARDING = 'hide_incomplete_onboarding';\n\nexport const UPDATE_GIVE_CARROTS_UI = 'update_give_carrots_ui';\nexport const ADD_EMOJI_TO_MESSAGE = 'add_emoji_to_message';\nexport const EMPLOYEES_SET_UP_UPDATES = 'employee_set_up_updates';\n\nexport const GIVE_CARROTS_UI_STATUSES = {\n BLANK: 'blank',\n RESET: 'reset',\n NO_RESET: 'no_reset',\n};\nexport const ADD_EMOJI_STATUS = {\n RESET: 'reset',\n SET: 'set',\n};\nexport const EMPLOYEES_SETUP_STATUSES = {\n UN_KNOWN: 'un_known',\n HAS_EMPLOYEES: 'has_employees',\n NO_EMPLOYEES: 'no_employees',\n};\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst showUserProfile = (user) => ({\n type: SHOW_USER_PROFILE,\n user,\n});\n\nconst hideUserProfile = () => ({\n type: HIDE_USER_PROFILE,\n user: null,\n});\nconst toggleNotifications = () => ({\n type: TOGGLE_NOTIFICATIONS,\n});\n\nconst showIncompleteOnboarding = () => ({\n type: SHOW_INCOMPLETE_ONBOARDING,\n});\nconst hideIncompleteOnboarding = () => ({\n type: HIDE_INCOMPLETE_ONBOARDING,\n});\n\nconst resizeWindow = (windowSize) => ({\n type: RESIZE_WINDOW,\n windowSize,\n});\nconst updateGiveCarrotsUI = (status = GIVE_CARROTS_UI_STATUSES.BLANK) => ({\n type: UPDATE_GIVE_CARROTS_UI,\n status,\n});\nconst updateEmployeesSetupStatus = (\n status = EMPLOYEES_SETUP_STATUSES.UN_KNOWN,\n) => ({\n type: EMPLOYEES_SET_UP_UPDATES,\n status,\n});\nconst addEmojiToMessage = (status = ADD_EMOJI_STATUS.RESET, emoji) => ({\n type: ADD_EMOJI_TO_MESSAGE,\n status,\n emoji,\n});\n\nexport const uiActions = {\n showUserProfile,\n hideUserProfile,\n toggleNotifications,\n showIncompleteOnboarding,\n hideIncompleteOnboarding,\n resizeWindow,\n updateGiveCarrotsUI,\n updateEmployeesSetupStatus,\n addEmojiToMessage,\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case SHOW_USER_PROFILE:\n return { ...state, userProfileToShow: action.user };\n case HIDE_USER_PROFILE:\n return { ...state, userProfileToShow: null };\n case TOGGLE_NOTIFICATIONS:\n return { ...state, showNotification: !state.showNotification };\n case SHOW_INCOMPLETE_ONBOARDING:\n return { ...state, showIncompleteOnboarding: true };\n case HIDE_INCOMPLETE_ONBOARDING:\n return { ...state, showIncompleteOnboarding: false };\n case RESIZE_WINDOW:\n return { ...state, windowSize: action.windowSize };\n case UPDATE_GIVE_CARROTS_UI:\n return { ...state, giveCarrotUIStatus: action.status };\n case EMPLOYEES_SET_UP_UPDATES:\n return { ...state, employeeSetupStatus: action.status };\n case ADD_EMOJI_TO_MESSAGE:\n return {\n ...state,\n emojiToAdd: {\n emoji: action.emoji,\n status: action.status,\n },\n };\n default:\n return state; // , showNotification : false\n }\n};\n","import styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nimport { Flex } from '../../../Utils/styles/display';\n\nimport { StyledOnlineStatusProps, StyledAvatarTextProps } from './interfaces';\n\nconst onlineStatusColors = {\n active: ThemeV2.palette.polarGreen6,\n passive: ThemeV2.palette.sunriseYellow6,\n inactive: ThemeV2.palette.gray6,\n};\n\nexport const AvatarContainer = styled.div<{\n size: string;\n isDeleted?: boolean;\n iconBgColor?: string;\n restrictHeight?: boolean;\n}>`\n height: ${({ size }) => size};\n min-width: ${({ size }) => size};\n width: ${({ size }) => size};\n position: relative;\n & span {\n height: 100%;\n width: 100%;\n background-color: ${({ isDeleted, iconBgColor }) =>\n isDeleted ? ThemeV2.palette.gray3 : iconBgColor};\n display: flex;\n justify-content: center;\n border-radius: 100%;\n svg {\n ${({ restrictHeight }) => restrictHeight && 'height: 50%;'}\n ${({ restrictHeight }) => restrictHeight && 'min-width: 50%;'}\n }\n }\n`;\n\nexport const AvatarBackground = styled.div`\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n cursor: pointer;\n span {\n background: ${ThemeV2.palette.gray10};\n background-color: rgba(0, 0, 0, 0.5);\n border-radius: 100%;\n opacity: 0;\n svg {\n height: 33.3%;\n min-width: 33.3%;\n }\n & :hover {\n opacity: 1;\n }\n }\n`;\n\nexport const Img = styled.img<{ hide: boolean }>`\n display: ${({ hide }) => (hide ? 'none' : 'initial')};\n height: 100%;\n width: 100%;\n border-radius: 100%;\n`;\n\nexport const StyledOnlineStatus = styled.div`\n border-radius: 10px;\n width: 10px;\n height: 10px;\n background-color: ${(props) =>\n props.onlineStatus && onlineStatusColors[props.onlineStatus]};\n border: 2px solid ${(props) => props.onlineStatusBorderColor};\n position: absolute;\n right: 0;\n bottom: 0;\n`;\n\nexport const StyledAvatarText = styled(Flex)`\n color: ${(props) => props.color};\n background-color: ${(props) => props.backgroundColor};\n border-radius: 50%;\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-weight: ${ThemeV2.typography.fontWeightSemibold};\n width: ${(props) => (props.size ? props.size : '40px')};\n height: ${(props) => (props.size ? props.size : '40px')};\n font-size: ${(props) => (props.fontSize ? props.fontSize : '16px')};\n`;\n\nImg.displayName = 'Img';\n","import React, { useCallback, useEffect, useState, memo, useMemo } from 'react';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { getColor } from '../../../Utils/profilePic';\n\nimport {\n AvatarBackground,\n Img,\n AvatarContainer,\n StyledOnlineStatus,\n StyledAvatarText,\n} from './styles';\nimport SVGIcon from '../SVGIcon';\n\nimport { AvatarProps } from './interfaces';\n\nconst Avatar = ({\n img,\n className: parentClassName,\n size = '24px',\n name = '',\n onHoverClick,\n onlineStatus,\n onlineStatusBorderColor = ThemeV2.palette.white,\n isDeleted = false,\n isAnonymous = false,\n userId = '',\n fontSize = '14px',\n icon,\n iconSize,\n iconColor = ThemeV2.palette.gray3,\n iconBgColor = ThemeV2.palette.geekBlue6,\n backgroundColor = getColor({ _id: userId }).bg || '',\n}: AvatarProps) => {\n const [loading, setLoading] = useState(true);\n const onLoadingComplete = useCallback(() => setLoading(false), []);\n\n useEffect(() => {\n if (!loading) {\n setLoading(true);\n }\n // THIS USE-EFFECT SHOULD ONLY BE CALLED WHEN IMAGE PROP IS CHANGED.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [img]);\n\n const canShowAvatarText = userId && name;\n\n const renderImageFallback = useMemo(() => {\n // If there is no image url or image not loaded\n if (!icon && loading) {\n if (canShowAvatarText) {\n let avatarText = '';\n let color = '';\n const user = { _id: userId };\n const colors = getColor(user);\n avatarText = name.slice(0, 1).toUpperCase();\n color = colors.color;\n return (\n \n {avatarText}\n \n );\n }\n\n return ;\n }\n return null;\n }, [\n icon,\n loading,\n canShowAvatarText,\n userId,\n name,\n size,\n backgroundColor,\n fontSize,\n ]);\n\n if (isDeleted || isAnonymous) {\n return (\n \n \n \n );\n }\n\n return (\n \n {icon ? (\n \n ) : (\n \n )}\n {renderImageFallback}\n {onHoverClick && (\n \n \n \n )}\n {onlineStatus && (\n \n )}\n \n );\n};\n\nconst MemoizedAvatar = memo(Avatar);\nMemoizedAvatar.displayName = 'Avatar';\n\nexport default MemoizedAvatar;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\n\nexport const ReduxActionTypes = {\n API_CALL_BEGIN: '@api/API_CALL_BEGIN',\n API_CALL_SUCCESS: '@api/API_CALL_SUCCESS',\n API_CALL_ERROR: '@api/API_CALL_ERROR',\n API_CALL_CLEAR: '@api/API_CALL_CLEAR',\n};\n\nexport const apiCallAction = ({\n reduxKey,\n url,\n method,\n params,\n data,\n headers,\n}) => ({\n type: ReduxActionTypes.API_CALL_BEGIN,\n payload: {\n reduxKey,\n requestParams: {\n url,\n method,\n params,\n data,\n headers,\n },\n },\n});\n\nexport const apiCallSuccessAction = ({ reduxKey, response }) => ({\n type: ReduxActionTypes.API_CALL_SUCCESS,\n payload: {\n reduxKey,\n response,\n },\n});\n\nexport const apiCallErrorAction = ({ reduxKey, error }) => ({\n type: ReduxActionTypes.API_CALL_ERROR,\n payload: {\n reduxKey,\n error,\n },\n});\n\nexport const apiCallClearAction = ({ reduxKey }) => ({\n type: ReduxActionTypes.API_CALL_CLEAR,\n payload: {\n reduxKey,\n },\n});\n\nconst apiCallReducers = (state = {}, { type, payload }) => {\n switch (type) {\n case ReduxActionTypes.API_CALL_BEGIN: {\n const { reduxKey, requestParams } = payload;\n const newApi = {\n requestParams,\n };\n if (state[reduxKey]) {\n const { response, error } = state[reduxKey];\n newApi.response = response;\n newApi.error = error;\n }\n return { ...state, [reduxKey]: newApi };\n }\n case ReduxActionTypes.API_CALL_SUCCESS: {\n const { reduxKey, response } = payload;\n const api = state[reduxKey];\n // Check if key present, it might have got removed\n // due to API_CALL_CLEAR action\n if (api) {\n const { requestParams } = api;\n const newApi = {\n requestParams,\n response,\n };\n return { ...state, [reduxKey]: newApi };\n }\n return state;\n }\n case ReduxActionTypes.API_CALL_ERROR: {\n const { reduxKey, error } = payload;\n const api = state[reduxKey];\n // Check if key present, it might have got removed\n // due to API_CALL_CLEAR action\n if (api) {\n const { requestParams } = api;\n const newApi = {\n requestParams,\n error,\n };\n return { ...state, [reduxKey]: newApi };\n }\n return state;\n }\n case ReduxActionTypes.API_CALL_CLEAR: {\n const { reduxKey } = payload;\n const { [reduxKey]: blah, ...rest } = state;\n return { ...rest };\n }\n default:\n return state;\n }\n};\n\nexport const getApiCallResponse = (state, reduxKey) =>\n _.get(state, ['api', reduxKey, 'response'], null);\nexport const getApiCallError = (state, reduxKey) =>\n _.get(state, ['api', reduxKey, 'error'], null);\n\nexport default apiCallReducers;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { useCallback, useEffect, useState, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport _ from 'lodash';\n\nimport axios from 'axios';\nimport { AuthHeadersV2 } from '../../modules/shared/HeaderToken';\nimport {\n apiCallAction,\n apiCallSuccessAction,\n apiCallErrorAction,\n getApiCallResponse,\n getApiCallError,\n apiCallClearAction,\n} from './redux';\nimport endpoints from './endpoints';\n\ntype FetchProps = {\n apiEndpoint: string;\n onSuccess?: (response: ApiResponseSuccess) => void;\n onFailure?: (error: ApiResponseError) => void;\n useCache?: boolean;\n};\n\n/**\n * useFetch Hook is an abstraction to call api's from our\n * React frontend. Each API is configured in endpoints file\n * To configure an API, set an apiEndpoint as a key and have its\n * endpoint and method as value in the endpoints file. When needed\n * to do an API call, call makeRequest of this hook with the apiEndpoint\n * and you will get the response, error objects and makeRequest\n * method. Call the makeRequest method at the appropriate place\n * to trigger the call. Loading state can be determined using\n * the response object on onSuccess callback of this hook. This uses\n * Redux to save the state of the API call, so that it can be shared\n * across components.\n * */\nconst useFetch = ({\n apiEndpoint,\n onSuccess = () => {},\n onFailure = () => {},\n useCache = false,\n}: FetchProps) => {\n let reduxKeyRefStr = apiEndpoint;\n if (!useCache) {\n reduxKeyRefStr = `${apiEndpoint}_${new Date().getTime()}`;\n }\n const reduxKeyRef = useRef(reduxKeyRefStr);\n const reduxKey = reduxKeyRef.current;\n const [isMakeRequestCalled, setIsMakeRequestCalled] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const { response, error } = useSelector((state) => ({\n response: getApiCallResponse(state, reduxKey),\n error: getApiCallError(state, reduxKey),\n }));\n const dispatch = useDispatch();\n // Calls onSuccess when response not null and there is change in its reference\n useEffect(() => {\n if (response && isMakeRequestCalled) {\n onSuccess(response);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [response, isMakeRequestCalled]);\n // Calls onFailure when error not null and there is change in its reference\n useEffect(() => {\n if (error && isMakeRequestCalled) {\n const errorStatus = _.get(error, ['response', 'status']);\n let errorMessage;\n const defaultMessage = 'SERVER_ERROR';\n switch (errorStatus) {\n case 500:\n case 409:\n case 400:\n case 422:\n errorMessage = _.get(\n error,\n ['response', 'data', 'message'],\n defaultMessage,\n );\n break;\n\n default:\n errorMessage = defaultMessage;\n break;\n }\n onFailure({ status: errorStatus, message: errorMessage });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [error, isMakeRequestCalled]);\n // Cleans up api request in store which are not cached\n useEffect(() => {\n if (!useCache) {\n return () => {\n dispatch(apiCallClearAction({ reduxKey }));\n };\n }\n return undefined;\n }, [dispatch, reduxKey, useCache]);\n\n const makeRequest = useCallback(\n async ({ params = {}, data = {}, substitutions = {} } = {}) => {\n setIsMakeRequestCalled(true);\n setIsLoading(true);\n const api = endpoints[apiEndpoint];\n const { url, method } = api;\n let substitutedURL = url;\n Object.keys(substitutions).forEach((key) => {\n const substitution = substitutions[key];\n substitutedURL = substitutedURL.replace(`:${key}`, substitution);\n });\n const { headers } = AuthHeadersV2();\n const options = { method, headers, data, params };\n dispatch(\n apiCallAction({\n reduxKey,\n url: substitutedURL,\n ...options,\n }),\n );\n try {\n // @ts-ignore TODO: type issues need to be fixed here\n const res = await axios.request(substitutedURL, options);\n dispatch(apiCallSuccessAction({ reduxKey, response: res }));\n setIsLoading(false);\n } catch (e) {\n dispatch(apiCallErrorAction({ reduxKey, error: e }));\n setIsLoading(false);\n }\n },\n [dispatch, apiEndpoint, reduxKey],\n );\n return { isLoading, makeRequest };\n};\n\nexport default useFetch;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { string } from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Link as RouterLink } from 'react-router-dom';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: {\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontStyle: 'normal',\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontSize: '14px',\n lineHeight: '22px',\n color: ThemeV2.palette.geekBlue6,\n transition: '0.2s ease color',\n '&:hover': {\n color: ThemeV2.palette.geekBlue5,\n },\n '&:focus': {\n color: ThemeV2.palette.geekBlue7,\n },\n '&:active': {\n color: ThemeV2.palette.geekBlue7,\n },\n },\n});\n\nconst Link = (props) => {\n const classes = useStyles(props);\n const { children, to, className, ...rest } = props;\n return (\n \n {children}\n \n );\n};\n\nLink.propTypes = {\n children: string,\n to: string,\n className: string,\n};\n\nLink.defaultProps = {\n children: null,\n to: '',\n className: '',\n};\n\nexport default Link;\n","import React, { useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Avatar from '../../atoms/Avatar';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { AvatarProps } from '../../atoms/Avatar/interfaces';\n\ninterface ChipWrapperProps {\n role: string;\n clickable?: boolean;\n disabled?: boolean;\n isValid?: boolean;\n}\n\ninterface ChipAvatarProps {\n img?: string;\n color?: string;\n}\n\ninterface ChipLabelProps {\n disabled?: boolean;\n}\n\ninterface ChipDeleteIconProps {\n disabled?: boolean;\n isValid?: boolean;\n}\n\nconst ChipWrapper = styled.div`\n align-items: center;\n background: ${(props) => {\n if (props.disabled) {\n return ThemeV2.palette.gray4;\n }\n if (!props.isValid) {\n return ThemeV2.palette.dustRed2;\n }\n return ThemeV2.palette.gray3;\n }};\n border-radius: 16px;\n box-sizing: border-box;\n display: inline-flex;\n font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;\n height: 32px;\n justify-content: center;\n margin: 2px 4px;\n padding: 4px;\n border: none;\n outline: 0;\n font-size: 14px;\n transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\n box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n white-space: nowrap;\n vertical-align: middle;\n text-decoration: none;\n cursor: ${(props) => (props.clickable ? 'pointer' : 'default')};\n\n &:hover {\n background: ${(props) => {\n if (!props.isValid) {\n return ThemeV2.palette.dustRed4;\n }\n if (!props.disabled) {\n return ThemeV2.palette.gray4;\n }\n return false;\n }};\n }\n &:focus {\n background: ${(props) => {\n if (!props.isValid) {\n return ThemeV2.palette.dustRed4;\n }\n if (!props.disabled) {\n return ThemeV2.palette.gray5;\n }\n return false;\n }};\n }\n &:active {\n background: ${(props) => {\n if (!props.isValid) {\n return ThemeV2.palette.dustRed4;\n }\n if (!props.disabled) {\n return ThemeV2.palette.gray5;\n }\n return false;\n }};\n box-shadow: none;\n }\n\n .avatarCircle {\n margin-right: -4px;\n color: ${ThemeV2.palette.gray8};\n width: 24px;\n height: 24px;\n font-size: 12px;\n margin-left: 4px;\n }\n`;\n\nChipWrapper.displayName = 'ChipWrapper';\n\nconst ChipLabel = styled.span`\n color: ${(props) =>\n props.disabled ? ThemeV2.palette.gray6 : ThemeV2.palette.gray9};\n overflow: hidden;\n white-space: nowrap;\n padding-left: 12px;\n padding-right: 12px;\n text-overflow: ellipsis;\n font-size: 14px;\n line-height: 22px;\n`;\nChipLabel.displayName = 'ChipLabel';\n\nconst ChipDeleteIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgba(0, 0, 0, 0.26);\n width: 22px;\n cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};\n height: 22px;\n margin: 0 0 0 -6px;\n`;\nChipDeleteIcon.displayName = 'ChipDeleteIcon';\n\nexport const ChipAvatar = styled(Avatar)`\n margin-right: -4px;\n color: ${({ iconColor }) => (iconColor ? iconColor : ThemeV2.palette.gray8)};\n width: 24px;\n height: 24px;\n font-size: 12px;\n line-height: 0;\n\n span {\n background-color: ${(props) => props.backgroundColor};\n\n svg {\n fill: initial;\n path {\n ${({ iconColor }) => {\n if (iconColor) {\n return {\n fill: iconColor,\n };\n }\n }}\n }\n }\n }\n`;\nChipAvatar.displayName = 'ChipAvatar';\n\nexport interface ChipProps {\n avatar?: AvatarProps;\n label: string;\n validation?: (value: string) => boolean;\n onDelete?: () => void;\n onClick?: () => void;\n clickable?: boolean;\n className?: string;\n disabled?: boolean;\n id?: string | number;\n}\n\nconst Chip = (props: ChipProps) => {\n const {\n avatar,\n label,\n validation,\n onDelete,\n onClick,\n clickable,\n className,\n disabled,\n } = props;\n\n const { silver } = ThemeV2.palette;\n\n const onDeleteHandler = useCallback(() => {\n if (!disabled && onDelete) {\n onDelete();\n }\n }, [disabled, onDelete]);\n\n let isValid = true;\n\n if (validation) {\n isValid = validation(label);\n }\n\n return (\n \n {avatar && }\n {label}\n {onDelete && (\n \n \n \n )}\n \n );\n};\n\nChip.defaultProps = {\n className: '',\n};\n\nexport default Chip;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { oneOf, string } from 'prop-types';\nimport ProgressBar from '../../atoms/ProgressBar';\nimport {\n STRENGTH_WEAK,\n STRENGTH_NORMAL,\n STRENGTH_STRONG,\n STRENGTH_NONE,\n} from '../../../constants/progressValidator';\n\nconst useStyles = makeStyles({\n root: {\n padding: 4,\n display: 'flex',\n flexDirection: 'row',\n marginRight: '-4px',\n justifyContent: 'space-between',\n },\n});\n\nconst ProgressValidator = ({\n strength,\n className: parentClassName,\n ...rest\n}) => {\n const classes = useStyles();\n let validation;\n if (strength === STRENGTH_WEAK) {\n validation = [\n {\n color: 'danger',\n value: 100,\n },\n {\n color: 'none',\n value: 0,\n },\n {\n color: 'none',\n value: 0,\n },\n ];\n } else if (strength === STRENGTH_NORMAL) {\n validation = [\n {\n color: 'warning',\n value: 100,\n },\n {\n color: 'warning',\n value: 100,\n },\n {\n color: 'none',\n value: 0,\n },\n ];\n } else if (strength === STRENGTH_STRONG) {\n validation = [\n {\n color: 'success',\n value: 100,\n },\n {\n color: 'success',\n value: 100,\n },\n {\n color: 'success',\n value: 100,\n },\n ];\n } else if (strength === STRENGTH_NONE) {\n validation = [\n {\n color: 'none',\n value: 0,\n },\n {\n color: 'none',\n value: 0,\n },\n {\n color: 'none',\n value: 0,\n },\n ];\n }\n const className = `${classes.root} ${parentClassName}`;\n return (\n
\n {validation.map((strengthItem, index) => (\n \n ))}\n
\n );\n};\n\nProgressValidator.propTypes = {\n strength: oneOf([\n STRENGTH_NONE,\n STRENGTH_NORMAL,\n STRENGTH_STRONG,\n STRENGTH_WEAK,\n ]),\n className: string,\n};\n\nProgressValidator.defaultProps = {\n strength: STRENGTH_NONE,\n className: '',\n};\n\nexport default ProgressValidator;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { bool, string } from 'prop-types';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: (props) => ({\n background: props.checked\n ? ThemeV2.palette.polarGreen6\n : ThemeV2.palette.gray3,\n width: 12,\n height: 12,\n borderRadius: '100%',\n transition: '0.2s ease background',\n }),\n});\n\nconst CircleIndicator = ({ checked, className: parentClassName, ...rest }) => {\n const classes = useStyles({ checked });\n const className = `${classes.root} ${parentClassName}`;\n return
;\n};\n\nCircleIndicator.propTypes = {\n checked: bool,\n className: string,\n};\n\nCircleIndicator.defaultProps = {\n className: '',\n checked: false,\n};\n\nexport default CircleIndicator;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { bool, string, node } from 'prop-types';\nimport CircleIndicator from '../../atoms/CircleIndicator';\nimport Body from '../../atoms/Body';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n position: 'relative',\n },\n indicator: {\n position: 'absolute',\n top: '5px',\n left: '4px',\n },\n bodyText: {\n position: 'relative',\n paddingLeft: '24px',\n },\n});\n\nconst ValidationText = ({\n checked,\n children,\n className: parentClassName,\n ...rest\n}) => {\n const classes = useStyles();\n const className = `${classes.root} ${parentClassName}`;\n\n return (\n
\n \n \n {children}\n \n
\n );\n};\n\nValidationText.propTypes = {\n checked: bool,\n className: string,\n children: node.isRequired,\n};\n\nValidationText.defaultProps = {\n checked: false,\n className: '',\n};\n\nexport default ValidationText;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport const ReduxActionTypes = {\n API_CALL_BEGIN: '@api/API_CALL_BEGIN',\n API_CALL_SUCCESS: '@api/API_CALL_SUCCESS',\n API_CALL_ERROR: '@api/API_CALL_ERROR',\n};\n\nexport const apiCallAction = ({\n reduxKey,\n url,\n method,\n params,\n data,\n headers,\n}) => ({\n type: ReduxActionTypes.API_CALL_BEGIN,\n payload: {\n reduxKey,\n requestParams: {\n url,\n method,\n params,\n data,\n headers,\n },\n },\n});\n\nexport const apiCallSuccessAction = ({ reduxKey, response }) => ({\n type: ReduxActionTypes.API_CALL_SUCCESS,\n payload: {\n reduxKey,\n response,\n },\n});\n\nexport const apiCallErrorAction = ({ reduxKey, error }) => ({\n type: ReduxActionTypes.API_CALL_ERROR,\n payload: {\n reduxKey,\n error,\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport styled from 'styled-components';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {\n string,\n oneOf,\n bool,\n func,\n oneOfType,\n number,\n shape,\n instanceOf,\n} from 'prop-types';\n\nimport Clickable from '../Clickable';\nimport IconButton from '../IconButton';\nimport SVGIcon from '../SVGIcon';\nimport Body from '../Body';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const typeMap = {\n text: 'text',\n password: 'password',\n number: 'number',\n};\n\nconst StyledOutlinedInput = styled(OutlinedInput)`\n height: 40px;\n display: flex;\n width: ${(props) => props.width};\n padding: 0px;\n color: ${ThemeV2.palette.gray8};\n border-width: 1px;\n border-style: solid;\n border-radius: 2px;\n border-color: ${(props) =>\n props.isvalidinput ? ThemeV2.palette.green7 : ThemeV2.palette.gray5};\n pointer-events: ${(props) => (props.isvalidinput ? 'none' : 'auto')};\n box-sizing: border-box;\n transition: all 0.3s;\n && .MuiInputAdornment-root {\n height: 40px;\n border-radius: 3px 0px 0px 3px;\n padding: 0px 12px;\n background-color: ${(props) =>\n props.disabled ? ThemeV2.palette.gray3 : 'inherit'};\n }\n &.MuiOutlinedInput-adornedStart,\n &.MuiOutlinedInput-adornedEnd {\n padding-left: 0px;\n padding-right: 0px;\n }\n &.MuiInputBase-adornedEnd {\n & .MuiInputAdornment-root {\n border-radius: 0px 3px 3px 0px;\n }\n }\n\n &:hover {\n &:not(.Mui-disabled) {\n border-color: ${ThemeV2.palette.geekBlue5};\n }\n & .MuiInputAdornment-root {\n background-color: ${(props) =>\n props.iconbackgroundcolor\n ? ThemeV2.palette.geekBlue6\n : ThemeV2.palette.gray1};\n }\n & .MuiInputAdornment-root svg path {\n fill: ${(props) =>\n props.iconbackgroundcolor\n ? ThemeV2.palette.gray1\n : ThemeV2.palette.gray6};\n }\n }\n &.Mui-focused {\n &:not(.Mui-disabled) {\n box-shadow: 0px 0px 4px rgba(24, 144, 255, 0.5);\n border-color: ${ThemeV2.palette.geekBlue5};\n }\n & .MuiInputAdornment-root {\n background-color: ${(props) =>\n props.iconbackgroundcolor || ThemeV2.palette.gray1};\n }\n & .MuiInputAdornment-root svg path {\n fill: ${(props) =>\n props.iconbackgroundcolor\n ? ThemeV2.palette.gray1\n : ThemeV2.palette.gray6};\n transition: all 0.3s;\n }\n }\n &.Mui-error {\n border-color: ${ThemeV2.palette.red6};\n & .MuiInputAdornment-root svg path {\n fill: ${(props) =>\n props.iconbackgroundcolor\n ? ThemeV2.palette.gray1\n : ThemeV2.palette.gray6};\n }\n &:hover {\n & .MuiInputAdornment-root {\n background-color: ${ThemeV2.palette.red6};\n }\n }\n }\n & .MuiOutlinedInput-notchedOutline {\n border: 0;\n }\n & .MuiOutlinedInput-input {\n padding: 8px 12px;\n padding-left: ${(props) =>\n (props.icon && !props.iconbackgroundcolor) || props.domain\n ? '0px'\n : '12px'};\n font-size: 16px;\n line-height: 24px;\n height: unset;\n border-radius: 3px;\n &.Mui-disabled {\n border-color: ${(props) => props.disabled && ThemeV2.palette.gray5};\n background: ${(props) => props.disabled && ThemeV2.palette.gray3};\n }\n &::placeholder {\n color: ${ThemeV2.palette.gray6};\n opacity: 1;\n }\n }\n & .MuiInputAdornment-root {\n margin: 0;\n padding: 12px;\n padding-right: ${(props) =>\n props.icon && !props.iconbackgroundcolor ? '8px' : '12px'};\n max-height: 40px;\n background-color: ${(props) =>\n props.iconbackgroundcolor\n ? ThemeV2.palette[props.iconbackgroundcolor]\n : ThemeV2.palette.gray1};\n transition: all 0.3s;\n &.domainInput {\n width: 159px;\n padding-right: 4px;\n }\n }\n`;\n\nconst StyledIconButton = styled(IconButton)`\n &.MuiButtonBase-root {\n position: absolute;\n top: 50%;\n right: ${({ $endIcon }) => ($endIcon ? '40px' : '8px')};\n padding: 4px;\n transform: translateY(-50%);\n }\n`;\n\nconst InputWrapper = styled.div`\n position: relative;\n & .MuiInputBase-root {\n height: auto;\n pointer-events: ${({ $disabled }) => ($disabled ? 'none' : 'auto')};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'auto')};\n border: ${({ $disabled }) => $disabled && 'none'};\n }\n`;\n\nconst StyledClickable = styled(Clickable)`\n display: flex;\n background-color: ${({ $disabled }) =>\n $disabled ? `${ThemeV2.palette.gray3}` : 'inherit'};\n`;\n\nconst TextField = ({\n type,\n onChange,\n onBlur,\n onFocus,\n value,\n placeholder,\n className: parentClassName,\n icon,\n iconSize,\n domain,\n error,\n autoFocus,\n isValid,\n name,\n fullWidth,\n width,\n iconBackgroundColor,\n disabled,\n innerRef,\n endIcon,\n onIconClick,\n onEndIconClick,\n clearTextEnabled,\n onClearClick,\n onClick,\n}) => {\n let startAdornment = null;\n let endAdornment = null;\n if (icon) {\n startAdornment = (\n \n \n \n \n \n );\n }\n if (endIcon) {\n endAdornment = (\n \n \n \n \n \n );\n }\n if (domain) {\n startAdornment = (\n \n {domain}\n \n );\n }\n\n return (\n \n \n {clearTextEnabled && (\n \n \n \n )}\n \n );\n};\n\nTextField.propTypes = {\n type: oneOf(Object.keys(typeMap)),\n name: string,\n onChange: func,\n onBlur: func,\n onFocus: func,\n value: oneOfType([string, number]),\n placeholder: string.isRequired,\n icon: string,\n endIcon: string,\n onIconClick: func,\n onEndIconClick: func,\n iconSize: string,\n error: bool,\n autoFocus: bool,\n isValid: bool,\n domain: string,\n className: string,\n fullWidth: bool,\n iconBackgroundColor: oneOf(Object.keys(ThemeV2.palette)),\n width: string,\n disabled: bool,\n innerRef: oneOfType([\n // Either a function\n func,\n // Or the instance of a DOM native element (see the note about SSR)\n shape({ current: instanceOf(Element) }),\n ]),\n clearTextEnabled: bool,\n onClearClick: func,\n onClick: func,\n};\n\nTextField.defaultProps = {\n name: '',\n type: 'text',\n isValid: null,\n className: '',\n onChange: () => {},\n onBlur: () => {},\n onFocus: () => {},\n domain: null,\n icon: null,\n endIcon: null,\n onIconClick: () => {},\n onEndIconClick: () => {},\n iconSize: '18px',\n error: false,\n autoFocus: false,\n value: '',\n fullWidth: true,\n width: 'auto',\n iconBackgroundColor: null,\n disabled: false,\n innerRef: undefined,\n clearTextEnabled: false,\n onClearClick: () => {},\n onClick: () => {},\n};\n\nconst MemoizedTextField = React.memo(TextField);\nMemoizedTextField.displayName = 'TextField';\n\nexport default MemoizedTextField;\n","import React from 'react';\nimport { MenuItemProps } from '../Dropdown_V2/interfaces';\n\nexport interface SelectedItemProps {\n id: any;\n label: string;\n avatar?: string;\n clickable?: boolean;\n}\n\nexport enum TextFieldType {\n Text = 'text',\n Password = 'password',\n Email = 'email',\n Number = 'number',\n Date = 'date',\n}\nexport enum TextFieldSizes {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\nexport interface TextFieldProps {\n id?: string;\n name?: string;\n type?: TextFieldType;\n value: string;\n placeholder?: string;\n label?: string | React.ReactNode;\n helperText?: string;\n hasError?: boolean;\n disabled?: boolean;\n icon?: string;\n size?: TextFieldSizes;\n onChange: (value: string, id?: string | number) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onClearClick?: () => void;\n disableClearButton?: boolean;\n suffix?: string;\n prefix?: string;\n selectedItems?: SelectedItemProps[];\n enableChip?: boolean;\n dropdownItems?: MenuItemProps[];\n limitTags?: number;\n isEditable?: boolean;\n inputIconColor?: string;\n className?: string;\n dataTestId?: string;\n onSelectItemChange?: (value: SelectedItemProps[]) => void;\n hasDropdownFilter?: boolean;\n}\n\nexport interface StyledComponentProps {\n isFocused?: boolean;\n hasError?: boolean;\n disabled?: boolean;\n isActivated?: boolean;\n label?: string;\n icon?: string;\n hasSuffix?: boolean;\n hasPrefix?: boolean;\n ref?: any;\n inputSize?: TextFieldSizes;\n dropdownItems?: MenuItemProps[];\n readonly?: boolean;\n inputIconColor?: boolean;\n}\n","import styled from 'styled-components';\nimport { StyledComponentProps } from './interface';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport IconButton from '../../atoms/IconButton_V2';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const sizeVariant = {\n sm: '32px',\n md: '40px',\n lg: '48px',\n};\n\nconst labelYPosition = {\n sm: '8px',\n md: '12px',\n lg: '16px',\n};\n\nexport const textFieldInputHeight = {\n sm: '22px',\n md: '30px',\n lg: '38px',\n};\n\nexport const renderStatusColor = (\n defaultColor: string,\n { isFocused, hasError, disabled, isActivated, icon }: StyledComponentProps,\n) => {\n let color = defaultColor;\n if (!disabled) {\n if (!hasError && isActivated) {\n color = ThemeV2.palette.gray9;\n } else if (!hasError && isFocused && !isActivated) {\n color = ThemeV2.palette.geekBlue6;\n } else if (hasError) {\n color = ThemeV2.palette.red6;\n }\n } else if (icon !== '') {\n color = ThemeV2.palette.gray6;\n } else {\n color = ThemeV2.palette.gray3;\n }\n\n return color;\n};\n\nexport const renderInputPlaceholder = ({\n isFocused,\n label,\n hasError,\n disabled,\n}: StyledComponentProps) => {\n let value = 'hidden';\n if (label !== '') {\n if (isFocused || hasError) {\n if (!disabled) {\n value = 'visible';\n }\n }\n } else {\n value = 'visible';\n }\n return value;\n};\n\nexport const TextInputFieldWrapper = styled.div`\n position: relative;\n`;\nTextInputFieldWrapper.displayName = 'TextInputFieldWrapper';\n\nexport const FormLabel = styled.label`\n position: absolute;\n z-index: 2;\n transform: translate(14px, 20px) scale(1);\n transform: ${(props) =>\n props.isFocused\n ? 'translate(0px, -8px) scale(0.71)'\n : `translate(8px, ${labelYPosition[props.inputSize || 'md']}) scale(1)`};\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-size: 14px;\n font-weight: ${ThemeV2.typography.fontWeightMedium};\n font-style: normal;\n padding: 0 4px;\n background: ${(props) =>\n props.disabled ? ThemeV2.palette.gray3 : ThemeV2.palette.gray1};\n color: ${(props) => renderStatusColor(ThemeV2.palette.gray5, props)};\n transition: 0.15s ease;\n user-select: ${(props) => props.disabled && 'none'};\n cursor: inherit;\n line-height: 1.2;\n`;\nFormLabel.displayName = 'FormLabel';\n\nexport const TextFieldRoot = styled.div`\n position: relative;\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n min-height: ${(props) => props.inputSize && sizeVariant[props.inputSize]};\n line-height: 1;\n border-radius: 4px;\n border: 1px solid\n ${(props) =>\n props.disabled\n ? ThemeV2.palette.gray3\n : renderStatusColor(ThemeV2.palette.gray6, props)};\n transition: 0.3s ease;\n background: ${(props) =>\n props.disabled ? ThemeV2.palette.gray3 : ThemeV2.palette.gray1};\n padding-right: 45px;\n z-index: ${(props) => props.isFocused && '1'};\n &:hover {\n box-shadow: ${(props) =>\n props.disabled\n ? 'none'\n : '0px 2px 4px rgba(0, 0, 0, 0.04), 0px 3px 4px rgba(0, 0, 0, 0.02), 0px 1px 5px rgba(0, 0, 0, 0.12)'};\n }\n`;\nTextFieldRoot.displayName = 'TextFieldRoot';\n\nexport const InputIcon = styled(SVGIcon)`\n display: flex;\n box-sizing: content-box;\n padding: 4px 0 4px 8px;\n & svg {\n height: 16px;\n width: 16px;\n min-width: 16px;\n & path {\n fill: ${(props) =>\n renderStatusColor(props.color || ThemeV2.palette.gray9, props)};\n }\n }\n`;\nInputIcon.displayName = 'InputIcon';\n\nexport const InputDropdownButton = styled(IconButton)`\n position: absolute;\n right: 10px;\n & span {\n min-width: auto;\n & svg path {\n fill: ${(props) =>\n props.isFocused ? ThemeV2.palette.gray9 : ThemeV2.palette.gray6};\n }\n }\n`;\nInputDropdownButton.displayName = 'InputDropdownButton';\n\nexport const InputClearButton = styled(\n InputDropdownButton,\n)`\n right: ${(props) => (props.dropdownItems ? '40px' : '10px')};\n`;\n\nexport const TextFieldInput = styled.input`\n height: ${(props) =>\n props.inputSize && textFieldInputHeight[props.inputSize]};\n padding: ${(props) =>\n `3px 0px 3px ${props.icon || props.hasPrefix ? '0px' : '4px'}`};\n box-sizing: border-box;\n border: none;\n background: transparent;\n outline: 0;\n flex: 1;\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-size: 14px;\n line-height: 1;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n font-style: normal;\n text-align: ${(props) => (props.hasSuffix ? 'right' : 'left')};\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ${(props) =>\n !props.isFocused && !props.disabled\n ? 'transparent'\n : ThemeV2.palette.gray9};\n & ::placeholder,\n ::-webkit-input-placeholder {\n visibility: ${(props) => renderInputPlaceholder(props)};\n color: ${ThemeV2.palette.gray6};\n }\n &:focus {\n &::placeholder,\n ::-webkit-input-placeholder {\n visibility: visible;\n }\n }\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n display: none;\n }\n`;\nTextFieldInput.displayName = 'TextFieldInput';\n\nexport const AppendText = styled.p`\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-size: 14px;\n line-height: 22px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n font-style: normal;\n color: ${(props) =>\n props.isFocused ? ThemeV2.palette.gray7 : ThemeV2.palette.gray6};\n margin-top: 0;\n margin-bottom: 0;\n`;\nAppendText.displayName = 'AppendText';\n\nexport const PrefixText = styled(AppendText)`\n margin-right: 4px;\n display: ${(props) => (props.isFocused ? 'inline' : 'none')};\n margin-left: ${(props) => (props.icon ? '0x' : '4px')};\n`;\nPrefixText.displayName = 'PrefixText';\n\nexport const HelperText = styled.p`\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-size: 10px;\n line-height: 20px;\n font-weight: ${ThemeV2.typography.fontWeightMedium};\n padding: 4px 0 0 12px;\n margin: 0;\n color: ${(props) =>\n props.hasError ? ThemeV2.palette.red6 : ThemeV2.palette.gray7};\n visibility: ${(props) => props.disabled && 'hidden'};\n user-select: ${(props) => props.disabled && 'none'};\n`;\nHelperText.displayName = 'HelperText';\n\nexport const ChipMoreItem = styled.span`\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n`;\n\nChipMoreItem.displayName = 'ChipMoreItem';\n\nexport const NoOption = styled.div`\n padding: 4px 8px;\n color: #595959;\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n font-size: 14px;\n`;\n\nexport const TextFieldRootWrapper = styled.div`\n width: 100%;\n border: none;\n outline: 0;\n background: transparent;\n padding: 0;\n`;\n","import styled from 'styled-components';\nimport DropdownListItem from '../DropdownListItem_V2';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const StyledDropdownListItem = styled(DropdownListItem)`\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n`;\nStyledDropdownListItem.displayName = 'StyledDropdownListItem';\n\nexport const StyledDropDownItemHelperText = styled(Body)`\n margin-left: 8px;\n margin-top: -16px;\n`;\n\nexport const DropdownCategoryLabel = styled(Body)`\n margin-bottom: 8px;\n padding: 0px 12px;\n color: ${ThemeV2.palette.gray7};\n &:not(::first-child) {\n margin-top: 8px;\n }\n`;\nDropdownCategoryLabel.displayName = 'DropdownCategoryLabel';\n","import styled from 'styled-components';\nimport { Popper } from '@material-ui/core';\nimport { StyledComponentProps } from './interface';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const DropdownCardWrapper = styled.div`\n width: ${(props) => props.isFullWidth && '100%'};\n z-index: 3;\n`;\nDropdownCardWrapper.displayName = 'DropdownCardWrapper';\n\nexport const DropdownCardBackground = styled.div`\n max-height: 300px;\n overflow-y: auto;\n background: ${ThemeV2.palette.gray1};\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n padding: 4px;\n margin: 4px 0;\n width: ${(props) => !props.isFullWidth && 'fit-content'};\n`;\nDropdownCardBackground.displayName = 'DropdownCardBackground';\n\nexport const StyledPopper = styled(Popper)<{\n width: string | undefined;\n}>`\n z-index: 9999;\n width: ${(props) => props.width && props.width};\n`;\n","import { AssemblyCurrency } from '../../../interfaces/assembly';\n\nexport interface MenuItemIndividualItem {\n value: string;\n id: string | number;\n isSelected?: boolean;\n prefixIcon?: string;\n prefixImg?: string;\n disabled?: boolean;\n deleteItem?: boolean;\n assemblyCurrency?: AssemblyCurrency;\n emoji?: string;\n helperText?: string;\n}\nexport interface MenuItemProps {\n id: string | number | null | undefined;\n value?: string;\n prefixIcon?: string | undefined;\n prefixImg?: string | undefined;\n disabled?: boolean | undefined;\n deleteItem?: boolean | undefined;\n category?: string;\n items: MenuItemIndividualItem[];\n}\n\nexport enum DropdownPlacement {\n BottomEnd = 'bottom-end',\n BottomStart = 'bottom-start',\n Bottom = 'bottom',\n LeftEnd = 'left-end',\n LeftStart = 'left-start',\n Left = 'left',\n RightEnd = 'right-end',\n RightStart = 'right-start',\n Right = 'right',\n TopEnd = 'top-end',\n TopStart = 'top-start',\n Top = 'top',\n}\n\nexport enum DropdownColor {\n Primary = 'primary',\n Secondary = 'secondary',\n Secondary2 = 'secondary2',\n}\nexport enum DropdownSizes {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\nexport enum DropdownVariants {\n Contained = 'contained',\n Outlined = 'outlined',\n Text = 'text',\n}\nexport interface ButtonDropdownProps {\n category?: string | number | null | undefined;\n value?: string;\n color?: DropdownColor;\n size?: DropdownSizes;\n variant?: DropdownVariants;\n icon?: string;\n className?: string;\n dropdownPlacement?: DropdownPlacement;\n isDropdownPositionFixed?: boolean;\n caretIconSize?: string;\n hasBoxShadow?: boolean;\n}\n\nexport interface StyledComponentProps {\n ref?: any;\n isFullWidth?: boolean;\n}\n","import React from 'react';\nimport { Grow } from '@material-ui/core';\nimport { DropdownCardBackground, StyledPopper } from './styles';\nimport { DropdownCardProps } from './interface';\nimport { DropdownPlacement } from '../../molecules/Dropdown_V2/interfaces';\n\nconst DropdownCard = (props: DropdownCardProps) => {\n const {\n id,\n isOpen,\n anchorEl,\n dropdownPlacement = DropdownPlacement.Bottom,\n children,\n isFullWidth,\n isDropdownPositionFixed = false,\n className,\n } = props;\n const popperWidth =\n anchorEl && isFullWidth ? `${anchorEl.offsetWidth}px` : 'auto';\n return (\n \n {({ TransitionProps }) => (\n \n \n {children}\n \n \n )}\n \n );\n};\n\nexport default DropdownCard;\n","import React, {\n KeyboardEvent,\n memo,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport useOnClickOutside from '../../../hooks/useOnOutsideClick';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport { SelectedItemProps, TextFieldProps, TextFieldType } from './interface';\n\nimport Chip from '../Chip';\nimport { getFilteredItems, getItemsToAdd } from './utils';\n\nimport {\n AppendText,\n ChipMoreItem,\n FormLabel,\n HelperText,\n InputClearButton,\n InputDropdownButton,\n InputIcon,\n NoOption,\n PrefixText,\n TextFieldInput,\n TextFieldRoot,\n TextFieldRootWrapper,\n TextInputFieldWrapper,\n} from './styles';\n\nimport { ButtonSize } from '../../atoms/IconButton_V2/interface';\nimport {\n DropdownCategoryLabel,\n StyledDropdownListItem,\n} from '../Dropdown_V2/styles';\n\nimport DropdownCard from '../../atoms/DropdownCard_V2';\nimport { DropdownCardWrapper } from '../../atoms/DropdownCard_V2/styles';\nimport { DropdownPlacement, MenuItemProps } from '../Dropdown_V2/interfaces';\n\nconst TextField = (props: TextFieldProps) => {\n const {\n name: textFieldId,\n type,\n value,\n placeholder,\n label,\n helperText,\n hasError,\n onFocus,\n onBlur,\n onChange,\n onClearClick,\n disableClearButton,\n icon,\n disabled,\n size,\n suffix,\n prefix,\n selectedItems,\n enableChip,\n dropdownItems,\n limitTags,\n isEditable,\n inputIconColor = ThemeV2.palette.gray6,\n className,\n dataTestId,\n onSelectItemChange,\n hasDropdownFilter,\n } = props;\n\n const [isFocused, setIsFocused] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const containerRef = useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [filterByValue, setFilterByValue] = useState('');\n const [filteredDropdownItems, setFilteredDropdownItems] =\n useState();\n\n const [currentSelectedItems, setCurrentSelectedItems] = useState<\n SelectedItemProps[]\n >(selectedItems || []);\n\n const [renderChipItems, setRenderChipItems] = useState(\n [],\n );\n\n const hasValue = value !== '' || currentSelectedItems.length > 0;\n const suffixEnabled =\n suffix !== '' &&\n (type === TextFieldType.Text || type === TextFieldType.Email);\n const prefixEnabled = prefix !== '';\n const canDropdownOpen = !disabled && isDropdownOpen;\n\n useEffect(() => {\n if (\n !isFocused &&\n limitTags &&\n limitTags > -1 &&\n Array.isArray(currentSelectedItems)\n ) {\n const more = currentSelectedItems.length - limitTags;\n if (more > 0) {\n setRenderChipItems(currentSelectedItems.slice(0, limitTags));\n } else {\n setRenderChipItems(currentSelectedItems);\n }\n } else {\n setRenderChipItems(currentSelectedItems);\n }\n if (onSelectItemChange) {\n onSelectItemChange(currentSelectedItems);\n }\n }, [\n currentSelectedItems,\n isFocused,\n isDropdownOpen,\n limitTags,\n onSelectItemChange,\n ]);\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n setFilterByValue('');\n if (onFocus) {\n onFocus();\n }\n }, [onFocus]);\n\n const handleDropdownOpen = useCallback(\n (event) => {\n if (hasDropdownFilter) {\n setIsDropdownOpen(true);\n } else {\n setIsDropdownOpen(!isDropdownOpen);\n }\n\n setAnchorEl(anchorEl ? null : event.currentTarget);\n },\n [anchorEl, hasDropdownFilter, isDropdownOpen],\n );\n\n const handleDropdownClose = useCallback(() => {\n setIsDropdownOpen(false);\n setAnchorEl(null);\n }, []);\n\n const handleClearClick = useCallback(() => {\n if (onClearClick) {\n onClearClick();\n }\n handleDropdownClose();\n onChange('');\n setIsFocused(true);\n setCurrentSelectedItems([]);\n setFilterByValue('');\n }, [handleDropdownClose, onChange, onClearClick]);\n\n const handleOnChange = useCallback(\n (e) => {\n onChange(e.target.value);\n setFilterByValue(e.target.value);\n },\n [onChange],\n );\n const hasFocus =\n (!disabled && hasValue) ||\n (!disabled && isFocused) ||\n (!disabled && hasError);\n\n const addChipItem = useCallback(\n (chipLabel: string, id?: string | number) => {\n // To avoid duplicate entry\n if (currentSelectedItems.every((item) => item.id !== id)) {\n const chipItem = {\n label: chipLabel,\n clickable: false,\n id,\n };\n setCurrentSelectedItems((state) => [...state, chipItem]);\n } else {\n onChange('');\n }\n setIsFocused(false);\n },\n [currentSelectedItems, onChange],\n );\n\n const deleteChipItem = useCallback(\n (chipLabel: string) => {\n const chipItems = currentSelectedItems.filter(\n (item) => item.label !== chipLabel,\n );\n\n setCurrentSelectedItems(chipItems);\n },\n [currentSelectedItems],\n );\n\n const deleteLastChipItem = useCallback(() => {\n const chipItems = currentSelectedItems.slice(\n 0,\n currentSelectedItems.length - 1,\n );\n setCurrentSelectedItems(chipItems);\n setIsFocused(true);\n }, [currentSelectedItems]);\n\n // Handle Keyboard events\n const onKeyPress = useCallback(\n (e: KeyboardEvent) => {\n const { target, key } = e;\n if (enableChip && !dropdownItems) {\n if (key === 'Enter') {\n const chipLabel = (target as HTMLInputElement).value;\n const chipId = chipLabel.toLowerCase().replace(' ', '-');\n if (chipLabel) {\n // Handle duplicate\n addChipItem(chipLabel, chipId);\n onChange('');\n }\n }\n }\n if (key === 'Backspace' || key === 'Delete') {\n if (!value && currentSelectedItems.length > 0) {\n deleteLastChipItem();\n }\n }\n },\n [\n addChipItem,\n currentSelectedItems.length,\n deleteLastChipItem,\n dropdownItems,\n enableChip,\n onChange,\n value,\n ],\n );\n\n const handleMenuItemClick = useCallback(\n (id: string | number) => {\n const dropdownItem = dropdownItems?.map((menuItem) => {\n return menuItem.items.find(\n (chip: { id: string | number }) => chip.id === id,\n );\n })[0];\n\n const itemValue = dropdownItem?.value;\n if (itemValue) {\n // Handle duplicate\n if (enableChip) {\n addChipItem(itemValue, id);\n onChange('');\n handleDropdownClose();\n setIsFocused(true);\n } else {\n onChange(itemValue, id);\n handleDropdownClose();\n }\n }\n },\n [addChipItem, dropdownItems, enableChip, handleDropdownClose, onChange],\n );\n\n const onOutsideClickHandler = useCallback(() => {\n handleDropdownClose();\n setIsFocused(false);\n }, [handleDropdownClose]);\n\n useOnClickOutside(containerRef, onOutsideClickHandler);\n\n const chipsMoreCount = currentSelectedItems.length - renderChipItems.length;\n\n useEffect(() => {\n if (dropdownItems && isEditable) {\n const filteredItems = getFilteredItems(dropdownItems, filterByValue);\n const resultItems = getItemsToAdd(\n filteredItems,\n currentSelectedItems.map((item) => item.id),\n );\n\n setFilteredDropdownItems(resultItems);\n } else {\n setFilteredDropdownItems(dropdownItems);\n }\n }, [currentSelectedItems, dropdownItems, filterByValue, isEditable]);\n\n const renderDropdownItems = useCallback(() => {\n return (\n filteredDropdownItems &&\n filteredDropdownItems.map((dropdownItem) => (\n
\n {dropdownItem.category && dropdownItem.items.length > 0 && (\n \n {dropdownItem.category}\n \n )}\n {dropdownItem.items.map((item) => (\n \n ))}\n {dropdownItem.items.length === 0 && No options}\n
\n ))\n );\n }, [filteredDropdownItems, handleMenuItemClick]);\n\n const id = isDropdownOpen ? 'spring-popper' : undefined;\n\n const onButtonClick = (event: { currentTarget: React.ReactNode }) => {\n handleDropdownOpen(event);\n };\n\n return (\n \n {label && (\n 0}\n hasError={hasError}\n isActivated={hasValue}\n htmlFor={textFieldId}\n disabled={disabled}\n icon={icon}\n inputSize={size}\n >\n {label}\n \n )}\n \n \n {icon && (\n \n )}\n {prefixEnabled && (\n \n {prefix}\n \n )}\n {renderChipItems.map((item) => (\n deleteChipItem(item.label)}\n disabled={disabled}\n />\n ))}\n {chipsMoreCount > 0 && +{chipsMoreCount}}\n \n {suffixEnabled && (\n  {suffix}\n )}\n {hasValue && !disabled && !disableClearButton && (\n \n \n \n )}\n {dropdownItems && (\n \n \n \n )}\n \n \n {helperText && (\n \n {helperText}\n \n )}\n {dropdownItems && (\n \n {canDropdownOpen && (\n \n {renderDropdownItems()}\n \n )}\n \n )}\n \n );\n};\n\nTextField.defaultProps = {\n placeholder: '',\n label: '',\n helperText: '',\n type: 'text',\n hasError: false,\n disabled: false,\n icon: false,\n suffix: '',\n prefix: '',\n size: 'md',\n enableChip: false,\n onChange: () => {},\n onFocus: () => {},\n onClearClick: () => {},\n disableClearButton: false,\n onBlur: undefined,\n dropdownItems: null,\n limitTags: -1,\n isEditable: true,\n className: '',\n dataTestId: '',\n};\n\nconst MemoizedTextField = memo(TextField);\nMemoizedTextField.displayName = 'TextField';\n\nexport default MemoizedTextField;\n","const getFilteredItems = (menuItems: any[], value: string) => {\n if (value) {\n return menuItems.map((element) => {\n return {\n ...element,\n items: element.items?.filter((item: { value: string }) =>\n item.value.toLowerCase().includes(value.toLowerCase()),\n ),\n };\n });\n }\n\n return menuItems;\n};\n\nconst getItemsToAdd = (menuItems: any[], addedItemIds?: any[]) => {\n if (addedItemIds && addedItemIds?.length > 0) {\n return menuItems.map((element) => {\n return {\n // eslint-disable-next-line @typescript-eslint/ban-types\n ...(element as {}),\n items: element.items?.filter(\n (item: { id: any }) => !addedItemIds.includes(item.id),\n ),\n };\n });\n }\n\n return menuItems;\n};\n\nexport { getFilteredItems, getItemsToAdd };\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { string, oneOfType, arrayOf, node } from 'prop-types';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: () => ({\n fontSize: '14px',\n lineHeight: '22px',\n color: ThemeV2.palette.gray9,\n marginBottom: '4px',\n boxSizing: 'border-box',\n }),\n});\n\nconst Label = ({ id, children, className: parentClassName }) => {\n const classes = useStyles({});\n const className = `${classes.root} ${parentClassName}`;\n return (\n \n {children}\n \n );\n};\n\nLabel.propTypes = {\n id: string,\n className: string,\n children: oneOfType([arrayOf(node), node]).isRequired,\n};\n\nLabel.defaultProps = {\n id: null,\n className: '',\n};\n\nexport default Label;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { renderStatusColor } from '../../molecules/TextField_V2/styles';\n\nexport interface TextAreaProps {\n name?: string;\n value?: string;\n onChange: React.ChangeEventHandler &\n ((event: React.ChangeEventHandler) => void);\n onBlur: () => void;\n disabled?: boolean;\n hasError?: boolean;\n helperText?: string;\n rows?: number;\n}\n\nconst StyledTextArea = styled.textarea`\n width: 100%;\n resize: none;\n border-radius: 4px;\n padding: 12px;\n border: 1px solid\n ${(props) =>\n props.disabled\n ? ThemeV2.palette.gray3\n : renderStatusColor(ThemeV2.palette.gray6, props)};\n box-sizing: border-box;\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-size: 14px;\n line-height: 22px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n font-style: normal;\n`;\n\nconst HelperText = styled.p<{ disabled?: boolean; hasError?: boolean }>`\n font-size: 14px;\n line-height: 22px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n color: ${(props) =>\n props.disabled\n ? ThemeV2.palette.gray3\n : renderStatusColor(ThemeV2.palette.gray6, props)};\n`;\n\nconst TextArea = (props: TextAreaProps) => {\n const {\n name,\n value,\n rows = 10,\n helperText,\n hasError,\n disabled,\n onChange,\n onBlur,\n } = props;\n return (\n <>\n \n {helperText && (\n \n {helperText}\n \n )}\n \n );\n};\n\nexport default TextArea;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport {\n arrayOf,\n func,\n number,\n oneOfType,\n shape,\n string,\n bool,\n} from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Dropdown from '../../atoms/Dropdown';\n\nconst useStyles = makeStyles({\n root: ({ optionsList }) => ({\n '&:first-child': {\n '& .MuiOutlinedInput-notchedOutline': {\n borderRadius: optionsList.length === 1 ? '2px' : '2px 0px 0px 2px',\n },\n },\n '&:nth-child(2)': {\n '& .MuiOutlinedInput-notchedOutline': {\n borderRadius: optionsList.length === 3 ? '0px' : '0px 2px 2px 0px',\n },\n },\n '&:nth-child(3)': {\n '& .MuiOutlinedInput-notchedOutline': {\n borderRadius: '0px 2px 2px 0px',\n },\n },\n }),\n});\n\nconst DropdownGroup = (props) => {\n const {\n optionsList,\n onChangeList,\n selectedOptions,\n isFilter,\n className: parentClassName,\n } = props;\n const classes = useStyles(props);\n const className = `${classes.root} ${parentClassName}`;\n\n return (\n <>\n {optionsList.map((items, index) => {\n const { menuItems, placeholder, icon, width, filterPlaceholder } =\n items;\n return (\n \n );\n })}\n \n );\n};\n\nexport const optionsListPropType = arrayOf(\n shape({\n placeholder: string,\n icon: string,\n menuItems: arrayOf(\n shape({\n id: oneOfType([string, number]).isRequired,\n value: string.isRequired,\n }),\n ).isRequired,\n }).isRequired,\n);\n\nDropdownGroup.propTypes = {\n optionsList: optionsListPropType.isRequired,\n onChangeList: arrayOf(func).isRequired,\n selectedOptions: arrayOf(oneOfType([string, number])),\n isFilter: bool,\n className: string,\n};\n\nDropdownGroup.defaultProps = {\n selectedOptions: [],\n isFilter: false,\n className: '',\n};\n\nexport default DropdownGroup;\n","import React, { useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TextField, { TextFieldProps } from '@material-ui/core/TextField';\nimport Autocomplete, {\n AutocompleteGetTagProps,\n} from '@material-ui/lab/Autocomplete';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Chip from '../Chip';\nimport DropdownListItem from '../DropdownListItem';\nimport { PropsClasses } from '../../../interfaces/ClassesProps';\nimport { AvatarProps } from '../../atoms/Avatar/interfaces';\n\nconst useStyles = makeStyles({\n autoCompleteStyle: {\n margin: '0',\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n '& .MuiAutocomplete-listbox': {\n padding: '.5rem',\n backgroundColor: ThemeV2.palette.gray1,\n },\n '& li': {\n transition: 'all .3s',\n '&:hover, &:focus, &:visited': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n '&.MuiAutocomplete-option[data-focus=\"true\"], &.MuiAutocomplete-option[aria-selected=\"true\"]':\n {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n },\n '& .MuiAutocomplete-option': {\n padding: 0,\n margin: 0,\n },\n },\n textFieldRoot: {\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 .75rem !important',\n color: ThemeV2.palette.gray8,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: '2px',\n borderColor: ThemeV2.palette.gray5,\n transition: 'all .3s',\n '& .MuiOutlinedInput-input': {\n '&::placeholder': {\n color: ThemeV2.palette.gray6,\n opacity: 1,\n },\n },\n '&:hover': {\n borderColor: ThemeV2.palette.geekBlue5,\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n '& .MuiAutocomplete-input': {\n fontSize: '1rem',\n height: '2rem',\n lineHeight: '2rem',\n margin: '.25rem 0',\n padding: '0 !important',\n },\n '& .MuiAutocomplete-tag': {\n color: ThemeV2.palette.gray10,\n backgroundColor: ThemeV2.palette.gray3,\n height: '2rem',\n lineHeight: '2rem',\n borderRadius: '100px',\n fontSize: '.75rem',\n alignSelf: 'center',\n textAlign: 'center',\n },\n },\n '& .MuiAutocomplete-clearIndicator': {\n display: 'none',\n },\n '& .Mui-focused': {\n boxShadow: '0px 0px 4px rgba(24, 144, 255, 0.5)',\n borderColor: ThemeV2.palette.geekBlue6,\n },\n },\n endAdornment: {\n display: 'none',\n },\n});\n\nexport interface OptionsProps {\n displayText: string;\n id: string;\n secondaryText?: string;\n img?: string;\n avatar?: AvatarProps;\n}\n\nexport interface DropdownProps {\n name: string;\n value: OptionsProps[] | OptionsProps | null;\n classes?: PropsClasses;\n placeholder?: string;\n options: OptionsProps[];\n isLoading?: boolean;\n onChange: (value: OptionsProps[] | OptionsProps | null) => void;\n onInputChange?: (event: React.ChangeEvent) => void;\n onInputFocus?: () => void;\n noOptionsText?: string;\n limitTags?: number;\n disableLimit?: boolean;\n isMultiSelectEnable?: boolean;\n}\n\nconst DropdownWithMultiSelect = (props: DropdownProps) => {\n const classes = useStyles(props);\n const {\n name,\n value,\n placeholder,\n options,\n isLoading = false,\n onChange,\n onInputChange,\n onInputFocus,\n noOptionsText,\n limitTags = 2,\n disableLimit = false,\n isMultiSelectEnable = true,\n } = props;\n\n const onAutoChange = useCallback(\n (\n event: React.ChangeEvent,\n valueChanged: OptionsProps[] | OptionsProps | null,\n ) => {\n onChange(valueChanged);\n if (onInputChange) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n onInputChange({ target: { value: '' } });\n }\n },\n [onChange, onInputChange],\n );\n\n const renderOptionLabel = useCallback((option: OptionsProps) => {\n return option.displayText;\n }, []);\n\n const renderOptions = useCallback((option: OptionsProps) => {\n const { displayText, img, secondaryText, avatar } = option;\n return (\n \n );\n }, []);\n\n const renderTags = useCallback(\n (tagValue: OptionsProps[], getTagProps: AutocompleteGetTagProps) => {\n return tagValue.map((option: OptionsProps, index: number) => (\n \n ));\n },\n [],\n );\n\n const renderInput = useCallback(\n (params: TextFieldProps) => (\n \n ),\n [placeholder, classes.textFieldRoot, onInputChange, onInputFocus],\n );\n\n const getOptionSelected = useCallback(\n (option, { id }) => option.id === id,\n [],\n );\n\n return (\n \n );\n};\n\nconst MemoizedDropdownWithMultiSelect = React.memo(DropdownWithMultiSelect);\nMemoizedDropdownWithMultiSelect.displayName = 'DropdownWithMultiSelect';\n\nexport default MemoizedDropdownWithMultiSelect;\n","import React, { useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Autocomplete, {\n AutocompleteGetTagProps,\n} from '@material-ui/lab/Autocomplete';\nimport Textfield from '../NewTextfield';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Chip from '../Chip';\nimport { PropsClasses } from '../../../interfaces/ClassesProps';\n// import { truncateText } from '../../../Utils/formatting';\n\nconst useStyles = makeStyles({\n autoCompleteStyle: {\n padding: '0',\n margin: '0',\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n '& .MuiAutocomplete-listbox': {\n margin: '0',\n padding: '8px',\n backgroundColor: ThemeV2.palette.gray1,\n },\n '& li': {\n transition: 'all .3s',\n '&:hover, &:focus, &:visited': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n '&.MuiAutocomplete-option[data-focus=\"true\"], &.MuiAutocomplete-option[aria-selected=\"true\"]':\n {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n },\n '& .MuiAutocomplete-option': {\n padding: '0 .75rem !important',\n margin: 0,\n },\n },\n textFieldRoot: {\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 .75rem !important',\n color: ThemeV2.palette.gray8,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: '2px',\n borderColor: ThemeV2.palette.gray5,\n transition: 'all .3s',\n '& .MuiOutlinedInput-input': {\n '&::placeholder': {\n color: ThemeV2.palette.gray6,\n opacity: 1,\n },\n },\n '&:hover': {\n borderColor: ThemeV2.palette.geekBlue5,\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n '& .MuiAutocomplete-input': {\n fontSize: '1rem',\n height: '1rem',\n lineHeight: '2rem',\n margin: '.25rem 0',\n padding: '0 !important',\n },\n '& .MuiAutocomplete-tag': {\n color: ThemeV2.palette.gray10,\n backgroundColor: ThemeV2.palette.gray3,\n margin: '0 .5rem 0 -.25rem',\n padding: '2.5px 5px',\n borderRadius: '100px',\n fontSize: '.75rem',\n },\n },\n '& .MuiAutocomplete-clearIndicator': {\n display: 'none',\n },\n '& .Mui-focused': {\n boxShadow: '0px 0px 4px rgba(24, 144, 255, 0.5)',\n borderColor: ThemeV2.palette.geekBlue6,\n },\n },\n});\n\ninterface TextFieldWithChipsProps {\n value: string[];\n textFieldValue: string;\n size?: string;\n multiline?: boolean;\n maxRows?: number;\n minRows?: number;\n name?: string;\n helperText?: string;\n classes?: PropsClasses;\n placeholder?: string;\n truncate?: number;\n validation?: (value: string) => boolean;\n options: string[];\n onChange: (event: React.ChangeEvent, value: string[]) => void;\n onTextFieldChange?: (event: React.FormEvent) => void;\n}\n\nconst TextFieldWithChips = (props: TextFieldWithChipsProps) => {\n const classes = useStyles(props);\n const {\n value,\n textFieldValue,\n size,\n multiline,\n maxRows,\n minRows,\n name,\n placeholder,\n validation,\n options,\n helperText,\n onChange,\n onTextFieldChange,\n } = props;\n\n const renderTags = useCallback(\n (tagValue: string[], getTagProps: AutocompleteGetTagProps) => {\n return tagValue.map((option: string, index: number) => (\n \n ));\n },\n [validation],\n );\n\n const onInputChange = useCallback(\n (event: React.ChangeEvent, newInputValue: string) => {\n const inputOptions = newInputValue.split(/[ ,]+/);\n if (inputOptions.length > 1) {\n onChange(\n event,\n value\n .concat(inputOptions)\n .map((x) => x.trim())\n .filter((x) => x),\n );\n }\n },\n [value, onChange],\n );\n\n const renderInput = useCallback(\n (params) => (\n 0 ? null : placeholder}\n helperText={helperText}\n size={size}\n multiline={multiline}\n maxRows={maxRows}\n minRows={minRows}\n onChange={onTextFieldChange}\n />\n ),\n [\n name,\n textFieldValue,\n value,\n placeholder,\n helperText,\n size,\n multiline,\n maxRows,\n minRows,\n onTextFieldChange,\n ],\n );\n\n return (\n \n );\n};\n\nconst MemoizedTextFieldWithChips = React.memo(TextFieldWithChips);\nMemoizedTextFieldWithChips.displayName = 'TextFieldWithChips';\n\nexport default MemoizedTextFieldWithChips;\n","import React, { useMemo, useCallback } from 'react';\nimport { DateUtils } from 'react-day-picker';\nimport { makeStyles } from '@material-ui/core/styles';\nimport moment from 'moment';\nimport IconButton from '../../atoms/IconButton';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Dropdown from '../../atoms/Dropdown';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { Item } from '../../atoms/Dropdown/interfaces';\n\nconst useStyles = makeStyles({\n navButtons: {\n padding: '8px',\n height: 'fit-content',\n alignSelf: 'center',\n },\n navContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n margin: '0 5px',\n },\n dropdown: {\n '& .MuiSelect-select .placeholder': {\n color: ThemeV2.palette.gray9,\n fontWeight: 'bold',\n opacity: 1,\n },\n '& .caret': {\n top: '12px',\n '& svg': {\n width: '16px',\n height: '16px',\n },\n '& path': {\n fill: ThemeV2.palette.gray7,\n },\n },\n },\n});\n\ntype CalendarNavComponentPropTypes = {\n changeDates: (targetDate: Date, isRightCalendar: boolean) => void;\n isRangePicker?: boolean;\n isRightCalendar?: boolean;\n month: Date;\n yearDropdownValues: Item[];\n};\n\nexport const getYearDropdownValues = (\n numberOfYearsAllowedFromCurrentYear: number,\n) => {\n const year = new Date().getFullYear();\n const arr = [];\n for (\n let i = year - numberOfYearsAllowedFromCurrentYear;\n i <= year + numberOfYearsAllowedFromCurrentYear;\n i += 1\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n arr.push({ id: i, value: i.toString() });\n }\n return arr;\n};\n\nconst CalendarNavElement = ({\n isRightCalendar = false,\n isRangePicker = false,\n month,\n changeDates,\n yearDropdownValues,\n}: CalendarNavComponentPropTypes) => {\n const formattedMonthNames = useMemo(\n () =>\n moment.monthsShort().map((name, index) => ({\n id: index,\n value: name,\n disabled:\n isRangePicker && isRightCalendar\n ? month.getFullYear() === yearDropdownValues[0]?.id && index === 0\n : month.getFullYear() ===\n yearDropdownValues[yearDropdownValues.length - 1]?.id &&\n index === 11,\n })),\n [isRangePicker, isRightCalendar, month, yearDropdownValues],\n );\n const classes = useStyles();\n const onMonthDropdownChange = useCallback(\n (id) => {\n const newTargetDate = new Date(month);\n newTargetDate.setMonth(id);\n changeDates(newTargetDate, isRightCalendar);\n },\n [changeDates, isRightCalendar, month],\n );\n\n const onYearDropdownChange = useCallback(\n (id) => {\n const newTargetDate = new Date(month);\n newTargetDate.setFullYear(id);\n changeDates(newTargetDate, isRightCalendar);\n },\n [changeDates, isRightCalendar, month],\n );\n const handlePreviousMonthClick = useCallback(\n () => changeDates(DateUtils.addMonths(month, -1), isRightCalendar),\n [changeDates, isRightCalendar, month],\n );\n const handleNextMonthClick = useCallback(\n () => changeDates(DateUtils.addMonths(month, 1), isRightCalendar),\n [changeDates, isRightCalendar, month],\n );\n const disableLeftNavButton = useMemo(\n () =>\n month.getFullYear() === yearDropdownValues[0]?.id &&\n month.getMonth() === (isRangePicker && isRightCalendar ? 1 : 0),\n [isRangePicker, isRightCalendar, month, yearDropdownValues],\n );\n const disableRightNavButton = useMemo(\n () =>\n month.getFullYear() ===\n yearDropdownValues[yearDropdownValues.length - 1]?.id &&\n month.getMonth() === (isRangePicker && !isRightCalendar ? 10 : 11),\n [isRangePicker, isRightCalendar, month, yearDropdownValues],\n );\n return (\n
\n \n \n \n
\n \n \n
\n\n \n \n \n
\n );\n};\n\nexport default CalendarNavElement;\n","import React, { useMemo } from 'react';\nimport DayPicker, { Modifier, Modifiers } from 'react-day-picker';\nimport { makeStyles } from '@material-ui/core/styles';\nimport 'react-day-picker/lib/style.css';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport CalendarNavElement, {\n getYearDropdownValues,\n} from '../CalendarNavElement';\n\nconst useStyles = makeStyles({\n customDatePicker: {\n '& .DayPicker-Month': {\n marginTop: '8px',\n },\n '& .DayPicker-wrapper': {\n outline: 'none',\n fontFamily: ThemeV2.typography.adminFontFamily,\n paddingBottom: '8px',\n },\n '& .DayPicker-Weekday': {\n color: ThemeV2.palette.gray8,\n fontWeight: 400,\n borderRadius: 0,\n },\n '& .DayPicker-Day': {\n color: ThemeV2.palette.gray8,\n },\n '& .DayPicker-Day:hover': {\n borderRadius: 0,\n },\n '& .DayPicker-Day--outside': {\n color: ThemeV2.palette.gray6,\n borderRadius: 0,\n },\n '& .DayPicker-Weekdays': {\n borderBottom: `1px solid ${ThemeV2.palette.gray4}`,\n },\n '& .DayPicker-Day--disabled': {\n color: ThemeV2.palette.gray6,\n },\n '& .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside)':\n {\n backgroundColor: ThemeV2.palette.gray3,\n color: ThemeV2.palette.gray8,\n },\n '& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)':\n {\n color: ThemeV2.palette.gray3,\n backgroundColor: ThemeV2.palette.geekBlue6,\n outline: 'none',\n borderRadius: '2px',\n '&:hover': {\n backgroundColor: ThemeV2.palette.geekBlue6,\n color: ThemeV2.palette.gray3,\n },\n },\n '& .DayPicker:not(.DayPicker--interactionDisabled)': {\n '& .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside)':\n {\n '&:hover': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n },\n },\n '& .DayPicker-Day--selected': {\n borderRadius: 0,\n },\n },\n});\n\ninterface CalendarProps {\n activeDate: Date | undefined;\n modifiers?: Partial;\n handleDayClick: (date: Date) => void;\n numberOfYearsAllowedFromCurrentYear: number;\n handleDateChange: (date: Date, isRightCalendar?: boolean) => void;\n isRangePicker?: boolean;\n isRightCalendar?: boolean;\n selectedDays?: [Date | { from?: Date; to?: Date }];\n disabledDays?: Modifier | Modifier[];\n}\n\n// CAPTION COMPONENT IS RETURNING NULL BECAUSE WE ALREADY HAVE DROPDOWNS SHOWING THE\n// CURRENT MONTH. BUT THE DAY PICKER REQUIRES A COMPONENT SO WE ARE USING THIS.\nconst CaptionComponent = () => null;\n\nconst Calendar = ({\n handleDateChange,\n activeDate,\n modifiers,\n handleDayClick,\n isRangePicker,\n isRightCalendar,\n numberOfYearsAllowedFromCurrentYear,\n selectedDays,\n disabledDays,\n}: CalendarProps) => {\n const classes = useStyles();\n const yearDropdownValues = useMemo(\n () => getYearDropdownValues(numberOfYearsAllowedFromCurrentYear),\n [numberOfYearsAllowedFromCurrentYear],\n );\n\n return (\n
\n \n }\n className={classes.customDatePicker}\n onDayClick={handleDayClick}\n disabledDays={disabledDays}\n />\n
\n );\n};\n\nexport default Calendar;\n","import styled from 'styled-components';\nimport { PopoverOrigin } from '@material-ui/core/Popover';\nimport Body from '../../atoms/Body';\n\nexport const anchorOrigin: PopoverOrigin = {\n vertical: 'bottom',\n horizontal: 'left',\n};\nexport const transformOrigin: PopoverOrigin = {\n vertical: 'top',\n horizontal: 'left',\n};\n\nexport const StyledButton = styled.div<{\n disabled: boolean;\n}>`\n padding: 0px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n width: fit-content;\n}`;\n\nexport const Header = styled(Body)`\n padding: 8px;\n width: 100%;\n text-align: center;\n`;\n\nexport const Footer = styled.div`\n padding: 8px;\n`;\n","import React from 'react';\nimport { Flex } from '../../../Utils/styles/display';\nimport { StyledButton } from './styles';\nimport styled from 'styled-components';\n\nconst Wrapper = styled(Flex)<{ disabled: boolean }>`\n pointer-events: ${({ disabled }) => (disabled ? 'none' : 'all')};\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n`;\n\ninterface Props {\n disabled: boolean;\n children: React.ReactNode;\n}\n\nconst TriggerButton = ({\n disabled,\n children,\n}: React.PropsWithChildren): React.ReactElement => {\n return (\n \n {React.Children.map(\n children as React.ReactElement[],\n (child: React.ReactElement) => React.cloneElement(child),\n )}\n \n );\n};\n\n// eslint-disable-next-line react/display-name\nconst PrimaryTriggerButton = React.forwardRef<\n HTMLDivElement | null,\n {\n children: React.ReactNode;\n disabled: boolean;\n onPrimaryButtonClick: (e: React.MouseEvent) => void;\n }\n>((props, ref) => {\n return (\n \n {props?.children}\n \n );\n});\n\nconst SecondaryTriggerButton = ({\n children,\n onSecondaryButtonClick,\n}: {\n children: React.ReactNode;\n onSecondaryButtonClick: (e: React.MouseEvent) => void;\n}): React.ReactElement => (\n
{children}
\n);\n\nTriggerButton.PrimaryTriggerButton = PrimaryTriggerButton;\nTriggerButton.SecondaryTriggerButton = SecondaryTriggerButton;\n\nexport default TriggerButton;\n","import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport Popover from '@material-ui/core/Popover';\nimport { Modifier } from 'react-day-picker';\nimport moment from 'moment';\nimport Calendar from '../CalendarComponent';\nimport TextField from '../../atoms/TextField';\nimport isEmpty from 'lodash/isEmpty';\nimport { anchorOrigin, transformOrigin, Header, Footer } from './styles';\nimport Divider from '../../atoms/Divider';\nimport Button from '../../atoms/Button';\nimport TriggerButton from './TriggerButton';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { getCurrentDateForTimeZone } from '../../../Utils/date';\n\nexport type CalendarInputProps = {\n name: string;\n value?: Date;\n onChange: (value?: Date) => void;\n onBlur?: () => void;\n placeholder: string;\n error?: boolean;\n disabledDays?: Modifier | Modifier[];\n showDropdownIcon?: boolean;\n hideCalendarIcon?: boolean;\n className?: string;\n disabled?: boolean;\n clearTextEnabled?: boolean;\n stopEventPropagation?: boolean;\n triggerComponent?: {\n onPrimaryTrigger?: () => void;\n onSecondaryTrigger?: () => void;\n primaryTriggerComponent?: React.ReactNode;\n secondaryTriggerComponent?: React.ReactNode;\n };\n heading?: string;\n footerProps?: {\n disabled: boolean;\n footerLabel: string;\n onFooterClick: () => void;\n };\n timezone?: string;\n};\n\nconst CalendarInput = ({\n name,\n value,\n onChange,\n onBlur,\n placeholder,\n error,\n disabledDays,\n showDropdownIcon = false,\n hideCalendarIcon = false,\n disabled = false,\n clearTextEnabled = true,\n className,\n triggerComponent,\n heading,\n footerProps,\n stopEventPropagation,\n timezone,\n}: CalendarInputProps) => {\n const [open, setOpen] = React.useState(false);\n const textFieldRef = useRef(null);\n const customButtonRef = useRef(null);\n\n const openPopover = useCallback(() => {\n if (!open) {\n setOpen(true);\n }\n }, [open]);\n\n const stopPropagation = useCallback(\n (e: React.MouseEvent) => {\n if (stopEventPropagation) {\n e.stopPropagation();\n }\n },\n [stopEventPropagation],\n );\n\n const handleClose = useCallback(\n (e: React.MouseEvent) => {\n stopPropagation(e);\n setOpen(false);\n },\n [stopPropagation],\n );\n\n const id = open ? 'calendar-input' : undefined;\n\n const inputValue = useMemo(\n () => (value ? moment(value).format('MMMM D, YYYY') : ''),\n [value],\n );\n\n const handleChange = useCallback(\n (date: Date, modifiers = {}) => {\n // Disable Click on Disabled dates\n if (modifiers.disabled) {\n return;\n }\n setOpen(false);\n onChange(date);\n },\n [onChange],\n );\n\n const handleClearClick = useCallback(() => {\n if (value) {\n onChange(undefined);\n }\n }, [onChange, value]);\n\n const [month, setMonth] = useState(\n value || (timezone ? getCurrentDateForTimeZone(timezone) : new Date()),\n );\n\n const icon = useMemo(() => {\n if (hideCalendarIcon) {\n return '';\n }\n if (showDropdownIcon) {\n return 'calendar';\n }\n return '';\n }, [hideCalendarIcon, showDropdownIcon]);\n\n const renderTriggerComponent = () => {\n if (triggerComponent) {\n const {\n primaryTriggerComponent,\n secondaryTriggerComponent,\n onPrimaryTrigger,\n onSecondaryTrigger,\n } = triggerComponent;\n return (\n \n {\n openPopover();\n stopPropagation(e);\n if (onPrimaryTrigger) {\n onPrimaryTrigger();\n }\n }}\n >\n {primaryTriggerComponent}\n \n {\n stopPropagation(e);\n if (onSecondaryTrigger) {\n onSecondaryTrigger();\n }\n }}\n >\n {secondaryTriggerComponent}\n \n \n );\n }\n return (\n \n );\n };\n\n return (\n <>\n {renderTriggerComponent()}\n {open && (\n \n {heading && (\n <>\n
{heading}
\n \n \n )}\n \n {footerProps && (\n <>\n \n
\n {\n setOpen(false);\n if (footerProps?.onFooterClick)\n footerProps?.onFooterClick();\n }}\n color=\"secondary\"\n variant=\"text\"\n status=\"warning\"\n disabled={footerProps?.disabled}\n >\n {footerProps?.footerLabel}\n \n
\n \n )}\n \n )}\n \n );\n};\n\nexport default CalendarInput;\n","import React, { useState } from 'react';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport { BaseEmoji, CustomEmoji, EmojiData } from 'emoji-mart';\n\nimport Heading from '../../atoms/Heading';\nimport EmoticonPickerPopover from '../EmoticonPickerPopover';\nimport { PopoverChildrenProps } from '../../../hooks/usePopover/interface';\nimport { TextFieldWithEmoticonPickerProps } from './interface';\nimport { StyledTextField, StyledSVGIcon } from './styles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst renderEmoji = (emoji: BaseEmoji | CustomEmoji) => {\n const customEmoji = { ...emoji } as CustomEmoji;\n if (customEmoji.imageUrl) {\n return customEmoji.imageUrl;\n }\n const baseEmoji = { ...emoji } as BaseEmoji;\n return String.fromCodePoint(parseInt(baseEmoji.unified, 16));\n};\n\nconst TextFieldWithEmoticonPicker = (\n props: TextFieldWithEmoticonPickerProps,\n) => {\n const { value, label, name, placeholder, onChange } = props;\n\n const [textFieldValue, setTextFieldValue] = useState(value.textField);\n const [emoticonValue, setEmoticonValue] = useState(\n value.emoticon,\n );\n const handleTextFieldValueChange = (\n e: React.ChangeEvent,\n ) => {\n setTextFieldValue(e.target.value);\n onChange({ textField: e.target.value, emoticon: emoticonValue });\n };\n const handleEmoticonSelect = (emoji: EmojiData) => {\n setEmoticonValue(emoji);\n onChange({ textField: textFieldValue, emoticon: emoji });\n };\n\n const startAdornment = {\n startAdornment: (\n \n {({ togglePopover }: PopoverChildrenProps) => (\n {\n togglePopover();\n }}\n data-testid=\"emoticonPickerButton\"\n >\n <>\n \n {emoticonValue !== undefined ? renderEmoji(emoticonValue) : '+'}\n \n \n \n \n )}\n \n ),\n };\n\n return (\n
\n \n
\n );\n};\n\nexport default TextFieldWithEmoticonPicker;\n","import { css } from 'styled-components';\n\nexport const ellipsisStyle = css`\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const FullWidthStyle = css`\n width: 100%;\n`;\n\nexport const shadowElevation2Style = css`\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.04), 0px 3px 4px rgba(0, 0, 0, 0.02),\n 0px 1px 5px rgba(0, 0, 0, 0.12);\n`;\n","import styled, { css } from 'styled-components';\n\nimport Checkbox from '../../atoms/Checkbox';\nimport Avatar from '../../atoms/Avatar';\nimport Body from '../../atoms/Body';\nimport { ellipsisStyle } from '../../../Utils/styles/css';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const StyledWrapper = styled.div<{\n hasInfo?: boolean;\n hasAvatar?: boolean;\n}>`\n position: relative;\n display: ${({ hasInfo }) => hasInfo && 'flex'};\n align-items: ${({ hasInfo }) => hasInfo && 'center'};\n justify-content: ${({ hasInfo }) => hasInfo && 'space-between'};\n margin-bottom: ${({ hasAvatar }) => (hasAvatar ? '12px' : '8px')};\n min-height: ${({ hasAvatar }) => hasAvatar && '24px'};\n`;\n\nconst InfoStyle = css`\n overflow: hidden;\n padding-left: 1px;\n flex: 1;\n`;\n\nexport const StyledCheckbox = styled(Checkbox)<{\n value?: boolean;\n hasInfo?: boolean;\n hasAvatar: boolean;\n}>`\n ${({ hasInfo }) => hasInfo && InfoStyle};\n div:last-child {\n position: relative;\n color: ${ThemeV2.palette.gray8};\n font-size: 16px;\n padding-left: ${({ hasAvatar }) => hasAvatar && '36px'};\n z-index: 1;\n font-weight: ${({ value }) => value && 500};\n width: ${({ hasAvatar }) =>\n hasAvatar ? 'calc(100% - 36px)' : 'calc(100% - 24px)'};\n ${ellipsisStyle}\n user-select: none;\n }\n`;\n\nexport const StyledAvatar = styled(Avatar)`\n position: absolute;\n top: 0;\n left: 24px;\n`;\n\nexport const StyledBody = styled(Body)`\n white-space: nowrap;\n`;\n","import React from 'react';\n\nimport {\n StyledWrapper,\n StyledCheckbox,\n StyledAvatar,\n StyledBody,\n} from './styles';\nimport { FlowCheckboxProps } from './interfaces';\n\nimport { CheckboxProps } from '../../atoms/Checkbox';\nimport { AvatarProps } from '../../atoms/Avatar/interfaces';\nimport { MemberState } from '../../../interfaces/user';\n\nconst FlowCheckbox = (props: FlowCheckboxProps) => {\n const {\n label,\n name,\n value,\n onChange,\n size,\n color,\n className,\n info,\n showAvatar = false,\n avatarName,\n memberState,\n disabled = false,\n icon,\n ...rest\n } = props;\n\n const checkboxProps: CheckboxProps = {\n label,\n name,\n value,\n onChange,\n icon,\n size,\n color,\n disabled,\n };\n\n const avatarProps: AvatarProps = {\n name: avatarName,\n ...rest,\n };\n const { img } = avatarProps;\n const hasAvatar = !!img || showAvatar;\n const hasInfo = !!info;\n const avatarIcon =\n memberState === MemberState.PENDING ? 'pending-person' : '';\n return (\n \n \n {hasAvatar && (\n \n )}\n {hasInfo && info && (\n \n {info}\n \n )}\n \n );\n};\n\nexport default FlowCheckbox;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n string,\n oneOf,\n bool,\n func,\n shape,\n arrayOf,\n oneOfType,\n number,\n node,\n} from 'prop-types';\n\nimport TextField from '../../atoms/TextField';\nimport TextField_V2 from '../TextField_V2';\nimport TextField_V3 from '../NewTextfield';\nimport Label from '../../atoms/Label';\nimport Body from '../../atoms/Body';\nimport Button from '../../atoms/Button';\nimport TextArea from '../../atoms/TextArea';\nimport ProgressValidator from '../ProgressValidator';\nimport ValidationText from '../ValidationText';\nimport DropdownGroup, { optionsListPropType } from '../DropdownGroup';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport DropdownWithMultiSelect from '../DropdownWithMultiSelect';\nimport TextFieldWithChips from '../TextfieldWithChips';\nimport CalendarInput from '../CalendarInput';\nimport RadioGroup from '../RadioGroup';\nimport Checkbox from '../../atoms/Checkbox';\nimport TextFieldWithEmoticonPicker from '../TextFieldWithEmoticonPicker';\nimport FlowCheckbox from '../FlowCheckbox';\nimport { SingleSelectAutoComplete } from '../../organism/Autocomplete';\n\nconst useStyles = makeStyles({\n component: {\n marginBottom: '4px',\n },\n progressValidator: {\n marginBottom: 4,\n },\n validationTexts: {\n marginBottom: 4,\n },\n helperText: (props) => ({\n color: props.error ? ThemeV2.palette.red6 : ThemeV2.palette.gray7,\n }),\n});\n\nconst Input = (props) => {\n let Component;\n switch (props.type) {\n case 'text':\n case 'password':\n case 'number':\n Component = TextField;\n break;\n case 'button':\n case 'submit':\n Component = Button;\n break;\n case 'dropdown':\n Component = DropdownGroup;\n break;\n case 'dropdownWithMultiSelect':\n Component = DropdownWithMultiSelect;\n break;\n case 'textWithChips':\n Component = TextFieldWithChips;\n break;\n case 'date':\n Component = CalendarInput;\n break;\n case 'textV2_text':\n case 'textV2_password':\n case 'textV2_number':\n Component = TextField_V2;\n break;\n case 'textArea':\n Component = TextArea;\n break;\n case 'textV3_text':\n case 'textV3_password':\n case 'textV3_number':\n Component = TextField_V3;\n break;\n case 'radio':\n Component = RadioGroup;\n break;\n case 'checkbox':\n Component = Checkbox;\n break;\n case 'textV3_text_emoticon_picker':\n Component = TextFieldWithEmoticonPicker;\n break;\n case 'flowCheckbox':\n Component = FlowCheckbox;\n break;\n case 'singleSelectAutoComplete':\n Component = SingleSelectAutoComplete;\n break;\n default:\n Component = TextField;\n }\n const {\n type,\n value,\n placeholder,\n icon,\n iconSize,\n iconHasBackground,\n iconBackgroundColor,\n domain,\n error,\n autoFocus,\n autoComplete,\n isValid,\n onChange,\n onKeyPress,\n onBlur,\n className: parentClassName,\n onClick,\n disabled,\n isFullWidth,\n strength,\n validationTexts,\n optionsList,\n width,\n selectedOptions,\n onChangeList,\n helperText,\n label,\n name,\n options,\n rows,\n multiline,\n onInputChange,\n onInputFocus,\n isLoading,\n noOptionsText,\n disabledDays,\n helperTextVariant,\n enableChip,\n dropdownItems,\n selectedItems,\n limitTags,\n hasDropdown,\n isEditable,\n disableLimit,\n isMultiSelectEnable,\n radioOptions,\n size,\n img,\n disableClearButton,\n removeElevation,\n } = props;\n\n const componentType = useMemo(() => {\n if (\n type === 'textV2_text' ||\n type === 'textV3_text' ||\n type === 'textV3_text_emoticon_picker'\n )\n return 'text';\n if (type === 'textV2_password' || type === 'textV3_password')\n return 'password';\n if (type === 'textV2_number' || type === 'textV3_number') return 'number';\n return type;\n }, [type]);\n\n const dropDownProps = useMemo(() => {\n if (hasDropdown) {\n return {\n enableChip,\n dropdownItems,\n selectedItems,\n limitTags,\n isEditable,\n };\n }\n return null;\n }, [\n dropdownItems,\n enableChip,\n isEditable,\n limitTags,\n selectedItems,\n hasDropdown,\n ]);\n\n const inputProps = {\n name,\n type: componentType,\n value,\n placeholder,\n icon,\n iconSize,\n iconHasBackground,\n iconBackgroundColor,\n domain,\n error,\n autoFocus,\n isValid,\n onChange,\n onKeyPress,\n onBlur,\n onClick,\n disabled,\n isFullWidth,\n optionsList,\n width,\n selectedOptions,\n onChangeList,\n options,\n onInputChange,\n onInputFocus,\n isLoading,\n noOptionsText,\n disabledDays,\n label,\n helperText,\n disableLimit,\n isMultiSelectEnable,\n /* This property is for TextField_V2 */\n hasError: error,\n radioOptions,\n size,\n disableClearButton,\n rows,\n multiline,\n removeElevation,\n autoComplete,\n ...dropDownProps,\n img,\n };\n\n const isTextFieldV2orV3 = useMemo(() => {\n if (\n type === 'textV2_text' ||\n type === 'textV3_text' ||\n type === 'textV3_text_emoticon_picker'\n )\n return true;\n if (type === 'textV2_number' || type === 'textV3_number') return true;\n if (type === 'textV2_password' || type === 'textV3_password') return true;\n if (type === 'textArea') return true;\n if (type === 'singleSelectAutoComplete') return true;\n return false;\n }, [type]);\n const isCheckbox = useMemo(() => {\n return type === 'checkbox' || type === 'flowCheckbox';\n }, [type]);\n const classes = useStyles(props);\n const className = `${classes.component} ${parentClassName}`;\n\n return (\n <>\n {label && !isTextFieldV2orV3 && !isCheckbox && (\n \n )}\n \n {helperText && !isTextFieldV2orV3 && (\n \n {helperText}\n \n )}\n {strength && (\n \n )}\n {validationTexts.length > 0 && (\n
\n {validationTexts.map((item) => (\n \n {item.text}\n \n ))}\n
\n )}\n \n );\n};\n\nexport const inputTypePropType = oneOf([\n 'text',\n 'textV2_text',\n 'textV2_number',\n 'textV2_password',\n 'textV3_text',\n 'textV3_number',\n 'textV3_password',\n 'textArea',\n 'textV2_textArea',\n 'number',\n 'password',\n 'button',\n 'submit',\n 'dropdown',\n 'dropdownWithMultiSelect',\n 'textWithChips',\n 'date',\n 'radio',\n 'checkbox',\n 'textV3_text_emoticon_picker',\n 'flowCheckbox',\n 'singleSelectAutoComplete',\n]);\n\nexport const AssemblyCurrencyTypes = shape({\n name: string.isRequired,\n pluralName: string.isRequired,\n type: oneOf(['REGULAR', 'CUSTOM']).isRequired,\n value: string,\n});\n\nexport const individualItemTypes = arrayOf(\n shape({\n value: string.isRequired,\n id: (string || number).isRequired,\n isSelected: bool,\n prefixIcon: string,\n prefixImg: string,\n disabled: bool,\n deleteItem: bool,\n assemblyCurrency: AssemblyCurrencyTypes,\n emoji: string,\n }),\n);\n\nexport const dropdownItemsTypes = arrayOf(\n shape({\n id: (string || number || null || undefined).isRequired,\n value: string,\n prefixIcon: string || undefined,\n prefixImg: string || undefined,\n disabled: bool || undefined,\n deleteItem: bool || undefined,\n category: string,\n items: individualItemTypes,\n }),\n);\n\nexport const SelectedItemTypes = arrayOf(\n shape({\n id: (string || number).isRequired,\n label: string.isRequired,\n avatar: string,\n clickable: bool,\n }),\n);\n\nInput.propTypes = {\n type: inputTypePropType,\n onChange: func,\n onBlur: func,\n onKeyPress: func,\n value: oneOfType([\n string,\n bool,\n shape(),\n arrayOf(shape()),\n number,\n arrayOf(string),\n ]),\n placeholder: string,\n icon: string,\n iconSize: string,\n iconHasBackground: bool,\n iconBackgroundColor: oneOf(Object.keys(ThemeV2.palette)),\n domain: string,\n error: bool,\n autoFocus: bool,\n name: string,\n label: node,\n disabled: bool,\n helperText: string,\n strength: string,\n validationTexts: arrayOf(\n shape({\n text: string.isRequired,\n checked: bool,\n }),\n ),\n onClick: func,\n isValid: bool,\n rows: number,\n multiline: bool,\n isFullWidth: bool,\n className: string,\n optionsList: optionsListPropType,\n width: string,\n selectedOptions: arrayOf(string) || arrayOf(number),\n onChangeList: arrayOf(func),\n options: oneOfType([arrayOf(string), arrayOf(shape())]),\n onInputChange: func,\n onInputFocus: func,\n isLoading: bool,\n noOptionsText: string,\n disabledDays: func,\n helperTextVariant: string,\n enableChip: bool,\n dropdownItems: dropdownItemsTypes,\n selectedItems: SelectedItemTypes,\n limitTags: number,\n hasDropdown: bool,\n isEditable: bool,\n disableLimit: bool,\n isMultiSelectEnable: bool,\n disableClearButton: bool,\n removeElevation: bool,\n radioOptions: arrayOf(\n shape({\n value: string.isRequired,\n label: string,\n }),\n ),\n size: string,\n img: string,\n autoComplete: string,\n showClearIcon: bool,\n};\n\nInput.defaultProps = {\n type: 'text',\n error: false,\n disabled: false,\n onChange: () => {},\n onBlur: () => {},\n onKeyPress: () => {},\n placeholder: '',\n strength: null,\n validationTexts: [],\n value: '',\n icon: null,\n iconSize: '18px',\n iconHasBackground: false,\n iconBackgroundColor: null,\n domain: null,\n autoFocus: false,\n rows: null,\n multiline: false,\n removeElevation: true,\n name: '',\n label: '',\n isValid: false,\n helperText: null,\n onClick: () => {},\n disableClearButton: false,\n isFullWidth: false,\n className: '',\n optionsList: [],\n width: 'auto',\n selectedOptions: [],\n onChangeList: [],\n options: [],\n onInputChange: () => {},\n onInputFocus: () => {},\n isLoading: false,\n noOptionsText: undefined,\n disabledDays: () => {},\n helperTextVariant: 'body3',\n enableChip: false,\n dropdownItems: [],\n selectedItems: [],\n limitTags: -1,\n hasDropdown: false,\n isEditable: false,\n disableLimit: false,\n isMultiSelectEnable: true,\n radioOptions: undefined,\n size: undefined,\n img: '',\n autoComplete: '',\n showClearIcon: false,\n};\n\nconst MemoizedInput = React.memo(Input);\nMemoizedInput.displayName = 'Input';\n\nexport default MemoizedInput;\n","import { addDays, format, getDay, getMonth, startOfMonth } from 'date-fns';\nimport _ from 'lodash';\n\n// this to get dayIds for custom occurrence\n/* getDay() consider 0 as Sunday but in RRule Monday is our 1st day\nie., 0 is Monday. That' why when the day is 0 we return 6 & for the rest,\nwe reduce 1 */\nexport const getDayIdsForCustomOccurrence = (date: Date) => {\n const day = getDay(date);\n if (day === 0) {\n return 6;\n }\n return day - 1;\n};\n\n/*\n To get the selected date is the last day of the month and the week number\n 1. get the startDate of the selectedMonth\n 2. get the 1st day of the selectedDay (i.e, if the selectedDay is Monday then get the\n 1st Monday from the selectedMonth)\n 3. now get all the days of the selectedDay (i.e, get all the Mondays from the selectedMonth)\n 4. now map the selectedDate with the arrayOfSelectedDays to get the weekNumber\n*/\nexport const getWeekDetails = (date: Date) => {\n const selectedDay = getDay(date);\n const startDayOfMonth = startOfMonth(date);\n let tempDate = startDayOfMonth;\n for (let i = 0; i < 7; i += 1) {\n if (getDay(tempDate) === selectedDay) {\n break;\n } else {\n tempDate = addDays(tempDate, 1);\n }\n }\n\n const arrayOfSelectedDays = [];\n while (getMonth(tempDate) === getMonth(date)) {\n arrayOfSelectedDays.push(format(tempDate, 'd'));\n tempDate = addDays(tempDate, 7);\n }\n\n return {\n weekNumber: arrayOfSelectedDays.indexOf(format(date, 'd')) + 1,\n isLastWeek:\n arrayOfSelectedDays.indexOf(format(date, 'd')) + 1 ===\n arrayOfSelectedDays.length,\n };\n};\n\n// to check whether the RRule has all days[Sun-Sat]\nexport const hasAllWeekDays = (selectedDays: number[]) => {\n const allWeekDays = [0, 1, 2, 3, 4, 5, 6];\n return _.isEqual(allWeekDays, selectedDays.sort());\n};\n\n// to check whether the RRule has all the week days[Mon-Fri] - this is for builder\nexport const hasWeekDaysInParsedRRule = (selectedDays: number[]) => {\n const weekDays = [0, 1, 2, 3, 4];\n return _.isEqual(weekDays, selectedDays.sort());\n};\n\nexport const isSameDay = (\n currentDate: Date | undefined,\n receivedDay: number,\n) => {\n if (currentDate) {\n const currentDay = getDayIdsForCustomOccurrence(currentDate);\n const result = currentDay === receivedDay;\n return result;\n }\n return false;\n};\n","// TODO: Changes are required bases on Google API changes (2023)\n// Note by Vijay\n// https://github.com/anthonyjgrove/react-google-login/issues/473\n// https://developers.googleblog.com/2021/08/gsi-jsweb-deprecation.html\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport {\n GoogleLoginResponse,\n GoogleLoginResponseOffline,\n useGoogleLogin,\n} from 'react-google-login';\nimport { Helmet } from 'react-helmet';\n\nimport {\n GET_SSO_OAUTH_CONFIG,\n GET_SSO_SIGNIN_CONFIG,\n GET_SSO_SIGNUP_CONFIG,\n} from '../../constants/endpoints';\nimport {\n ApiResponseError,\n ApiResponseSuccess,\n} from '../../interfaces/identityManager/common';\nimport useRequest from '../../hooks/useRequest/useRequest';\nimport { SSOOptions } from '../../Utils/data/ssoManager/common';\nimport { SSOErrorCodes } from '../../Utils/data/ssoManager/error';\n\nexport interface GSuiteSSOChildrenProps {\n signIn: () => void;\n loaded: boolean;\n initError?: string;\n}\n\nexport interface GSuiteSSOControllerProps {\n flow: GOOGLE_SSO_FLOW;\n children: React.FunctionComponent;\n onSuccess: (code: string) => void;\n onFailure: (error: ApiResponseError) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport enum GOOGLE_SSO_FLOW {\n AUTHORIZE = 'AUTHORIZE',\n SIGN_IN = 'SIGN_IN',\n SIGN_UP = 'SIGN_UP',\n}\n\ninterface HookComponentProps {\n clientId: string;\n scope: string;\n onSuccess: (\n response: GoogleLoginResponse | GoogleLoginResponseOffline,\n ) => void;\n onFailure: (error: ApiResponseError) => void;\n children: React.FunctionComponent;\n}\n\nexport const HookComponent = ({\n clientId,\n scope,\n onSuccess,\n onFailure,\n children,\n}: HookComponentProps) => {\n const responseType = 'code';\n const [initError, setInitError] = useState(undefined);\n const handleFailure = useCallback(\n (error) => {\n const { error: errorCode } = error;\n if (errorCode === SSOErrorCodes.COOKIES_NOT_ALLOWED) {\n setInitError(errorCode);\n } else {\n onFailure(error);\n }\n },\n [onFailure],\n );\n const { loaded } = useGoogleLogin({\n clientId,\n scope,\n responseType,\n onSuccess,\n onFailure: handleFailure,\n });\n // A Hack to required additional scopes, ideally to be done inside library\n // https://developers.google.com/identity/sign-in/web/incremental-auth\n // https://developers.google.com/identity/sign-in/web/reference#googleusergrantofflineaccessoptions\n const signIn = useCallback(() => {\n if (loaded) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n window.gapi.auth2\n .getAuthInstance()\n .currentUser.get()\n .grantOfflineAccess({\n scope,\n })\n .then(onSuccess, handleFailure);\n }\n }, [loaded, handleFailure, onSuccess, scope]);\n return React.createElement(children, {\n signIn,\n loaded,\n initError,\n });\n};\n\nconst GSuiteSSOController = ({\n flow,\n children,\n onSuccess,\n onFailure,\n}: GSuiteSSOControllerProps) => {\n const sso = SSOOptions.GOOGLE;\n const [clientId, setClientId] = useState('');\n const [scope, setScope] = useState('');\n let request = null;\n switch (flow) {\n case GOOGLE_SSO_FLOW.AUTHORIZE:\n request = GET_SSO_OAUTH_CONFIG;\n break;\n case GOOGLE_SSO_FLOW.SIGN_IN:\n request = GET_SSO_SIGNIN_CONFIG;\n break;\n case GOOGLE_SSO_FLOW.SIGN_UP:\n request = GET_SSO_SIGNUP_CONFIG;\n break;\n default:\n request = GET_SSO_OAUTH_CONFIG;\n break;\n }\n\n const onRequestSuccess = useCallback((response: ApiResponseSuccess) => {\n const { data } = response;\n setClientId(data.clientId);\n setScope(data.oauthScopes.join(' '));\n }, []);\n\n const { fireRequest, isLoading } = useRequest(request, {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess: onRequestSuccess,\n initialLoadingState: true,\n });\n\n useEffect(() => {\n fireRequest({\n substitutions: { sso },\n });\n }, [fireRequest, sso]);\n\n const handleSuccess = useCallback(\n (response: GoogleLoginResponse | GoogleLoginResponseOffline) => {\n if (response.code) {\n onSuccess(response.code);\n }\n },\n [onSuccess],\n );\n\n const emptyFunction = useCallback(() => {}, []);\n\n if (isLoading) {\n return React.createElement(children, {\n loaded: !isLoading,\n signIn: emptyFunction,\n });\n }\n return (\n <>\n \n \n \n \n {children}\n \n \n );\n};\n\nexport default GSuiteSSOController;\n","import pluralize from 'pluralize';\nimport { A, AN, FOR } from '../../../languages/en/singleWords';\nimport accountManagementTypes from '../../identity/accountManagementTypes';\n\nexport const accountManagementTypeLanguageMap = {\n [accountManagementTypes.ALL_USERS]: 'Everyone',\n [accountManagementTypes.BUSINESS_UNIT]: 'Business Unit',\n [accountManagementTypes.DEPARTMENT]: 'Department',\n [accountManagementTypes.SELECTED_USERS]: 'People',\n [accountManagementTypes.CHANNELS]: 'Channel',\n [accountManagementTypes.GROUPS]: 'Group',\n [accountManagementTypes.COMPANIES]: 'Company',\n [accountManagementTypes.ORGANIZATIONAL_UNIT]: 'Organizational Unit',\n [accountManagementTypes.WORK_LOCATION]: 'Work Location',\n};\n\nexport const identityManagerSteps = {\n WHAT_IS_THIS: 'WHAT_IS_THIS',\n SETUP_INFO: 'SETUP_INFO',\n AUTHORIZE_ADP: 'AUTHORIZE_ADP',\n SELECT_PEOPLE: 'SELECT_PEOPLE',\n CONFIGURE_INVITES: 'CONFIGURE_INVITES',\n CREATE_ACCOUNTS: 'CREATE_ACCOUNTS',\n};\n\nexport const buttonText = {\n STEP_WHAT_IS_THIS_NEXT: 'Continue',\n STEP_WHAT_IS_THIS_CANCEL: 'Cancel',\n STEP_SETUP_UP_INFO_NEXT: 'Connect :IMDisplayName',\n STEP_AUTHORIZE_ADP_NEXT: 'Authorize',\n STEP_SELECT_PEOPLE_NEXT_DEFAULT: 'Continue',\n STEP_SELECT_PEOPLE_NEXT_EDIT: 'Continue with Updates',\n STEP_SELECT_PEOPLE_NEXT_ALL_USERS: `Continue with ${\n accountManagementTypeLanguageMap[accountManagementTypes.ALL_USERS]\n }`,\n STEP_SELECT_PEOPLE_NEXT_SELECTED_USERS: `Continue with :count ${\n accountManagementTypeLanguageMap[accountManagementTypes.SELECTED_USERS]\n }`,\n STEP_CONFIGURE_INVITES_NEXT: 'Create Assembly Accounts',\n STEP_CONFIGURE_INVITES_BACK: 'Back',\n STEP_CREATE_ACCOUNTS_NEXT_DEFAULT: 'View People',\n STEP_CREATE_ACCOUNTS_NEXT_QUEUED_INVITES: 'View Queued Invites',\n STEP_CREATE_ACCOUNTS_BACK: 'Disconnect :IMDisplayName',\n};\n\nexport const getSelectUsersNextButtonText = (\n accountManagementType: string,\n count: number,\n) => {\n return `Continue with ${count} ${\n count > 1\n ? pluralize(accountManagementTypeLanguageMap[accountManagementType])\n : accountManagementTypeLanguageMap[accountManagementType]\n }`;\n};\n\nexport const selectPeopleEntityTableHeadings = {\n [accountManagementTypes.ALL_USERS]: {\n allList: '',\n newList: '',\n removeList: '',\n },\n [accountManagementTypes.BUSINESS_UNIT]: {\n allList: `All ${\n accountManagementTypeLanguageMap[accountManagementTypes.BUSINESS_UNIT]\n }s :operation (:count):`,\n newList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.BUSINESS_UNIT]\n }s being added (:count members):`,\n removeList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.BUSINESS_UNIT]\n }s being removed (:count members):`,\n },\n [accountManagementTypes.DEPARTMENT]: {\n allList: `All ${\n accountManagementTypeLanguageMap[accountManagementTypes.DEPARTMENT]\n }s :operation (:count):`,\n newList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.DEPARTMENT]\n }s being added (:count members):`,\n removeList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.DEPARTMENT]\n }s being removed (:count members):`,\n },\n [accountManagementTypes.CHANNELS]: {\n allList: `All ${\n accountManagementTypeLanguageMap[accountManagementTypes.CHANNELS]\n }s :operation (:count):`,\n newList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.CHANNELS]\n }s being added (:count members):`,\n removeList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.CHANNELS]\n }s being removed (:count members):`,\n },\n [accountManagementTypes.GROUPS]: {\n allList: `All ${\n accountManagementTypeLanguageMap[accountManagementTypes.GROUPS]\n }s :operation (:count):`,\n newList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.GROUPS]\n }s being added (:count members):`,\n removeList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.GROUPS]\n }s being removed (:count members):`,\n },\n [accountManagementTypes.COMPANIES]: {\n allList: `All ${\n accountManagementTypeLanguageMap[accountManagementTypes.COMPANIES]\n }s :operation (:count):`,\n newList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.COMPANIES]\n }s being added (:count members):`,\n removeList: `${\n accountManagementTypeLanguageMap[accountManagementTypes.COMPANIES]\n }s being removed (:count members):`,\n },\n [accountManagementTypes.ORGANIZATIONAL_UNIT]: {\n allList: `All ${\n accountManagementTypeLanguageMap[\n accountManagementTypes.ORGANIZATIONAL_UNIT\n ]\n }s :operation (:count):`,\n newList: `${\n accountManagementTypeLanguageMap[\n accountManagementTypes.ORGANIZATIONAL_UNIT\n ]\n }s being added (:count members):`,\n removeList: `${\n accountManagementTypeLanguageMap[\n accountManagementTypes.ORGANIZATIONAL_UNIT\n ]\n }s being removed (:count members):`,\n },\n [accountManagementTypes.SELECTED_USERS]: {\n allList: 'All members :operation (:count):',\n newList: 'Members being added (:count):',\n removeList: 'Members being removed (:count):',\n },\n};\n\nexport const getEntityTableSearchBoxPlaceHolder = (entity: string) => {\n const placeholder = () => {\n if (\n entity ===\n accountManagementTypeLanguageMap[\n accountManagementTypes.ORGANIZATIONAL_UNIT\n ]\n ) {\n return ` ${FOR} ${AN} `;\n }\n if (\n entity ===\n accountManagementTypeLanguageMap[accountManagementTypes.SELECTED_USERS]\n ) {\n return ' ';\n }\n return ` ${FOR} ${A} `;\n };\n const placeholderText = placeholder();\n return `Search${placeholderText}${entity}`;\n};\n\nexport const userSelectSelectedUsersIconInfo = {\n heading: 'Friendly heads up!',\n subHeading:\n 'This will require you and admins to manually add or remove members',\n};\n\nexport const modalText = {\n DISCONNECT: 'Are you sure you want to disconnect :displayName?',\n CANCEL: 'Are you sure you want to cancel :displayName setup? ',\n NEVER_MIND: 'Nevermind',\n SURE: `I’m sure`,\n};\n\nexport const BotManageContent = {\n HEADING: 'Install the Assembly :displayName bot?',\n SUB_HEADING:\n 'Want to use Assembly without leaving :displayName? Easy, install our :displayName app and assign a channel!',\n INSTALL_BUTTON_TEXT: 'Install :displayName App',\n INSTALLED_TEXT: 'Installed',\n DISCONNECT_BUTTON_TEXT: 'Disconnect :displayName',\n};\n\nexport const ChannelSelectionContent = {\n HEADING: 'Select a default channel to keep all recognition in one channel',\n SUB_HEADING:\n // eslint-disable-next-line max-len\n 'If you already have a public recognition channel, we recommend selecting it. If not, we recommend creating a new public channel.',\n TAB1_LABEL: 'Select Channel',\n TAB2_LABEL: 'Create Channel',\n HELPER_TEXT: 'We will invite all existing members for you to this channel',\n BACK_BUTTON_TEXT: `Back`,\n NEXT_BUTTON_TEXT: 'Next',\n};\n\nexport const CustomCurrencyContent = {\n HEADING: 'Customize your company’s own recognition currency.',\n SUB_HEADING:\n // eslint-disable-next-line max-len\n 'Make your currency something fun and relevant to your company. It will encourage team members to give more shoutouts. Trophy is our default.',\n ICON_PICKER_DEFAULT_ICON: '🏆',\n ICON_PICKER_PLACEHOLDER_TEXT: 'Eg: Trophies',\n ICON_PICKER_HELPER_TEXT: '👉 Less than 22 characters and singular',\n HELPER_TEXT:\n '👉 Please confirm if the plural version is correct, or change it',\n INPUT_VALUE: 'Trophies',\n INVALID_ERROR: 'Invalid Error',\n CHECK_IF_SINGULAR: '🚨 Whoops, that looks like a plural, keep it singular',\n};\n\nexport const BotSuccessContent = {\n HEADING: 'Congrats! Your Assembly is setup and ready to go',\n SUB_HEADING:\n // eslint-disable-next-line max-len\n 'Your team can start giving customCurrency’s with their recognition right now! Head to your feed and find a team member you want to recognize or appreciate!',\n BUTTON_FEED_TEXT: 'Head to my feed ',\n BUTTON_INVITE_TEXT: 'Invite members now ',\n LINK_TEXT: 'Not now, head to my feed',\n};\n\nexport const AutoApproveMembersContent = {\n PRIMARY_BUTTON_TEXT: 'Next >',\n SECONDARY_BUTTON_TEXT: 'Nevermind',\n HEADING: 'Auto Approve Members',\n PLACEHOLDER_TEXT: 'Search members',\n DESCRIPTION_TEXT:\n // eslint-disable-next-line max-len\n 'These members have requested to join your Assembly. When you switch to auto approval, these requests will be approved. If you’d like to reject anyone, please deselect them here.',\n};\n\nexport const TwoColumnEntitySelectorContent = {\n PENDING_TEXT: 'Pending Requests',\n SELECT_TEXT: 'Select All',\n DESELECT_TEXT: 'Deselect All',\n REJECT_TEXT: 'Reject',\n NO_MATCH_FOUND: 'No match found',\n};\n\nexport const SelectPeopleLoadingStateContent = {\n HEADING: 'We’re connecting to your HRIS provider',\n // eslint-disable-next-line max-len\n BODY: 'This may take a 2-10 minute depending on your company size. You can leave this page and continue with other tasks. Once we’re done connecting with your HRIS, you can continue to configure invites.',\n LOADING_GIF: 'https://media.giphy.com/media/QBd2kLB5qDmysEXre9/giphy.gif',\n};\n","import { IntegrationProvidersEnum } from '../../../screens/admin/content/settings/Integrations/interfaces';\n\nconst integrationProviderText = {\n [IntegrationProvidersEnum.SLACK]:\n 'Want to use Assembly without leaving Slack? Easy, install our Slack app and assign a channel!',\n [IntegrationProvidersEnum.MSTEAM]:\n 'Want to use Assembly without leaving MS Teams? Easy, install our Teams app and use our tab!',\n};\nexport enum BotTypeOptions {\n SLACK = 'slack',\n MSTEAMS = 'msteam',\n}\nexport const BotTypeManager = {\n [BotTypeOptions.MSTEAMS]: IntegrationProvidersEnum.MSTEAM,\n [BotTypeOptions.SLACK]: IntegrationProvidersEnum.SLACK,\n};\nexport const BotManager = {\n [IntegrationProvidersEnum.SLACK]: {\n ssoParam: BotTypeOptions.SLACK,\n uri: 'slack',\n logo: 'slack-logo',\n displayName: 'Slack',\n displayText: integrationProviderText[IntegrationProvidersEnum.SLACK],\n helperLink:\n 'http://joinassembly.com/articles/install-the-assembly-slack-chat-app',\n },\n [IntegrationProvidersEnum.MSTEAM]: {\n ssoParam: BotTypeOptions.MSTEAMS,\n uri: 'teams',\n logo: 'ms-teams',\n displayText: integrationProviderText[IntegrationProvidersEnum.MSTEAM],\n displayName: 'MS Teams',\n helperLink:\n 'https://www.joinassembly.com/articles/install-the-assembly-ms-teams-chat-app',\n },\n};\n\nexport const BotAnnouncementRadioValues = {\n ANNOUNCE: '1',\n DONT_ANNOUNCE: '2',\n};\n\nexport const BotAnnouncementRadioOptions = [\n {\n value: BotAnnouncementRadioValues.ANNOUNCE,\n label: `Yes, please 🔔 (recommended)`,\n },\n {\n value: BotAnnouncementRadioValues.DONT_ANNOUNCE,\n label: `No announcement right now, please`,\n },\n];\n\nexport const BotAnnouncementContent = {\n HEADING: 'Want to announce Assembly in your default channel?',\n SUB_HEADING: `The announcement message is helpful to let your team know\n Assembly has been added. The message also has a tutorial on how to start\n giving customCurrency’s!`,\n BACK_BUTTON_TEXT: `Back`,\n NEXT_BUTTON_TEXT: 'Next',\n SEE_WELCOME_MESSAGE: 'See the welcome message',\n SEE_ANNOUNCEMENT: 'See my announcement in my Slack channel',\n ANNOUNCEMENT_SNEAK_PEAK: 'Here’s a sneak peek at the announcement message',\n};\n\nexport const BotFlowContent = {\n HEADING:\n 'Want to use Assembly without leaving :displayName? Easy, install our :displayName app and assign a channel!',\n UPGRADE_TEXT: 'Upgrade now to change',\n LINK_TEXT: 'Not now, head to my feed',\n GIF_LOADING_TEXT:\n 'One moment, you have a big team! Feel free to spin in your chair...',\n};\n\nexport const buttonText = {\n FINISH_STEP: 'Finish Setup',\n GET_STARTED: 'Get Started',\n COMING_SOON: 'Coming Soon',\n NEXT: 'Next',\n CANCEL: 'Cancel',\n BACK: 'Back',\n SKIP_CUSTOMIZING_CURRENCY: 'Skip customizing currency',\n UPGRADE_NOW_TO_CHANGE: 'Upgrade now to change',\n HEAD_TO_MY_FEED: 'Head to my feed',\n INVITE_MEMBERS_NOW: 'Invite members now',\n NOT_NOW: 'Not now, head to my feed',\n GO_TO_SLACK_CHANNEL: 'Go to my Slack channel',\n CLOSE: 'Close',\n SAVE_CHANGES: 'Save Changes',\n DISCONNECT_SLACK: 'Disconnect Slack',\n};\n\nexport const warningText = {\n SETUP_NOT_COMPLETE: 'Setup not complete',\n NOT_ANNOUNCED: 'Not announced, open ‘Quick Settings’ to announce',\n};\n\nexport const crumbText = {\n SETTINGS: 'Settings',\n INTEGRATIONS: 'Integrations',\n SLACK: 'Slack',\n TEAMS: 'MS Teams',\n};\n\nexport const errorText = {\n SELECT_CHANNEL: 'Please select a channel',\n ENTER_CHANNEL_NAME: 'Please enter channel name',\n CHANNEL_NAME_TOO_LONG: 'Sorry, that is too long , 80 characters max!',\n INVALID_CHARACTERS: 'Only lowercase, numbers and - in between',\n GENERIC_ERROR: 'Whoops, looks like something went wrong. Please try again.',\n};\n\nexport const quickSettingsText = {\n [IntegrationProvidersEnum.SLACK]: {\n SEND_ANNOUNCEMENT_QUESTION: 'Send Slack announcement?',\n NOT_ANNOUNCED_YET: `You haven’t announced Assembly in Slack. Announcing can help\n inform and educate your members – `,\n GET_STARTED: 'Get started with announcement',\n WHICH_TEAM: '',\n WHERE_ASSEMBLY_POSTS: 'Where do you want Assembly posts to go in Slack?',\n HELPER_TEXT: 'We will invite all existing members for you to this channel',\n DISCONNECT: 'Disconnect Slack',\n // RECOMMENDATION: 'We recommend a public and dedicated channel',\n },\n [IntegrationProvidersEnum.MSTEAM]: {\n SEND_ANNOUNCEMENT_QUESTION: '',\n NOT_ANNOUNCED_YET: '',\n GET_STARTED: '',\n WHICH_TEAM: 'Which team do you want Assembly to be in? ',\n WHERE_ASSEMBLY_POSTS:\n 'Which channel do you want Assembly posts to go into?',\n HELPER_TEXT: '',\n DISCONNECT: 'Disconnect MS Teams',\n },\n};\n\nexport const defaultSlackChannelPage = {\n SELECT_DEFAULT_CHANNEL: 'Select a default #channel',\n CREATE_CHANNEL_PLACEHOLDER: 'Example: recognition, praise, etc...',\n};\n\nexport const teamsSelectTeamsPage = {\n DROPDOWN_PLACEHOLDER: 'Select a team',\n DROPDOWN_HELPER_TEXT:\n '👉 Only approved users of this team will be able to use Assembly',\n HEADER: 'First, select a team',\n // eslint-disable-next-line max-len\n SUBHEADER: `If you already have a general team, we recommend selecting it. The more people that have access to use Assembly the more successful your recognition initiative will be.`,\n};\n\nexport const teamsChannelPage = {\n SELECT_DEFAULT_CHANNEL: 'Select a default channel',\n CREATE_CHANNEL_HELPER_TEXT:\n '👉 No spaces or periods and no more than 80 characters',\n DROPDOWN_HELPER_TEXT:\n '👉 We will invite all existing members for you to this channel',\n CREATE_CHANNEL_PLACEHOLDER: 'Example: shoutouts, praise, etc...',\n HEADER: 'Select a default channel to keep all recognition in one channel',\n SUB_HEADER:\n // eslint-disable-next-line max-len\n 'If you already have a public recognition channel, we recommend selecting it. If not, we recommend creating a new public channel. You’ll see an Assembly tab in this channel, where you’ll be giving all of your recognition.',\n};\n\nexport const AnnounceAssemblyContent = {\n HEADING: 'Looking to announce Assembly in Slack, right now?',\n SUB_HEADING: `Let your team know that Assembly has been added to Slack!\n This announcement message tells them how to start giving out\n recognition.`,\n LABEL: 'Choose a channel to announce',\n HELPER_TEXT: `👉 We recommend announcing in #general or #shoutouts`,\n ANNOUNCE_BUTTON_TEXT: 'Announce Assembly Now',\n SUCCESS_HEADING: 'Success! You let everyone know about Assembly',\n SUCCESS_BODY: `You’re all done here. Click “Thanks” to close this modal and keep\n exploring on Assembly or click “Go to my Slack channel” to head on\n over to Slack.`,\n SUCCESS_BUTTON_TEXT: 'Thanks',\n};\n\nexport const TabChannelOrganismText = {\n DROPDOWN_HELPER_TEXT: 'Please select the channel',\n DROPDOWN_PLACEHOLDER: 'Select a default #channel',\n INPUT_HELPER_TEXT: `🚨 Go to slack, create your channel, come back and refresh this page`,\n INPUT_PLACEHOLDER: 'Example: recognition, praise, etc...',\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Modal from '@material-ui/core/Modal';\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n width: 520,\n padding: 54,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n background: '#FFFFFF',\n border: '1px solid #F6F6F6',\n boxSizing: 'border-box',\n borderRadius: 10,\n outline: 'none',\n },\n}));\n\nexport default function SimpleModal(props) {\n const classes = useStyles();\n\n return (\n \n
\n {props.children}\n
\n \n );\n}\n","import { withStyles } from '@material-ui/core/styles';\nimport TableRow from '@material-ui/core/TableRow';\n\nexport default withStyles((theme) => ({\n root: {\n '&:nth-of-type(even)': {\n backgroundColor: '#F5F5F5',\n },\n '&$selected': {\n backgroundColor: 'rgb(235,137,33, .20)',\n },\n // selected: {\n // backgroundColor: 'rgb(235,137,33, .20)',\n // },\n '&$hover:hover': {\n backgroundColor: 'rgb(235,137,33, .20)',\n },\n },\n selected: {\n backgroundColor: 'rgb(235,137,33, .20)',\n },\n}))(TableRow);\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport styled from 'styled-components';\n\nimport IconButton from '../../atoms/IconButton_V2';\nimport Modal from '../../atoms/Modal';\nimport Heading from '../../atoms/Heading';\nimport Button from '../../atoms/Button';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport LoadingPulse from '../../atoms/LoadingPulse';\nimport {\n ButtonColors,\n ButtonStatuses,\n ButtonVariants,\n ButtonSizes,\n} from '../../atoms/Button/interfaces';\n\nconst useStyles = makeStyles({\n topWrapper: {\n position: 'relative',\n padding: '16px',\n borderBottom: `1px solid ${ThemeV2.palette.gray4}`,\n },\n headerButton: () => ({\n position: 'absolute !important' as 'absolute',\n top: '12px',\n left: '12px',\n }),\n iconButton: () => ({\n position: 'absolute !important' as 'absolute',\n top: '16px',\n right: '16px',\n }),\n heading: {\n marginBottom: '0px',\n marginTop: '0px',\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'center',\n },\n childrenWrapper: (props: BasicModalTemplateProps) => ({\n padding: props.childrenPadding,\n maxHeight: props.disableContentScroll ? 'auto' : '456px',\n overflowY: props.disableContentScroll ? 'visible' : 'auto',\n '& > *:first-child': {\n marginTop: 0,\n },\n '& > *:last-child': {\n marginBottom: 0,\n },\n }),\n buttonsWrapper: (props: BasicModalTemplateProps) => ({\n display: 'flex',\n justifyContent:\n props.alignActionButtons === 'left' ? 'flex-start' : 'flex-end',\n padding: '16px',\n borderTop: `1px solid ${ThemeV2.palette.gray4}`,\n }),\n primaryAndSecondaryButtonsWrapper: (props: BasicModalTemplateProps) => ({\n display: 'flex',\n justifyContent:\n props.alignActionButtons === 'left' ? 'flex-start' : 'flex-end',\n '& >:not(:first-child):last-child': {\n marginLeft: '16px',\n },\n width: '100%',\n }),\n});\n\nexport const ModalWrapper = styled(Modal)`\n max-width: 496px;\n width: 100%;\n`;\n\nexport interface ModalButtonProps {\n text: string;\n disabled?: boolean;\n isLoading?: boolean;\n status?: ButtonStatuses;\n variant?: ButtonVariants;\n color?: ButtonColors;\n icon?: string;\n size?: ButtonSizes;\n onClick(): void;\n}\n\nexport interface BasicModalTemplateProps {\n isLoading?: boolean;\n isOpen?: boolean;\n children: React.ReactNode;\n heading?: string;\n primaryButton?: ModalButtonProps;\n secondaryButton?: ModalButtonProps;\n tertiaryButton?: ModalButtonProps;\n childrenPadding: string;\n disableContentScroll?: boolean;\n onModalClose(): void;\n className?: string;\n alignActionButtons?: 'left' | 'center' | 'right';\n hasTitleSection?: boolean;\n headerButton?: ModalButtonProps;\n hideCloseIcon?: boolean;\n dataIntroId?: string;\n}\n\nconst BasicModalTemplate = (props: BasicModalTemplateProps) => {\n const classes = useStyles(props);\n const {\n isLoading = false,\n isOpen = true,\n children,\n heading,\n primaryButton,\n secondaryButton,\n tertiaryButton,\n onModalClose,\n className,\n alignActionButtons = 'center',\n hasTitleSection = true,\n headerButton,\n hideCloseIcon = false,\n dataIntroId,\n } = props;\n\n return (\n \n {isLoading && }\n {!isLoading && (\n
\n {hasTitleSection && (\n
\n {headerButton && (\n \n {headerButton?.text}\n \n )}\n \n {heading}\n \n {!hideCloseIcon && (\n \n \n \n )}\n
\n )}\n
\n {children}\n
\n {(primaryButton || secondaryButton) && (\n
\n {tertiaryButton && (\n \n {tertiaryButton.text}\n \n )}\n\n
\n {secondaryButton && (\n \n {secondaryButton.text}\n \n )}\n {primaryButton && (\n \n {primaryButton.text}\n \n )}\n
\n
\n )}\n
\n )}\n \n );\n};\n\nBasicModalTemplate.defaultProps = {\n childrenPadding: '32px',\n};\n\nexport default BasicModalTemplate;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Button from '../../atoms/Button';\nimport { ButtonProps } from '../../atoms/Button/interfaces';\nimport SVGIcon from '../../atoms/SVGIcon';\n\nconst EndButton = styled(Button)`\n margin-left: auto;\n`;\n\nconst Wrapper = styled.div>`\n display: flex;\n padding: ${(props) => `${props.paddingTopBottom} ${props.paddingLeftRight}`};\n border-radius: ${(props) => props.borderRadius};\n background-color: ${(props) => props.backgroundColor};\n align-items: center;\n`;\n\nconst IconWrapper = styled.span>`\n display: flex;\n margin-right: ${(props) => props.iconTextGap};\n`;\n\nexport interface IconInfoProps {\n children: React.ReactNode;\n icon?: string;\n iconColor?: string;\n iconSize?: string;\n backgroundColor?: string;\n paddingTopBottom?: string;\n paddingLeftRight?: string;\n className?: string;\n borderRadius?: string;\n iconTextGap?: string;\n endButton?: ButtonProps;\n}\n\nconst IconInfo = ({\n children,\n icon = 'info-circle',\n iconColor = ThemeV2.palette.geekBlue6,\n backgroundColor = ThemeV2.palette.geekBlue1,\n paddingTopBottom = '8px',\n paddingLeftRight = '16px',\n iconSize = '24px',\n className: parentClassName,\n borderRadius = '2px',\n iconTextGap = '8px',\n endButton,\n}: IconInfoProps) => {\n return (\n \n {/* Note: Applying className to SVGIcon does not render the color */}\n \n \n \n {children}\n {endButton && }\n \n );\n};\n\nexport default IconInfo;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { BaseCSSProperties } from '@material-ui/core/styles/withStyles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\ninterface StyleProps {\n root: BaseCSSProperties;\n}\n\ntype PropsClasses = Record;\ninterface ClickableProps {\n classes?: PropsClasses;\n className?: string;\n}\n\nconst useStyles = makeStyles({\n root: {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: '0px',\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontSize: '14px',\n lineHeight: '22px',\n },\n});\n\nconst Clickable = (\n props: React.HTMLProps & ClickableProps,\n): React.ReactElement => {\n const { children, className: parentClassName, ...rest } = props;\n const classes = useStyles(props);\n const styles = `${classes.root} ${parentClassName}`;\n return (\n \n );\n};\n\nexport default Clickable;\n","import { useEffect, useCallback } from 'react';\n\ntype Event = (event: MouseEvent | TouchEvent) => void;\nconst useOnClickOutside = (ref: any, handler: Event) => {\n const listener = useCallback(\n (event: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n },\n [handler, ref],\n );\n useEffect(() => {\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, handler, listener]);\n};\n\nexport default useOnClickOutside;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport const addSourceToURL = (URL, SOURCE) => `${URL}?source=${SOURCE}`;\n","export const DEVICE = 'device';\n\nexport enum DEVICES {\n IPHONE = 'iphone',\n}\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Body from '../../atoms/Body';\n\nconst StyledSVGIcon = styled(SVGIcon)`\n margin-right: 8px;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentWrapper = styled.div`\n margin-left: 16px;\n`;\n\ninterface ToastContentProps {\n icon: string;\n message?: string;\n iconSize?: string;\n title?: string;\n}\n\nconst ToastContent = ({\n icon,\n message,\n iconSize,\n title,\n}: ToastContentProps) => {\n return (\n \n \n {title ? (\n \n {title}\n {message}\n \n ) : (\n {message}\n )}\n \n );\n};\n\nexport default ToastContent;\n","import React from 'react';\nimport { toast, ToastOptions } from 'react-toastify';\nimport SVGIcon from '../../atomic/atoms/SVGIcon';\n\nimport ToastContent from '../../atomic/molecules/ToastContent';\nimport { WELCOME_TO_BUILDER_TOAST } from '../../languages/en/flows/builder';\n\nexport const defaultToastOptions: ToastOptions = {\n position: toast.POSITION.BOTTOM_LEFT,\n};\n\nexport const showErrorMessage = (message: string) => {\n toast.error(\n ,\n defaultToastOptions,\n );\n};\n\nexport const showWarningMessage = (message: string) => {\n toast.warn(\n ,\n defaultToastOptions,\n );\n};\n\nexport const showInfoMessage = (message: string) => {\n toast.info(\n ,\n defaultToastOptions,\n );\n};\n\nexport const showSuccessMessage = (message: string) => {\n toast.success(\n ,\n defaultToastOptions,\n );\n};\n\nexport const showWelcomeToBuilderToast = () => {\n toast(\n ,\n {\n autoClose: 5000,\n hideProgressBar: true,\n style: { width: '410px', paddingTop: '14px' },\n position: toast.POSITION.BOTTOM_LEFT,\n closeButton: ,\n },\n );\n};\n\nexport const dismissAllToasts = () => {\n toast.dismiss();\n};\n","import { useQuery, useMutation, useQueryClient } from 'react-query';\nimport {\n GET_PROFILE_INFO,\n GET_CURRENT_PLAN,\n GET_REDEEM_INFO,\n QUICK_SETUP_GUIDE,\n UPDATE_PROFILE_INFO,\n UPDATE_FLOW_PERMISSIONS_AND_GIF_SETTINGS,\n USER_VERIFY_TOKEN,\n} from '../../constants/endpoints';\nimport { makeAPICall, makeAPICallWithDataReturn } from '../utils';\nimport { Assembly as AssemblyType } from '../../interfaces/assembly';\nimport { CurrentUser } from '../../interfaces/currentUser';\nimport { QuickSetupData } from '../../interfaces/user';\nimport { AssemblyPlanType } from '../../interfaces/UserProfile';\nimport { ResponseError } from '../../interfaces/ResponseError';\nimport { GifRatingsProps } from '../../atomic/atoms/Giphy/interface';\nimport { setAssemblyFlowPermissionValue } from './utils';\nimport { showErrorMessage, showSuccessMessage } from '../../Utils/toast';\nimport { FLOWS_PERMISSIONS_TEXTS } from '../../languages/en/settings/admin/flows';\nimport {\n AuthSuccessResponse,\n AxiosAuthError,\n} from '../../interfaces/Auth/ResponseTypes';\n\nexport interface GetProfileInfoResponse {\n member: CurrentUser;\n assembly: AssemblyType;\n}\n\nexport interface CurrentPlanResponse {\n name: AssemblyPlanType;\n features: {\n category: string;\n id: string;\n isPaymentRequired: boolean;\n status: string;\n value: number;\n }[];\n uniqueId?: string;\n}\n\ninterface RedeemInfoResponse {\n isRedeemable: boolean;\n}\n\ninterface QuickSetupGuideResponse {\n data: QuickSetupData;\n}\n\nexport interface UpdateProfileQuickSetupPayload {\n showQuickSetupPanel: boolean;\n}\n\nexport type UpdateFlowsPermissionsPayload = {\n creationPermission?: { value?: string };\n gifAccessibility?: { value: GifRatingsProps };\n criteriaAccessibilityForParticipation?: {\n everyone: Array;\n };\n stackAccessibility?: {\n GIVE_POINTS_STACK: Array;\n };\n};\n\nexport const useCurrentPlanFetchQuery = (makeRequest = true) => {\n return useQuery(\n GET_CURRENT_PLAN,\n () => makeAPICallWithDataReturn(GET_CURRENT_PLAN),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useProfileInfoFetchQuery = (makeRequest = true) => {\n return useQuery(\n GET_PROFILE_INFO,\n () => makeAPICallWithDataReturn(GET_PROFILE_INFO),\n {\n staleTime: 60 * 30 * 1000,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useUserVerifyTokenQuery = (token?: string, makeRequest = true) => {\n return useQuery(\n USER_VERIFY_TOKEN,\n () => makeAPICallWithDataReturn(USER_VERIFY_TOKEN, { token }),\n {\n staleTime: 60 * 30 * 1000,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useRedeemInfoFetchQuery = (makeRequest = true) => {\n return useQuery(\n GET_REDEEM_INFO,\n () => makeAPICallWithDataReturn(GET_REDEEM_INFO),\n {\n staleTime: 60 * 30 * 1000,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useGetQuickSetupGuideQuery = (employeeID = '') => {\n return useQuery(\n QUICK_SETUP_GUIDE,\n () => makeAPICallWithDataReturn(QUICK_SETUP_GUIDE),\n {\n staleTime: Infinity,\n select: (res: QuickSetupGuideResponse) => res.data,\n enabled: Boolean(employeeID),\n refetchOnMount: 'always',\n },\n );\n};\n\nexport const useProfileInfoQuickSetupMutate = (successCallback: () => void) => {\n return useMutation(\n (payload: UpdateProfileQuickSetupPayload) =>\n makeAPICall(UPDATE_PROFILE_INFO, payload),\n {\n onSuccess: successCallback,\n },\n );\n};\n\nexport const useUpdateFlowSettings = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload: UpdateFlowsPermissionsPayload) =>\n makeAPICall(UPDATE_FLOW_PERMISSIONS_AND_GIF_SETTINGS, payload),\n {\n onSuccess: (data, payload) => {\n showSuccessMessage(\n FLOWS_PERMISSIONS_TEXTS.PERMISSION_CHANGED_SUCCESSFULLY,\n );\n const cacheObject: GetProfileInfoResponse | undefined =\n queryClient.getQueryData(GET_PROFILE_INFO);\n if (!cacheObject) {\n return;\n }\n if (!cacheObject.assembly.flow) {\n return;\n }\n const updatedCacheObject = { ...cacheObject };\n if (!updatedCacheObject.assembly.flow) {\n return;\n }\n updatedCacheObject.assembly.flow.creation.value =\n setAssemblyFlowPermissionValue(\n updatedCacheObject.assembly.flow.creation.value,\n payload.creationPermission?.value,\n );\n updatedCacheObject.assembly.flow.participationCriteriaAccessibility.everyone.splice(\n 0,\n 1,\n setAssemblyFlowPermissionValue(\n updatedCacheObject.assembly.flow.participationCriteriaAccessibility\n .everyone[0],\n payload.criteriaAccessibilityForParticipation?.everyone[0],\n ),\n );\n updatedCacheObject.assembly.flow.contentStackAccessibility.GIVE_POINTS_STACK.splice(\n 0,\n 1,\n setAssemblyFlowPermissionValue(\n updatedCacheObject.assembly.flow.contentStackAccessibility\n .GIVE_POINTS_STACK[0],\n payload.stackAccessibility?.GIVE_POINTS_STACK[0],\n ),\n );\n updatedCacheObject.assembly.flow.gifAccessibility.value =\n setAssemblyFlowPermissionValue(\n updatedCacheObject.assembly.flow.gifAccessibility.value,\n payload.gifAccessibility?.value,\n ) as GifRatingsProps;\n queryClient.setQueryData(GET_PROFILE_INFO, updatedCacheObject);\n },\n onError: () => {\n showErrorMessage(FLOWS_PERMISSIONS_TEXTS.PERMISSION_CHANGE_ERROR);\n const cacheObject: GetProfileInfoResponse | undefined =\n queryClient.getQueryData(GET_PROFILE_INFO);\n queryClient.setQueryData(GET_PROFILE_INFO, cacheObject);\n },\n },\n );\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { getFirstLetterOfName } from './text';\nimport profilePlaceholder from '../img/profilePlaceholder.png';\nimport getter from './objectUtils/getter';\n\nconst useStyles = makeStyles({\n avatar: {\n margin: 10,\n },\n avatarColor: (props) => ({\n // margin: 10,\n color: props.color,\n backgroundColor: props.backgroundColor,\n fontWeight: '600',\n width: props.size ? props.size : 40,\n height: props.size ? props.size : 40,\n fontSize: props.fontSize,\n }),\n avatarImage: (props) => ({\n width: props.size ? props.size : 40,\n height: props.size ? props.size : 40,\n }),\n});\n\nconst UserNameAvatar = (props) => {\n const { user, size } = props;\n const firstLetter = user.isDeleted ? 'D' : getFirstLetterOfName(user);\n const colorProp = user.isDeleted\n ? { bg: '#FFF0A2', color: '#FFE145' }\n : getColor(user);\n let fontSize = 18;\n if (size === 30 || size === 32) {\n fontSize = 14;\n } else if (size === 88) {\n fontSize = 36;\n }\n const styleProps = {\n backgroundColor: colorProp.bg,\n color: colorProp.color,\n size,\n fontSize,\n };\n const classes = useStyles(styleProps);\n\n return {firstLetter};\n};\n\nexport const ProfilePic = (props) => {\n const { user, size } = props;\n const classes = useStyles({ size });\n\n if (user?.profile?.image?.original?.relativeUrl) {\n return (\n \n );\n }\n return ;\n};\n\nexport const getImageForCustomReward = (cultureReward) => {\n const relativeUrl = getter(\n ['image', 'original', 'relativeUrl'],\n cultureReward,\n );\n const image_url = getter(['image_url'], cultureReward);\n const imageUrl = getter(['imageUrl'], cultureReward);\n if (relativeUrl) {\n return relativeUrl;\n }\n if (image_url) {\n return image_url;\n }\n if (imageUrl) {\n return imageUrl;\n }\n return profilePlaceholder;\n};\n\nexport const getColor = (user) => {\n // let firstName = \"m\";\n // if (user && user.profile) {\n // firstName = user.profile.firstName.toLowerCase();\n // }\n // else if(user && user.firstName) {\n // firstName = user.firstName;\n // }\n let lastChar = 'p';\n if (user && user._id) {\n lastChar = user._id.substr(user._id.length - 1);\n }\n const charCode = lastChar.charCodeAt(0);\n let bg = '#531DAB';\n const color = '#FFFFFF';\n switch (charCode) {\n case 97:\n case 113:\n case 103:\n case 119:\n case 49:\n case 111:\n bg = '#C41D7F';\n break;\n case 98:\n case 114:\n case 104:\n case 120:\n case 50:\n case 57:\n bg = '#08979C';\n break;\n case 99:\n case 115:\n case 106:\n case 122:\n case 52:\n case 112:\n bg = '#7CB305';\n break;\n case 100:\n case 116:\n case 105:\n case 121:\n case 51:\n case 108:\n bg = '#D4B106';\n break;\n case 101:\n case 117:\n case 107:\n case 53:\n case 110:\n case 56:\n case 54:\n bg = '#D46B08';\n break;\n case 102:\n case 118:\n case 48:\n case 109:\n case 55:\n bg = '#D4380D';\n break;\n default:\n bg = '#096DD9';\n break;\n }\n return {\n bg,\n color,\n };\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport getSymbolFromCurrency from 'currency-symbol-map';\n\nconst countriesData = require('i18n-iso-countries');\ncountriesData.registerLocale(require('i18n-iso-countries/langs/en.json'));\n\nexport const GIFT_CARD_TYPES = {\n FIXED: 'FIXED_VALUE',\n VARIABLE: 'VARIABLE_VALUE',\n};\n\nexport const checkGiftCardItemType = (giftCard) => {\n const firstItem = giftCard.items[0];\n return firstItem.valueType;\n};\n\n// Current available currencies\n// \"USD\", \"EUR\", \"INR\"\n\nconst DONATION_DENOMINATIONS_US = [5, 10, 15, 20, 25, 50, 75, 100];\n\nconst GIFT_CARD_DENOMINATIONS_US = [5, 10, 25, 50, 100];\n\nconst GIFT_CARD_DENOMINATIONS_EUR = [5, 10, 25, 50, 100];\n\nconst GIFT_CARD_DENOMINATIONS_INR = [500, 1000, 2000];\n\nexport const getDenomsForGiftcards = (currencyCode, minVal, maxVal) => {\n switch (currencyCode) {\n case 'USD':\n case 'CAD':\n case 'AUD':\n return GIFT_CARD_DENOMINATIONS_US;\n case 'EUR':\n case 'GDP':\n case 'GBP':\n case 'SGD':\n case 'SEK':\n return GIFT_CARD_DENOMINATIONS_EUR;\n case 'INR':\n return GIFT_CARD_DENOMINATIONS_INR;\n default: {\n const denoms = [];\n let valueToAdd = 0;\n const incrementBy = Math.floor(maxVal / 4);\n [1, 2, 3, 4, 5].forEach((i) => {\n valueToAdd += incrementBy;\n denoms.push(valueToAdd);\n });\n return denoms;\n }\n }\n};\n\nexport const getDenomsForDonations = (currencyCode) => {\n switch (currencyCode) {\n case 'USD':\n return DONATION_DENOMINATIONS_US;\n default:\n return DONATION_DENOMINATIONS_US;\n }\n};\n\nexport const getDisplayAmount = (faceValue, currencyCode) => {\n let name;\n const countrySymbol = getSymbolFromCurrency(currencyCode);\n if (countrySymbol) {\n name = `${countrySymbol}${faceValue}`;\n } else {\n name = `${faceValue} ${currencyCode}`;\n }\n return name;\n};\n\nexport const getCountryName = (code) => {\n if (code === 'US') {\n return 'United States';\n }\n return countriesData.getName(code, 'en');\n};\n\nexport const getCountryCode = (countryName) => {\n if (countryName === 'United States') {\n return countriesData.getAlpha2Code('United States of America', 'en');\n }\n return countriesData.getAlpha2Code(countryName, 'en');\n};\n\nexport const sortByNumber = (array, fieldName) =>\n array.sort((a, b) => {\n if (a[fieldName] > b[fieldName]) {\n return 1;\n }\n if (a[fieldName] < b[fieldName]) {\n return -1;\n }\n return 0;\n });\n","import Bowser from 'bowser';\n\nconst browser = Bowser.getParser(window.navigator.userAgent);\n\nexport const openInNewTab = (url: string) => {\n const newWindow = window.open(url, '_blank', 'noopener,noreferrer');\n if (newWindow) newWindow.opener = null;\n};\n\nexport const inIframe = () => {\n try {\n return window.self !== window.top;\n } catch (e) {\n return true;\n }\n};\n\nexport const isWindows = () => {\n if (window.navigator.platform && window.navigator.platform.includes('Win')) {\n return true;\n }\n return false;\n};\n\nexport const isDesktop = browser.getPlatformType() === 'desktop';\n\nexport const isMobile = browser.getPlatformType() === 'mobile';\n\nexport const isTablet = browser.getPlatformType() === 'tablet';\n","import React from 'react';\nimport { alpha } from '@material-ui/core/styles/colorManipulator';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { IconButton } from '@material-ui/core';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: {\n '&:hover': {\n background: alpha(ThemeV2.palette.geekBlue5, 0.05),\n },\n },\n});\nexport interface IconButtonProps {\n children: React.ReactNode;\n className?: string;\n [x: string]: unknown;\n}\n\nconst SimpleIconButton = (props: IconButtonProps) => {\n const { className: parentClassName, children, ...rest } = props;\n const classes = useStyles(props);\n const styles = `${classes.root} ${parentClassName}`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default SimpleIconButton;\n","import { CurrentPlanResponse, GetProfileInfoResponse } from '.';\nimport { AvatarProps } from '../../atomic/atoms/Avatar/interfaces';\nimport { AddTrophiesInputProps } from '../../atomic/molecules/AddTrophiesInput';\nimport {\n AssemblyCurrency,\n AssemblyCurrencyType,\n PrivateMessageAndImpactLevelValues,\n} from '../../interfaces/assembly';\nimport { CurrentUser } from '../../interfaces/currentUser';\nimport { AllowanceType } from '../../interfaces/user';\nimport { isFeatureEnabled } from '../../Utils/admin/account';\nimport { checkAdmin, checkManager } from '../../Utils/admin';\nimport {\n getCurrencyMenuItemsFromPercentage,\n getMenuItems,\n} from '../../Utils/trophySelector';\nimport {\n isUserAdmin,\n isUserOwner,\n canCurrentUserGiveRecognition,\n} from '../../Utils/user';\nimport { GifRatingsProps } from '../../atomic/atoms/Giphy/interface';\nimport { ADMIN_LOWER } from '../../languages/en/singleWords';\nimport { DropdownColor } from '../../atomic/molecules/Dropdown_V2/interfaces';\n\nconst emptyFunction = () => {};\n\nexport const getCurrentUserAvatar = (\n profileData?: GetProfileInfoResponse,\n): AvatarProps => {\n if (profileData) {\n const { member } = profileData;\n const { profile, memberId } = member;\n const { firstName, lastName, image: img } = profile;\n const result: AvatarProps = {\n userId: memberId,\n img,\n name: `${firstName} ${lastName}`,\n };\n return result;\n }\n return {\n img: '',\n };\n};\n\nexport const getCanCurrentUserGiveRecognition = (\n profileData?: GetProfileInfoResponse,\n): boolean => {\n if (profileData) {\n const { member } = profileData;\n return canCurrentUserGiveRecognition(member);\n }\n return false;\n};\n\n// From GiveCarrots.js\nexport const isAssemblySettingEnabledForCurrentUser = (\n settingValue: PrivateMessageAndImpactLevelValues,\n currentUser: CurrentUser,\n) => {\n if (\n settingValue === PrivateMessageAndImpactLevelValues.EVERYONE ||\n checkAdmin(currentUser.role)\n ) {\n return true;\n }\n if (\n settingValue === PrivateMessageAndImpactLevelValues.MANAGER_ONLY &&\n checkManager(currentUser)\n ) {\n return true;\n }\n if (\n settingValue ===\n PrivateMessageAndImpactLevelValues.MANAGER_AND_CUSTOM_ALLOWANCES\n ) {\n if (checkManager(currentUser)) {\n return true;\n }\n const allowanceType = currentUser.allowance.type;\n if (allowanceType === AllowanceType.CUSTOM) {\n return true;\n }\n return false;\n }\n if (\n settingValue === PrivateMessageAndImpactLevelValues.ADMINS_ONLY &&\n checkAdmin(currentUser.role)\n ) {\n return true;\n }\n return false;\n};\n\nexport const getCanUserPostPrivately = (\n profileData?: GetProfileInfoResponse,\n): boolean => {\n if (profileData) {\n const { assembly, member } = profileData;\n const { settings } = assembly;\n const { privateMessage } = settings;\n const { enabled, value } = privateMessage;\n const canPostPrivately = enabled\n ? isAssemblySettingEnabledForCurrentUser(value, member)\n : enabled;\n return canPostPrivately;\n }\n return true;\n};\n\n// Sending number only if its enabled\nexport const getMinimumMessageCharacters = (\n profileData?: GetProfileInfoResponse,\n): number | undefined => {\n if (profileData) {\n const { assembly } = profileData;\n const { settings } = assembly;\n const { minMessageChar } = settings;\n const { enabled, value } = minMessageChar;\n return enabled ? value : undefined;\n }\n return undefined;\n};\n\nexport const getGifRatings = (\n profileData?: GetProfileInfoResponse,\n): GifRatingsProps | undefined => {\n if (profileData) {\n const { assembly } = profileData;\n const { flow } = assembly;\n return flow?.gifAccessibility.enabled\n ? flow.gifAccessibility.value\n : undefined;\n }\n return undefined;\n};\n\nexport const getCanCheckForBadWords = (\n profileData?: GetProfileInfoResponse,\n): boolean => {\n if (profileData) {\n const { assembly } = profileData;\n const { settings } = assembly;\n const { blockWordsMessage } = settings;\n const { enabled } = blockWordsMessage;\n return enabled;\n }\n return false;\n};\n\nexport const getCanDeletePosts = (\n profileData?: GetProfileInfoResponse,\n): boolean => {\n if (profileData) {\n return (\n profileData.assembly.settings.canDeletePosts.enabled &&\n isUserAdmin(profileData.member)\n );\n }\n return false;\n};\n\nexport const defaultCurrency: AssemblyCurrency = {\n name: 'Trophy',\n pluralName: 'Trophies',\n type: AssemblyCurrencyType.REGULAR,\n value: '1F3C6',\n};\n\nexport const getAssemblyCurrency = (profileData?: GetProfileInfoResponse) => {\n if (profileData) {\n return profileData.assembly.currency;\n }\n return defaultCurrency;\n};\n\nexport const getCanShowAddTrophies = (profileData?: GetProfileInfoResponse) => {\n if (profileData) {\n return !(\n profileData.member.allowance.type === AllowanceType.NO_ALLOWANCE &&\n profileData.member.allowance.points === 0\n );\n }\n return false;\n};\n\nexport const getIsCurrentUserAdmin = (profileData?: GetProfileInfoResponse) => {\n if (!profileData) {\n return false;\n }\n return isUserAdmin(profileData.member);\n};\n\nexport const getIsCurrentUserOwner = (profileData?: GetProfileInfoResponse) => {\n if (!profileData) {\n return false;\n }\n return isUserOwner(profileData.member);\n};\n\nexport const isUserCurrentUser = (\n user: { memberID: string },\n profileData?: GetProfileInfoResponse,\n) => {\n if (!profileData) {\n return false;\n }\n return user.memberID === profileData?.member.memberId;\n};\n\nexport const getEmployerName = (profileData?: GetProfileInfoResponse) => {\n if (!profileData) {\n return ADMIN_LOWER;\n }\n return profileData.assembly.name;\n};\n\nexport const getIsCoreValuesEnabled = (\n profileData?: GetProfileInfoResponse,\n) => {\n if (profileData) {\n const { assembly } = profileData;\n const { settings } = assembly;\n const { coreValues } = settings;\n const { enabled, value } = coreValues;\n return value.length === 0 ? false : enabled;\n }\n return undefined;\n};\n\nexport const isFeatureEnabledInCurrentPlan = (\n feature: string,\n currentPlan?: CurrentPlanResponse,\n) => {\n if (!currentPlan) {\n return false;\n }\n return isFeatureEnabled(currentPlan.features, feature);\n};\n\nexport const canGiveCustomAmountOfPoints = (\n profileData?: GetProfileInfoResponse,\n): boolean => {\n if (!profileData) {\n return false;\n }\n\n const { member, assembly } = profileData;\n const { customType } = assembly.settings.postImpactLevel.value;\n return isAssemblySettingEnabledForCurrentUser(customType, member);\n};\n\nexport const getTrophies = (\n trophiesInputValue: number,\n splitBy: number,\n onTrophiesInputChange: (value: number) => void,\n profileData?: GetProfileInfoResponse,\n buttonColor?: DropdownColor,\n) => {\n const assemblyCurrency = getAssemblyCurrency(profileData);\n if (profileData) {\n const { member, assembly } = profileData;\n const { allowance, pointsLeftThisCycle } = member;\n const { points } = allowance;\n const { levels } = assembly.settings.postImpactLevel.value;\n const canAllowCustomAmount = canGiveCustomAmountOfPoints(profileData);\n const result: AddTrophiesInputProps = {\n onChange: onTrophiesInputChange,\n onItemClick: emptyFunction,\n buttonText: `Add ${assemblyCurrency.pluralName}`,\n assemblyCurrency,\n value: trophiesInputValue,\n maxValue: pointsLeftThisCycle,\n splitBy,\n menuItems: getCurrencyMenuItemsFromPercentage(\n assemblyCurrency,\n levels,\n points,\n ),\n canAllowCustomAmount,\n buttonColor,\n };\n return result;\n }\n const result: AddTrophiesInputProps = {\n onChange: emptyFunction,\n onItemClick: emptyFunction,\n buttonText: `Add Trophies`,\n assemblyCurrency,\n value: 0,\n maxValue: 39,\n splitBy,\n menuItems: getMenuItems(assemblyCurrency),\n canAllowCustomAmount: false,\n buttonColor,\n };\n return result;\n};\n\nexport const setAssemblyFlowPermissionValue = (\n cacheValue: string,\n payloadValue: string | undefined,\n) => {\n if (payloadValue) {\n if (cacheValue !== payloadValue) {\n return payloadValue;\n }\n }\n return cacheValue;\n};\n","import { MenuItemProps } from '../atomic/molecules/Dropdown_V2/interfaces';\nimport { AssemblyCurrency, CurrencyLevel } from '../interfaces/assembly';\n\nexport const getMenuItems = (\n assemblyCurrency: AssemblyCurrency,\n): MenuItemProps[] => [\n {\n id: 'add-trophies-menu-items',\n items: [\n {\n value: `No ${assemblyCurrency.pluralName}`,\n id: -2,\n emoji: '🚫',\n },\n {\n value: `Add 10 ${assemblyCurrency.pluralName}`,\n id: 10,\n emoji: '🙂',\n },\n {\n value: `Add 20 ${assemblyCurrency.pluralName}`,\n id: 20,\n emoji: '😀',\n },\n {\n value: `Add 30 ${assemblyCurrency.pluralName}`,\n id: 30,\n emoji: '👏',\n },\n {\n value: `Add 40 ${assemblyCurrency.pluralName}`,\n id: 40,\n emoji: '💪',\n },\n {\n value: `Add 50 ${assemblyCurrency.pluralName}`,\n id: 50,\n emoji: '🚀',\n },\n {\n value: '+ Custom amount',\n id: -1,\n },\n ],\n },\n];\n\nconst currencyLevelEmojiMap: { [Key: string]: string } = {\n [CurrencyLevel.SMALL]: '🙂',\n [CurrencyLevel.MEDIUM]: '😀',\n [CurrencyLevel.LARGE]: '👏',\n [CurrencyLevel.HUGE]: '💪',\n [CurrencyLevel.ABOVE]: '🚀',\n};\n\nexport const getCurrencyMenuItemsFromPercentage = (\n assemblyCurrency: AssemblyCurrency,\n levels: { percentage: number; name: CurrencyLevel }[],\n points: number,\n): MenuItemProps[] => {\n const result: MenuItemProps[] = [\n {\n id: 'add-trophies-menu-items',\n items: [\n {\n value: `No ${assemblyCurrency.pluralName}`,\n id: -2,\n emoji: '🚫',\n },\n ],\n },\n ];\n levels.forEach((level) => {\n const pointValue = Math.floor((points * level.percentage) / 100);\n const emoji = currencyLevelEmojiMap[level.name];\n const name = `Add ${pointValue} ${assemblyCurrency.pluralName}`;\n result[0].items.push({\n value: name,\n id: pointValue,\n emoji,\n });\n });\n result[0].items.push({\n value: '+ Custom amount',\n id: -1,\n });\n return result;\n};\n","const DEFAULT_CURRENCY = {\n CURRENCY_NAME: 'trophy',\n CURRENCY_NAME_PLURAL: 'trophies',\n};\n\nexport default DEFAULT_CURRENCY;\n","export enum ButtonSize {\n Large = 'large',\n Normal = 'normal',\n Small = 'small',\n}\nexport type IconButtonColors =\n | 'primary'\n | 'secondary'\n | 'text'\n | 'textWithBackground'\n | 'iconWithoutBackground';\nexport interface IconButtonProps {\n disabled?: boolean;\n size?: ButtonSize;\n children?: React.ReactNode;\n icon?: string;\n onClick?: (event: any) => void;\n rounded?: boolean;\n title?: string;\n className?: string;\n isSelected?: boolean;\n iconBgColor?: string;\n iconColor?: string;\n dataTestId?: string;\n buttonRef?: any;\n color?: IconButtonColors;\n rotate?: number;\n}\n\nexport interface StylesComponentsProps {\n size?: ButtonSize;\n rounded?: boolean;\n isSelected?: boolean;\n iconBgColor?: string;\n color: IconButtonColors;\n icon?: string;\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport moment from 'moment';\nimport _ from 'lodash';\n\nimport { serializeUser } from '../../Utils/user';\n\nfunction deserializeDate(date) {\n return date ? moment(date) : null;\n}\n\nconst checkAndReplaceDeletedUserInArray = (userArray) => {\n const userArr = _.isNil(userArray) ? [] : userArray;\n return userArr.map((u) => {\n if (!u) {\n return { isDeleted: true };\n }\n return u;\n });\n};\n\nfunction deserializeComment(comment) {\n let { from, taggedUsers } = comment;\n if (!from) {\n from = { isDeleted: true };\n }\n if (!from) {\n from = { isDeleted: true };\n }\n taggedUsers = checkAndReplaceDeletedUserInArray(taggedUsers);\n return {\n ...comment,\n from,\n taggedUsers,\n };\n}\n\nfunction deserializePost(post) {\n let { to, from, taggedUsers, likes } = post;\n if (!from) {\n from = { isDeleted: true };\n } else {\n from = serializeUser(from);\n }\n const toUsers = checkAndReplaceDeletedUserInArray(to.users).map((user) =>\n serializeUser(user),\n );\n taggedUsers = checkAndReplaceDeletedUserInArray(taggedUsers).map((user) =>\n serializeUser(user),\n );\n likes = checkAndReplaceDeletedUserInArray(likes).map((like) =>\n serializeUser(like),\n );\n return {\n ...post,\n to: { ...to, users: toUsers },\n from,\n taggedUsers,\n likes,\n createdAt: deserializeDate(post.createdAt),\n updatedAt: deserializeDate(post.updatedAt),\n };\n}\n\nfunction deserializeNotification(notification) {\n let { from, user } = notification;\n const serializedNotification = { ...notification };\n if (!from) {\n from = { isDeleted: true };\n serializedNotification.from = from;\n }\n if (!user) {\n user = { isDeleted: true };\n serializedNotification.user = user;\n }\n\n if (\n notification.type === 'post' ||\n notification.type === 'tagged_in_post' ||\n notification.type === 'comment' ||\n notification.type === 'tagged_in_comment'\n ) {\n if (notification.post) {\n serializedNotification.post = deserializePost(notification.post);\n }\n\n if (\n notification.type === 'comment' ||\n notification.type === 'tagged_in_comment'\n ) {\n if (notification.comment) {\n serializedNotification.comment = deserializeComment(\n notification.comment,\n );\n }\n }\n }\n return serializedNotification;\n}\n\nexport {\n deserializeDate,\n deserializePost,\n deserializeComment,\n deserializeNotification,\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { createSelector } from 'reselect';\nimport _ from 'lodash';\nimport { SWITCH_TIER, ADD_PAYMENT, GET_CURRENT_PLAN } from '.';\nimport { PLAN_IDS } from '../../../../config';\nimport {\n getFeatureDeatilsForPlan,\n FEATURE_LIST,\n FEATURE_STATUS,\n} from '../../../../Utils/admin/account';\n\nexport const serializePlan = (plan) => {\n const currency = plan.features.find(\n (feature) => feature.category === 'CURRENCY',\n );\n const uniqueId = plan.unique_id;\n return { ...plan, currency, uniqueId };\n};\nexport const getActivePlanRequestLoadingStatus = (state) =>\n _.get(\n state,\n ['v2AdminAccount', 'mutations', GET_CURRENT_PLAN, 'pending'],\n 0,\n ) > 0;\n\nconst availablePlansSelector = (state) =>\n _.get(state, ['v2AdminAccount', 'data', 'availablePlans'], []);\n\nexport const getCurentPlanSelector = (state) =>\n _.get(state, ['v2AdminAccount', 'data', 'activePlan'], null);\n\nexport const getCurentPlan = createSelector(getCurentPlanSelector, (plan) => {\n return plan ? serializePlan(plan) : plan;\n});\n\nexport const getAccountDetails = (state) =>\n _.get(state, ['v2AdminAccount', 'data', 'accountDetails'], null);\n\nexport const hasActiveCreditCard = createSelector(\n getAccountDetails,\n (accountDetails) => {\n const creditCards = _.get(accountDetails, ['creditCards'], []);\n const creditCard = creditCards.find((card) => card.isActive);\n if (creditCard) {\n return true;\n }\n return false;\n },\n);\n\nexport const checkPaidAllowanceAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.PAID_ALLOWANCE,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkInviteAndApprovalAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ALLOW_TO_CHANGE_USER_INVITE_AND_REQUEST_PERMISSION,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkChangeCustomLogoAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ALLOW_TO_CHANGE_ASSEMBLY_LOGO,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkChangeCustomCurrencyAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ALLOW_TO_CHANGE_ASSEMBLY_CURRENCY,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkCustomAllowanceAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.CUSTOM_ALLOWANCE,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkBirthdayBotAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.BIRTHDAY_BOT,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkAnniversaryBotAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ANNIVERSARY_BOT,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkSwitchPlanAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const switchPlanDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.SWITCH_PLAN,\n );\n if (switchPlanDetails) {\n return switchPlanDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkCustomCurrencyAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.CUSTOM_CURRENCY,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkPrivateMessageAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.PRIVATE_MESSAGE,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkIMUserGroupAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ACCOUNT_MANAGEMENT_SELECTION,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkFeedSearchAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.FEED_SEARCH,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkAdminAnalyticsAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ADMIN_ANALYTICS,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return true;\n },\n);\n\nexport const checkADPIdentityManagerAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ALLOW_ADP_IDENTITY_MANAGER,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const checkMergeHRISAccess = createSelector(\n getCurentPlan,\n (currentPlan) => {\n const featureDetails = getFeatureDeatilsForPlan(\n currentPlan,\n FEATURE_LIST.ALLOW_MERGE_IDENTITY_MANAGER,\n );\n if (featureDetails) {\n return featureDetails.status === FEATURE_STATUS.ENABLED;\n }\n return false;\n },\n);\n\nexport const getAllPlans = createSelector(availablePlansSelector, (plans) => {\n if (plans.length === 0) {\n return null;\n }\n const currentPlans = Object.keys(PLAN_IDS);\n const plansDict = {};\n currentPlans.forEach((planId) => {\n plansDict[planId] = serializePlan(\n plans.find((plan) => plan.unique_id === PLAN_IDS[planId]),\n );\n });\n return plansDict;\n});\n\nexport const getSwitchAccountRequestLoadingStatus = (state) =>\n state.v2AdminAccount.mutations[SWITCH_TIER].pending > 0;\n\nexport const getAddPaymentRequestLoadingStatus = (state) =>\n state.v2AdminAccount.mutations[ADD_PAYMENT].pending > 0;\n","import React, { useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { alpha } from '@material-ui/core/styles/colorManipulator';\nimport Fade from '@material-ui/core/Fade';\nimport { BaseCSSProperties } from '@material-ui/styles';\nimport Body from '../../atoms/Body';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport interface VariantProps {\n background?: string;\n border?: string;\n color?: string;\n focusColor?: string;\n iconColor?: string;\n padding?: string;\n}\n\nconst variantMap: { [Key: string]: VariantProps } = {\n info: {\n background: ThemeV2.palette.geekBlue1,\n border: ThemeV2.palette.geekBlue1,\n color: ThemeV2.palette.gray9,\n focusColor: alpha(ThemeV2.palette.gray9, 0.1),\n iconColor: ThemeV2.palette.geekBlue6,\n },\n error: {\n background: ThemeV2.palette.red1,\n border: ThemeV2.palette.dustRed6,\n color: ThemeV2.palette.dustRed6,\n focusColor: alpha(ThemeV2.palette.dustRed6, 0.1),\n iconColor: ThemeV2.palette.dustRed6,\n },\n};\n\nconst useStyles = makeStyles({\n root: (props: { alertType: string; customVariant?: VariantProps }) => ({\n display: 'flex',\n padding:\n props.alertType === 'custom' && props.customVariant?.padding\n ? props.customVariant?.padding\n : '8px 16px',\n width: '100%',\n\n background:\n props.alertType === 'custom' && props.customVariant\n ? `${props.customVariant.background}`\n : variantMap[props.alertType].background,\n border:\n props.alertType === 'custom' && props.customVariant\n ? `${props.customVariant.border}`\n : variantMap[props.alertType].border,\n borderRadius: '4px',\n }),\n iconWrapper: {\n display: 'flex',\n alignItems: 'flexStart',\n marginRight: '12px',\n marginTop: '4px',\n },\n alertText: (props: { alertType: string; customVariant?: VariantProps }) => ({\n color:\n props.alertType === 'custom' && props.customVariant\n ? `${props.customVariant.color}`\n : variantMap[props.alertType].color,\n marginRight: '8px',\n }),\n closeButtonWrapper: (props: {\n alertType: string;\n customVariant?: VariantProps;\n }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n width: '22px',\n borderRadius: '20px',\n cursor: 'pointer',\n '&:focus': {\n outline: 'none',\n background:\n props.alertType === 'custom' && props.customVariant\n ? `${props.customVariant.focusColor}`\n : variantMap[props.alertType].focusColor,\n },\n }),\n});\n\ninterface StyleProps {\n root: BaseCSSProperties;\n iconWrapper: BaseCSSProperties;\n alertText: BaseCSSProperties;\n closeButtonWrapper: BaseCSSProperties;\n}\n\ntype PropsClasses = Partial>;\n\ninterface InfoAlertProps {\n id: number | string;\n className?: string;\n classes?: PropsClasses;\n text: string | React.ReactNode;\n icon?: string;\n alertType: string;\n isHidden?: boolean;\n isDismissible?: {\n closeIconColor?: string;\n onCloseClick(id: number | string): void;\n onCloseKeyPress(id: number | string): void;\n };\n customVariant?: VariantProps;\n bodyVariant?: string;\n}\n\nconst InfoAlert = (props: InfoAlertProps) => {\n const classes = useStyles(props);\n const {\n id,\n text,\n className,\n icon,\n alertType,\n isHidden,\n isDismissible,\n customVariant,\n bodyVariant,\n } = props;\n const style = `${className} ${classes.root}`;\n const { gray9 } = ThemeV2.palette;\n\n const closeClickCallback = useCallback(() => {\n if (isDismissible) {\n const { onCloseClick } = isDismissible;\n onCloseClick(id);\n }\n }, [id, isDismissible]);\n\n const closeKeyPressCallback = useCallback(() => {\n if (isDismissible) {\n const { onCloseKeyPress } = isDismissible;\n onCloseKeyPress(id);\n }\n }, [id, isDismissible]);\n\n const handleCollapseAlertKeyPress = (event: { key: string }) => {\n if (event.key === 'Enter') {\n closeKeyPressCallback();\n }\n };\n\n return (\n \n
\n {icon && (\n
\n \n
\n )}\n \n {text}\n \n {isDismissible && (\n \n \n
\n )}\n
\n \n );\n};\n\nexport default InfoAlert;\n","import { withStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\n\nexport default withStyles(() => ({\n root: {\n minWidth: 750,\n height: '100%',\n },\n}))(Table);\n","import styled, { css } from 'styled-components';\nimport { Link as RouterLink } from 'react-router-dom';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst SharedStyle = css`\n font-family: ${ThemeV2.typography.adminFontFamily};\n font-style: normal;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n font-size: 14px;\n line-height: 22px;\n color: ${ThemeV2.palette.geekBlue6};\n transition: 0.2s ease color;\n\n &:hover {\n color: ${ThemeV2.palette.geekBlue5};\n }\n &:focus {\n color: ${ThemeV2.palette.geekBlue7};\n }\n &:active {\n color: ${ThemeV2.palette.geekBlue7};\n }\n`;\n\nexport const StyledRouterLink = styled(RouterLink)<{\n color?: string;\n underline?: boolean;\n}>`\n ${SharedStyle}\n color: ${({ color }) => color};\n ${({ underline }) => underline && 'text-decoration: underline;'}\n &:hover,\n &:focus,\n &:active {\n color: ${({ color }) => color};\n }\n`;\n\nexport const StyledAnchor = styled.a<{ color?: string; underline?: boolean }>`\n ${SharedStyle}\n color: ${({ color }) => color};\n ${({ underline }) => underline && 'text-decoration: underline;'}\n &:hover,\n &:focus,\n &:active {\n color: ${({ color }) => color};\n }\n`;\n","import React from 'react';\n\nimport { StyledRouterLink, StyledAnchor } from './styles';\n\nexport interface LinkProps {\n children: string | React.ReactNode;\n to: string;\n className?: string;\n isAnchor?: boolean;\n openInNewTab?: boolean;\n onClick?: () => void;\n color?: string;\n underline?: boolean;\n}\n\nconst Link = (props: LinkProps) => {\n const {\n children = null,\n className = '',\n to = '',\n isAnchor,\n openInNewTab,\n onClick,\n color = undefined,\n underline,\n } = props;\n if (isAnchor) {\n return (\n \n {children}\n \n );\n }\n return (\n \n {children}\n \n );\n};\n\nconst MemoizedLink = React.memo(Link);\nMemoizedLink.displayName = 'Link';\nexport default MemoizedLink;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\n\nimport history from '../history';\nimport { API_URL_WITH_V2 } from '../config';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../containers/helpers/ErrorHelper';\nimport { AuthHeaders } from './shared/HeaderToken';\nimport { meActions } from './Me';\nimport Logger from '../Utils/Logger';\nimport { uiActions, EMPLOYEES_SETUP_STATUSES } from './UI-Reducers/UIReducers';\nimport { serializeUser } from '../Utils/user';\nimport * as Analytics from '../Utils/analytics';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n HOME_INFO: `${API_URL_WITH_V2}/user/home/info/`,\n HOME_FEED: `${API_URL_WITH_V2}/user/feed`,\n PROFILE_INFO: `${API_URL_WITH_V2}/user/user_profile/info/`,\n REDEEM_INFO: `${API_URL_WITH_V2}/rewards/checkredeem`,\n};\n\nexport const homeProcessError = (error = {}, dispatch, homeActions) => {\n Logger('processError');\n Logger(error.response);\n Logger(error);\n const statusCode = error.response ? error.response.status : 0;\n const errorMessage = {};\n switch (statusCode) {\n case 400: // bad request\n dispatch(homeActions.requestFailed(ErrorMessages.serverError));\n break;\n case 401: // Not authorised\n history.push('/signout');\n // (Log out user)\n break;\n case 403: // Forbidden\n history.push('/404');\n // redirect to home\n break;\n case 404: // Page not found\n dispatch(homeActions.requestFailed(ErrorMessages.serverError));\n break;\n // mostly my error\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n dispatch(homeActions.requestFailed(msg));\n errorMessage.code = responseData.code;\n errorMessage.message = msg;\n }\n break;\n default:\n dispatch(homeActions.requestFailed(ErrorMessages.networkError));\n break;\n }\n return errorMessage;\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const GET_HOME_INFO_SUCCESS = 'get_home_info_success';\nexport const USERPASSWORDSET = 'user_password_set';\nexport const GET_COWORKER_INFO_SUCCESS = 'get_coworker_info_success';\nexport const REQUEST_FAILED = 'home_request_failed';\nexport const IMPORT_FROM_XLS_SUCCESS = 'import_from_xlx_success';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst getHomeInfoSuccess = (props) => ({\n type: GET_HOME_INFO_SUCCESS,\n coworkers: props.coworkers,\n});\n\nconst getCoWorkerInfoSuccess = (coworker) => ({\n type: GET_COWORKER_INFO_SUCCESS,\n coworker,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const actions = {\n getHomeInfoSuccess,\n getCoWorkerInfoSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\nexport const getHomeDetailsAction = () => {\n // IN this API RESPONSE I need\n // My available allowance to give\n // My balance carrots to redeem\n // My co-workers info (To show in autofill)\n // {name, _id, image}\n Logger('getHomeDetailsAction', false);\n return async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.HOME_INFO, AuthHeaders());\n const result = res.data;\n Logger('getHomeDetailsAction', true);\n Logger(result, true);\n if (result.success) {\n const { remainingPoint, pointsEarned } = result.data;\n dispatch(meActions.gotMyPointsToGive(remainingPoint));\n dispatch(meActions.gotMyPointsToRedeem(pointsEarned));\n Analytics.registerUserProps({\n 'Allowance Points Available': remainingPoint,\n });\n Analytics.registerSuperProps({\n 'Allowance Points Available': remainingPoint,\n });\n dispatch(\n actions.getHomeInfoSuccess({ coworkers: result.data.employees }),\n );\n if (result.data.employees && result.data.employees.length > 1) {\n dispatch(\n uiActions.updateEmployeesSetupStatus(\n EMPLOYEES_SETUP_STATUSES.HAS_EMPLOYEES,\n ),\n );\n } else {\n dispatch(\n uiActions.updateEmployeesSetupStatus(\n EMPLOYEES_SETUP_STATUSES.NO_EMPLOYEES,\n ),\n );\n }\n } else {\n // @vijay\n // dispatch the failure with msg as server error\n // Check below - we will handle all this site wide.\n }\n } catch (error) {\n homeProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const getCoWorkerInfoAction = (props) => {\n // IN this API RESPONSE I need\n // User Info\n // Carrots Given\n // Carrots received\n // birthDate, hiredDate, department and image\n Logger('getCoWorkerInfoAction', false);\n return async (dispatch) => {\n try {\n const res = await axios.get(\n `${apiEndpoints.PROFILE_INFO}${props._id}`,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(\n actions.getCoWorkerInfoSuccess({ ...result.data, _id: props._id }),\n );\n // MUTHU change needed\n } else {\n // @vijay\n // dispatch the failure with msg as server error\n // Check below - we will handle all this site wide.\n }\n } catch (error) {\n homeProcessError(error, dispatch, actions);\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case GET_HOME_INFO_SUCCESS: {\n const coworkers = action.coworkers.map((worker) => serializeUser(worker));\n return { ...state, coworkers, error: null };\n }\n case GET_COWORKER_INFO_SUCCESS:\n return {\n ...state,\n error: null,\n coworkers: state.coworkers\n ? state.coworkers.map((coworker) => {\n if (action.coworker._id === coworker._id) {\n return serializeUser({\n ...coworker,\n profile: { ...coworker.profile, ...action.coworker },\n });\n }\n return coworker;\n })\n : [action.coworker],\n };\n case REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport _ from 'lodash';\nimport { API_URL_WITH_V2, SOURCE } from '../../../config';\nimport { AuthHeaders } from '../../shared/HeaderToken';\nimport { adminProcessError } from '../../Admin';\nimport Logger from '../../../Utils/Logger';\nimport {\n showSuccessMessage,\n showInfoMessage,\n showErrorMessage,\n} from '../../../Utils/flashHandler';\nimport { addSourceToURL } from '../../../Utils/api';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n USERS: `${API_URL_WITH_V2}/employer/employee/user`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const GET_USERS_SUCCESS = 'get_users_success';\nexport const UPDATE_EMPLOYEE_SUCCESS = 'update_employee_success';\nexport const UPDATE_EMPLOYEES_SUCCESS = 'update_employees_success';\nexport const DELETE_EMPLOYEES_SUCCESS = 'delete_employees_success';\nexport const USER_MANAGE_REQUEST_FAILED = 'user_manage_request_failed';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst getUsersSuccess = (users) => ({\n type: GET_USERS_SUCCESS,\n users,\n});\nconst updateEmployeeSuccess = (user) => ({\n type: UPDATE_EMPLOYEE_SUCCESS,\n user,\n});\nconst updateEmployeesSuccess = (users) => ({\n type: UPDATE_EMPLOYEES_SUCCESS,\n users,\n});\nconst deleteEmployeesSuccess = (userId) => ({\n type: DELETE_EMPLOYEES_SUCCESS,\n userId,\n});\nconst requestFailed = (errorMessage) => ({\n type: USER_MANAGE_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const actions = {\n getUsersSuccess,\n updateEmployeeSuccess,\n updateEmployeesSuccess,\n deleteEmployeesSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getUsersAction = (cb) => {\n Logger('getUsersAction', false);\n return async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.USERS, AuthHeaders());\n const result = res.data;\n Logger(result);\n if (result.success) {\n if (cb) {\n cb();\n }\n dispatch(actions.getUsersSuccess(result.data));\n } else {\n if (cb) {\n cb();\n }\n // dispatch(actions.emailExists());\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const editEmployeeAction = (props) => {\n Logger(props);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Updating user(s)...'));\n const res = await axios.put(\n `${apiEndpoints.USERS}/${props._id}`,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('User(s) has been updated'));\n dispatch(actions.updateEmployeeSuccess(result.data));\n } else {\n dispatch(showErrorMessage('Failed to update user, try again'));\n }\n } catch (error) {\n dispatch(showErrorMessage('Failed to update user, try again'));\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const editBulkEmployeesAction = (props) => {\n Logger(props);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Updating users...'));\n const res = await axios.post(\n `${apiEndpoints.USERS}/bulk/update`,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('Users has been updated'));\n dispatch(\n actions.updateEmployeesSuccess(_.get(result, ['data', 'users'], [])),\n );\n } else {\n dispatch(showErrorMessage('Failed to bulk update users, try again'));\n }\n } catch (error) {\n dispatch(showErrorMessage('Failed to bulk update users, try again'));\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const deleteEmployeesAction = (props) => {\n Logger(props);\n const userIds = props;\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Deleting user(s)...'));\n const res = await axios.request({\n method: 'delete',\n url: addSourceToURL(`${apiEndpoints.USERS}`, SOURCE),\n data: { userIds },\n headers: {\n 'Content-Type': 'application/json',\n XClient:\n window.location.hostname +\n (window.location.port ? `:${window.location.port}` : ''),\n },\n });\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('User(s) has been deleted'));\n dispatch(getUsersAction());\n // dispatch(actions.updateEmployeeSuccess(result.data));\n } else {\n dispatch(showErrorMessage('Failed to delete user, try again'));\n }\n } catch (error) {\n dispatch(showErrorMessage('Failed to delete user, try again'));\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case GET_USERS_SUCCESS:\n return { ...state, users: action.users };\n case UPDATE_EMPLOYEE_SUCCESS: {\n const users = state.users.map((user) => {\n if (user._id === action.user._id) {\n return { ...user, ...action.user };\n }\n return user;\n });\n return { ...state, users };\n }\n case UPDATE_EMPLOYEES_SUCCESS: {\n const udpatedUsers = action.users;\n const users = state.users.map((user) => {\n const updatedUser = udpatedUsers.find((u) => user._id === u._id);\n if (updatedUser) {\n return { ...user, ...updatedUser };\n }\n return user;\n });\n return { ...state, users };\n }\n case USER_MANAGE_REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","import React from 'react';\nimport Radio, { RadioProps } from '@material-ui/core/Radio';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: {\n color: ThemeV2.palette.gray5,\n '&:hover': {\n color: ThemeV2.palette.geekBlue6,\n backgroundColor: 'transparent',\n },\n '&$disabled': {\n color: `${ThemeV2.palette.gray5} !important `,\n },\n },\n checked: {\n color: ThemeV2.palette.geekBlue6,\n '&:hover': {\n backgroundColor: 'transparent',\n '@media (hover: none)': {\n backgroundColor: 'transparent',\n },\n },\n },\n disabled: {\n color: `${ThemeV2.palette.gray5} !important `,\n },\n});\n\nconst CustomRadio = (props: RadioProps) => {\n const classes = useStyles();\n\n return (\n \n );\n};\n\nexport default CustomRadio;\n","import styled from 'styled-components';\n\nimport { Flex } from '../../../Utils/styles/display';\nimport IconInfo from '../IconInfo';\n\nexport const StyledIconInfo = styled(IconInfo)`\n margin-top: 8px;\n`;\n\nexport const StyledFlexContainer = styled(Flex)`\n &:last-of-type > .MuiFormControlLabel-root {\n padding-bottom: 0px;\n }\n`;\n\nexport const ExtraContent = styled.div`\n margin-top: -8px;\n margin-bottom: 16px;\n margin-left: 24px;\n`;\n","import React from 'react';\n\nconst useHover = () => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handlePopoverOpen = (\n event: React.MouseEvent,\n ) => {\n setAnchorEl(event.currentTarget);\n };\n const handlePopoverClose = () => {\n setAnchorEl(null);\n };\n\n const isHovering = Boolean(anchorEl);\n return {\n model: {\n isHovering,\n anchorEl,\n },\n operations: {\n handlePopoverOpen,\n handlePopoverClose,\n },\n };\n};\n\nexport default useHover;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Body from '../../atoms/Body';\nimport ToolTip from '../../atoms/ToolTip';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Clickable from '../../atoms/Clickable';\n\nimport useHover from '../../../hooks/useHover';\n\nconst useStyles = makeStyles({\n root: {\n display: 'inline',\n margin: '0px 10px',\n },\n buttonContent: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\ninterface UpgradeInfoComponentProps {\n upgradeText: string;\n onUpgradeClick?: () => void;\n toolTipText: string;\n}\n\nconst UpgradeInfoComponent = ({\n upgradeText,\n onUpgradeClick,\n toolTipText,\n}: UpgradeInfoComponentProps) => {\n const { model, operations } = useHover();\n const classes = useStyles();\n return (\n \n \n \n \n
\n \n
\n \n {model.isHovering && (\n \n {upgradeText}\n \n )}\n
\n
\n
\n );\n};\n\nexport default UpgradeInfoComponent;\n","import styled, { css } from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst borderStyle = css`\n border: 1px solid ${ThemeV2.palette.geekBlue6};\n`;\n\nconst multipleChoiceStyle = css`\n box-sizing: border-box;\n margin-left: 8px;\n border-radius: 4px;\n padding: 0 12px;\n width: 100%;\n height: 32px;\n font-size: 16px;\n font-family: ${ThemeV2.typography.adminFontFamily};\n\n &:focus,\n &:focus-visible {\n outline: none;\n }\n\n ::placeholder {\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n color: ${ThemeV2.palette.gray6};\n }\n`;\n\nexport const FlowsOtherMultipleChoiceInput = styled.input<{\n isBorderVisible: boolean;\n}>`\n ${multipleChoiceStyle};\n ${({ isBorderVisible }) => (isBorderVisible ? borderStyle : 'border: none')};\n`;\n\nexport const FlowsMultiChoiceOthersChoiceInput = styled.input<{\n isBorderVisible: boolean;\n}>`\n margin-bottom: 4px;\n ${multipleChoiceStyle};\n ${({ isBorderVisible }) => (isBorderVisible ? borderStyle : 'border: none')};\n`;\n","import React, { Fragment, ReactNode, useRef } from 'react';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Body from '../../atoms/Body';\nimport Radio from '../../atoms/Radio/index';\nimport { StyledFlexContainer, StyledIconInfo, ExtraContent } from './styles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nimport UpgradeOptionComponent from '../UpgradeInfo';\nimport { IconInfoProps } from '../IconInfo';\nimport { FlowsOtherMultipleChoiceInput } from '../../atoms/FlowsOtherMultipleChoiceInput';\n\nconst useStyles = makeStyles({\n root: {\n color: ThemeV2.palette.gray8,\n fontSize: '14px',\n margin: 0,\n paddingBottom: '16px',\n alignItems: 'center',\n\n '& .MuiRadio-root': {\n padding: '0',\n marginRight: '8px',\n '& .MuiSvgIcon-root': {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n width: (props) => props.radioSize,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n height: (props) => props.radioSize,\n },\n },\n },\n});\n\nexport interface RadioOptionProps {\n value: string;\n label: string;\n labelHeader?: string;\n disabled?: boolean;\n upgradeInfo?: {\n upgradeText: string;\n onUpgradeClick?: () => void;\n toolTipText: string;\n };\n iconInfo?: IconInfoProps;\n children?: ReactNode;\n inlineChildren?: ReactNode;\n}\n\ninterface RadioGroupProps {\n value: string;\n className?: string;\n name: string;\n radioOptions: RadioOptionProps[];\n radioSize?: string;\n onChange: (e: React.ChangeEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n dataTestId?: string;\n labelColor?: string;\n labelHeaderVariant?: string;\n labelVariant?: string;\n onOtherInputValueChange?: (newValue: string) => void;\n otherInputValue?: string;\n}\n\nconst CustomRadioGroup = ({\n labelColor = 'gray8',\n labelHeaderVariant = 'body2Bold',\n labelVariant = 'body2',\n name,\n value,\n radioSize = '16px',\n radioOptions,\n onChange,\n onFocus,\n onOtherInputValueChange,\n otherInputValue,\n className,\n}: RadioGroupProps) => {\n const otherInputRef = useRef(null);\n\n const { root } = useStyles({ radioSize });\n\n const handleChange = (\n event: React.ChangeEvent,\n newValue: string,\n ) => {\n if (newValue === 'other') {\n otherInputRef.current?.focus();\n }\n onChange(event);\n };\n\n return (\n \n {radioOptions.map(\n ({\n disabled: optionDisabled,\n label: optionLabel,\n value: optionValue,\n labelHeader: optionLabelHeader,\n upgradeInfo,\n iconInfo,\n children,\n inlineChildren,\n }) => {\n const formLabel = (\n \n {optionLabelHeader && (\n \n {optionLabelHeader}\n \n )}\n {optionLabel}\n {upgradeInfo && (\n \n )}\n {iconInfo && value === optionValue && (\n \n )}\n \n );\n return (\n \n \n }\n data-testid={optionLabel}\n label={formLabel}\n disabled={optionDisabled}\n classes={{ root }}\n />\n {optionValue === 'other' && (\n \n onOtherInputValueChange &&\n onOtherInputValueChange(event.target.value)\n }\n onFocus={onFocus}\n placeholder=\"Add your answer (optional)\"\n ref={otherInputRef}\n value={otherInputValue}\n />\n )}\n {inlineChildren}\n \n {value === optionValue && children ? (\n \n {children}\n \n ) : null}\n \n );\n },\n )}\n \n );\n};\n\nexport default CustomRadioGroup;\n","import React, { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { AssemblyCurrencyIconType } from './interface';\nimport { lineHeightForFont } from '../../../Utils/styles/text';\nimport { AssemblyCurrencyType } from '../../../interfaces/assembly';\n\nconst StyledSpan = styled.span<{ size: string; blendMode: string }>`\n font-size: ${({ size }) => size};\n line-height: ${({ size }) => lineHeightForFont(size)};\n mix-blend-mode: ${({ blendMode }) => blendMode};\n`;\n\nconst StyledImg = styled.img<{ size: string; blendMode: string }>`\n width: ${({ size }) => size};\n mix-blend-mode: ${({ blendMode }) => blendMode};\n`;\n\nconst AssemblyCurrencyIcon = (props: AssemblyCurrencyIconType) => {\n const {\n active = true,\n size = '20px',\n className,\n dataTestId,\n assemblyCurrency,\n } = props;\n let { hexCode, currencyName, url } = props;\n\n const blendMode = useMemo(() => {\n return active ? 'normal' : 'luminosity';\n }, [active]);\n\n if (assemblyCurrency) {\n currencyName = assemblyCurrency.name;\n if (assemblyCurrency.type === AssemblyCurrencyType.REGULAR) {\n hexCode = assemblyCurrency.value;\n url = undefined;\n }\n if (assemblyCurrency.type === AssemblyCurrencyType.CUSTOM) {\n url = assemblyCurrency.value;\n hexCode = undefined;\n }\n }\n\n if (hexCode) {\n return (\n \n {String.fromCodePoint(parseInt(hexCode, 16))}\n \n );\n }\n\n if (url) {\n return (\n \n );\n }\n return null;\n};\n\nconst MemoizedAssemblyCurrencyIcon = React.memo(AssemblyCurrencyIcon);\nMemoizedAssemblyCurrencyIcon.displayName = 'AssemblyCurrencyIcon';\n\nexport default MemoizedAssemblyCurrencyIcon;\n","export const lineHeightForFont = (fontSize: string) => {\n switch (fontSize) {\n case '12px':\n return '20px';\n case '20px':\n return '28px';\n case '14px':\n return '22px';\n case '16px':\n return '24px';\n case '18px':\n return '26px';\n default:\n return '28px';\n }\n};\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nimport { PropsClasses } from '../../../interfaces/ClassesProps';\n\nconst useStyles = makeStyles({\n root: {\n display: 'inline-block',\n cursor: 'pointer',\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontSize: '14px',\n lineHeight: '22px',\n },\n});\n\ninterface LinkItemProps {\n className?: string;\n classes?: PropsClasses;\n children?: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n}\n\nconst LinkItem = (props: LinkItemProps) => {\n const classes = useStyles(props);\n const { className: parentClassName, ...rest } = props;\n return
;\n};\n\nexport default LinkItem;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport const ADMIN_ROLES = ['Owner', 'Admin'];\nexport const OWNER_ROLES = ['Owner'];\nexport const USER_ROLES = ['Employee'];\n\nexport const checkIfAdmin = (user) => {\n const { role } = user;\n const hasRole = role.find((rol) => {\n if (ADMIN_ROLES.includes(rol)) {\n return true;\n }\n return false;\n });\n return !!hasRole;\n};\n","/* eslint-disable max-len */\nexport const CULTURE = 'Culture';\nexport const GIFT_CARDS = 'Gift Cards';\nexport const CHARITIES = 'Charities';\nexport const AXOMO_SWAGS = 'Swag';\nexport const MY_REWARDS = 'My Rewards';\nexport const REWARDS = 'Rewards';\nexport const MORE_ABOUT_THIS_REWARD = 'More about this reward';\nexport const REWARDS_COST = 'Cost';\nexport const REWARDS_BUTTON_TEXT_CHARITY = 'Select Charity';\nexport const REWARDS_BUTTON_TEXT_REWARD = 'Select Reward';\nexport const REWARDS_BUTTON_TEXT_SWAGS = 'Select Reward';\nexport const REWARDS_AVAILABILITY_TEXT = 'available';\nexport const REWARDS_AVAILABILITY_OF_TEXT = 'of';\nexport const UPGRADE_HERE = 'Upgrade here';\nexport const ACCOUNT_SETUP = 'Account setup';\nexport const THERES_NO_REWARDS = \"There's no rewards here, yet\";\nexport const CULTURE_REWARDS_PROVIDE_YOU = `Culture rewards provide you the flexibility\n to create rewards outside the scope of our gift card and charity catalog. Want to create some?`;\nexport const TAKE_ME_TO_ADMIN_CULTURE_REWARDS =\n 'Take me to admin culture rewards';\nexport const ON_ANY_PAID_PLAN_YOU_ARE_ABLE = `On any paid plan, you're able to offer a\n wide range of gift cards and charities to suit all of your employees interests! Not on a paid plan yet?`;\n\nexport const GIFT_CARD_SETUP_TEXT = `All paid plans offer a wide range of gift cards to suit all of your employees' interests!`;\nexport const CHARITY_SETUP_TEXT = `All paid plans offer a wide range of charities to suit all of your employees' interests!`;\n\nexport const TAKE_ME_TO_TURN_ON_GIFT_CARDS = 'Take me to turn on gift cards';\nexport const TAKE_ME_TO_TURN_ON_CHARITIES = 'Take me to turn on charities';\nexport const REWARDS_REDEEM = 'Redeem';\nexport const CONTINUE_TO_SHIPPING = 'Continue to shipping';\nexport const REWARDS_CLOSE = 'Close';\nexport const PLACE_ORDER = 'Place order';\nexport const BUTTON_TEXT_NEXT = 'Next';\n\nexport const TAKE_ME_TO_TURN_ON_PAID_ALLOWANCE =\n 'Take me to turn on paid allowance';\n\nexport const REWARDS_REDEEM_SUCCESS_RATING_TEXT = 'How is Assembly doing?';\nexport const REWARDS_REDEEM_SUCCESS_COMPLETED_RATING_HEADING =\n 'Thank you for celebrating Assembly, you’re a star!';\nexport const REWARDS_REDEEM_SUCCESS_COMPLETED_RATING_TEXT =\n 'We appreciate your candid feedback so that we can make Assembly the best it can be. If you have more comments, never hesitate to reach out.';\nexport const CREATE_CULTURE_REWARD_LIMITED_REWARD_TEXT =\n 'How it works: Have a specific amount of a reward you can give? Use a limited reward to make sure you keep track of when it’s running out of stock.';\nexport const CREATE_CULTURE_REWARD_OPTIONS_HEADING =\n 'What type of reward is this? *';\nexport const REDEMPTION_CARD_TEXT = {\n REDEEMED_FOR: 'Redeemed for',\n REDEEMED_ON: 'Redeemed on',\n REDEMPTION_DETAILS: 'See redemption details',\n RESEND_EMAIL: 'Resend Email',\n EMAIL_RESENT: 'Email Resent',\n REMIND_ADMIN: 'Remind Admin',\n REMINDER_SENT: 'Reminder Sent',\n FULFILLED: 'Fulfilled',\n};\nexport const UPLOAD_REWARD_IMAGE = 'Upload Reward Image';\nexport const UPLOAD_REWARD_IMAGE_SIZE_RECOMMENDATION =\n 'Size recommendation: 215px by 125px';\nexport const IMAGE_CROPPER_MODAL_HEADING = 'Edit Image';\nexport const IMAGE_CROPPER_MODAL_SUBMIT_TEXT = 'Done';\nexport const IMAGE_CROPPER_MODAL_CANCEL_TEXT = 'Cancel';\n\nexport const REWARD_NAME_INPUT_PLACEHOLDER = 'Enter a reward name';\nexport const REWARD_NAME_INPUT_LABEL = 'Reward name *';\nexport const REWARD_NAME_INPUT_HELPER_TEXT = 'Please limit to 100 characters.';\n\nexport const REWARD_DESCRIPTION_INPUT_PLACEHOLDER = 'Enter a description text';\nexport const REWARD_DESCRIPTION_INPUT_LABEL = 'Description *';\nexport const REWARD_DESCRIPTION_INPUT_HELPER_TEXT =\n 'Please limit to 500 characters.';\nexport const GET_REWARD_TROPHIES_INPUT_PLACEHOLDER = (\n currencyNamePlural: string,\n) => `${currencyNamePlural} needed to redeem *`;\nexport const REWARD_LIMIT_INPUT_OPTIONS_TEXT = 'How many are available? *';\nexport const CREATE_REWARD = 'Create Reward';\nexport const EDIT_REWARD = 'Edit Reward';\nexport const REWARD_TYPES_OPTIONS_LABEL = [\n 'Unlimited reward',\n 'Limited reward',\n];\n\nexport const CULTURE_REWARDS_SEARCH_PLACEHOLDER = 'Search Culture Rewards';\nexport const CULTURE_REWARDS_FILTER_PLACEHOLDER = 'Reward type';\nexport const REWARDS_SORT_PLACEHOLDER = 'Sort by';\n\nexport const GIFT_CARD_REWARDS_SEARCH_PLACEHOLDER = 'Search Gift Cards';\nexport const GIFT_CARD_REWARDS_FILTER_PLACEHOLDER = 'Countries';\n\nexport const CHARITY_REWARDS_SEARCH_PLACEHOLDER = 'Search Charities';\n\nexport const MY_REWARDS_TEXT = {\n QUICK_STATS: 'Quick Stats',\n REDEEMED: 'Redeemed',\n DOLLARS_REDEEMED: 'Dollars Redeemed',\n REDEMPTION_HISTORY: 'Redemption History',\n EMPTY_REDEMPTION_HISTORY:\n 'You haven’t redeemed any rewards yet. Once you do, you’ll be able to find them here.',\n};\n\nexport const REDEEM = 'Redeem';\nexport const CULTURE_REWARD_REDEMPTION_POLICY =\n 'Culture reward redemption policy';\nexport const YOUR_REWARD_WILL_BE_SENT_TO =\n 'Once you click ‘Redeem,’ your reward will be sent to';\nexport const YOUR_ADMINISTRATOR_WILL_CONTACT_YOU =\n 'Your administrator, will contact you to coordinate your reward.';\nexport const AFTER_CLICKING_REDEEM =\n \"IMPORTANT: After clicking 'Redeem,' Assembly cannot issue a refund for this reward.\";\nexport const PLEASE_CHECK_YOUR_EMAIL = 'Please check your email';\nexport const ALWAYS_CHECK_YOUR_SPAM =\n 'Always check your spam if you do not see the reward. If you don’t receive an email to claim your reward, please notify your admin.';\nexport const CONGRATS_YOU_HAVE_SUCCESSFULLY_REDEEMED =\n 'Congrats! You’ve successfully redeemed:';\nexport const SELECT_GIFT_CARD_VALUE = 'Select a gift card value';\nexport const REDEEM_SELECT_MODAL = 'Redeem select modal';\nexport const GIFT_CARD = 'gift card';\n\nexport const REDEEM_SWAG_POLICY_TITLE = 'Description';\nexport const REDEEM_SWAG_POLICY_LOADING = 'Loading...'\nexport const REDEEM_SWAG_POLICY_ABOUT_SHIPPING = 'About shipping';\nexport const PLACING_AN_ORDER_CONFIRMATION_WILL_SENT_TO =\n 'When you place this order, your confirmation will be sent to';\nexport const CHOOSE_A_SIZE = 'Choose a size';\nexport const QUANTITY = 'Quantity';\nexport const CHOOSE_COLOR = 'Choose a color';\nexport const REDEEM_SWAG_SHIPPING_ABOUT_CONTENT_PREFIX =\n 'We automatically choose the best shipping method for you, so you don’t have to worry about that.';\nexport const REDEEM_SWAG_SHIPPING_ABOUT_CONTENT_SUFFIX =\n 'Please confirm that your order and address are correct, and then click “Order Swag” to finalize your purchase.';\n\nexport const GIFT_CARD_POLICY_TITLE = 'Gift card redemption policy';\nexport const HOW_TO_REDEEM_YOUR_E_GIFT_CARD = 'How to redeem your e-gift card';\nexport const CHARITY_POLICY_TITLE = 'Charity donation policy';\nexport const CHARITY_POLICY_DESCRIPTION =\n 'Once you click ‘Redeem,’ your donation confirmation will be sent to';\n\nexport const REWARDS_PER_PAGE = 'Rewards per page:';\nexport const GIFT_CARDS_PER_PAGE = 'Gift cards per page:';\nexport const CHARITIES_PER_PAGE = 'Charities per page:';\n\nexport const COULD_NOT_FIND_ANY_REWARDS =\n 'We couldn’t find any rewards in this search';\nexport const TRY_DIFFERENT_SEARCH =\n 'Try a different search to see if we have what you’re looking for.';\nexport const REDEMPTIONS_PER_PAGE = 'Redemptions per page';\nexport const REDEEM_SUCCESS_MESSAGE = 'Successfully redeemed';\nexport const REDEEM_ERROR_MESSAGE = 'Redeem failed!';\n\nexport const WE_ARE_LOOKING_FOR_THE_BEST_REWARDS =\n 'We’re looking for the best rewards...';\n\nexport const HOLD_TIGHT = 'Hold tight, we’re searching high and low.';\n\nexport const NEXT_PAGE = 'Next Page';\nexport const PREVIOUS_PAGE = 'Previous Page';\n\nexport const AXOMO_SWAG_REWARDS_SEARCH_PLACEHOLDER = 'Search swag';\nexport const AXOMO_SWAG_REWARDS_TYPE_PLACEHOLDER = 'Swag type';\nexport const AXOMO_SWAG_REWARDS_SORT_PLACEHOLDER = 'Sort by';\n\nexport const CREATE_CULTURE_REWARD = 'Create a New Culture Reward';\nexport const EDIT_CULTURE_REWARD = 'Edit Culture Reward';\n\nexport const CULTURE_REWARD_CREATED = 'Culture reward created!';\nexport const CULTURE_REWARD_UPDATED = 'Culture reward updated!';\nexport const CREATE_CULTURE_REWARD_ERROR = 'Unable to create culture reward';\nexport const UPDATE_CULTURE_REWARD_ERROR = 'Unable to update culture reward';\n\nexport const CREATE_CULTURE_REWARD_ERROR_MESSAGE = {\n REQUIRED: 'Required field',\n NAME_MAX_CHAR: 'Please limit to 28 characters.',\n NAME_MIN_CHAR: 'Reward Name must be more than 2 characters long',\n DESCRIPTION_MAX_CHAR: 'Please limit to 180 characters.',\n VALID_NUMBER: 'Enter a valid number',\n};\n\nexport const REWARD_NAVIGATE_TO_ADMIN_SWAG_SETTINGS =\n 'Take me to admin swag settings';\nexport const REWARD_EMPTY_SWAG_TITLE = 'There’s no swag here, yet';\nexport const REWARD_EMPTY_SWAG_DESCRIPTION =\n 'Assembly has partnered with Axomo to cover all of your company’s swag design and distribution needs. Get them set up and have your organization redeem swag with points!';\nexport const REWARD_UPGRAGE_SWAG_TITLE =\n 'Swag cannot be seen by anyone until you upgrade';\nexport const REWARD_UPGRADE_SWAG_DESCRIPTION =\n 'Want company swag? Assembly has partnered with Axomo to cover all of your company’s swag design and distribution needs. Get them set up and have your organization redeem swag with points!';\nexport const UPGRADE_BUTTON_TEXT = 'Upgrade to access';\nexport const LEAVE_CHECKOUT_TEXT =\n 'Are you sure you want to leave checkout? If you leave now, your items will not be redeemed.';\nexport const GO_BACK = 'Go back';\nexport const LEAVE_CHECKOUT = 'Leave checkout';\nexport const LEAVE_CHECKOUT_HEADING = 'Leave checkout?';\nexport const REDEEM_CONTENT_MODAL_TEXTS = {\n SHIPPING_ADDRESS: 'Shipping Address',\n CONGRATS: 'Congrats! You’ve successfully redeemed:',\n CONFIRM: 'Confirm your details:',\n TOTAL_COST: 'Total cost:',\n GET_QUANTITY_SIZE_TEXT: (qty: string | undefined, size: string | undefined) =>\n `Quantity: ${qty}, Size: ${size}`,\n EXPECTED_DATE: 'Expected delivery date:',\n SEND_TO: 'Send to:',\n GET_SHIPPING_ADDRESS_TITLE: (\n qty: string | undefined,\n name: string | undefined,\n size: string | undefined,\n ) => `${qty}x, ${name}, Size: ${size}`,\n CHECK_STATUS: 'Check the status of your order from the',\n TRACK_STATUS:\n 'page. Once it ships, you’ll get an email and be able to track your swag.',\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { createSelector } from 'reselect';\nimport _ from 'lodash';\nimport { regularAllowanceSelector } from '../admin/selector';\nimport { ALLOWANCE_TYPES } from '../../Utils/constants';\nimport { checkAdmin } from '../../Utils/admin';\n\nexport const meSelector = (state) => _.get(state, ['me', 'me'], null);\n\nexport const checkIfAdmin = createSelector(meSelector, (me) => {\n if (me) {\n return checkAdmin(me.role);\n }\n return false;\n});\n\nexport const getMyAllowanceAndTypeSelector = createSelector(\n meSelector,\n regularAllowanceSelector,\n (me, regularAllowance) => {\n if (!me) {\n return { type: ALLOWANCE_TYPES.REGULAR, allowance: 0 };\n }\n const myAllowanceType = _.get(\n me,\n ['profile', 'allowanceType'],\n ALLOWANCE_TYPES.REGULAR,\n );\n if (myAllowanceType === ALLOWANCE_TYPES.REGULAR) {\n return { type: ALLOWANCE_TYPES.REGULAR, allowance: regularAllowance };\n }\n if (myAllowanceType === ALLOWANCE_TYPES.NO_ALLOWANCE) {\n return { type: ALLOWANCE_TYPES.NO_ALLOWANCE, allowance: 0 };\n }\n const myCustomAllowance = _.get(\n me,\n ['profile', 'customAllowance'],\n ALLOWANCE_TYPES.CUSTOM,\n );\n return { type: ALLOWANCE_TYPES.CUSTOM, allowance: myCustomAllowance };\n },\n);\n\nexport const getMySlackTeamIdInfo = (state) =>\n _.get(state, ['me', 'me', 'integrations', 'slack_v2', 'teamID'], null);\n","const configureAssemblyStatus = {\n QUEUED: 'QUEUED',\n PROCESSING: 'PROCESSING',\n SUCCESS: 'SUCCESS',\n ERROR: 'ERROR',\n};\n\nexport default configureAssemblyStatus;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport _ from 'lodash';\nimport { AuthHeadersV2 } from '../../../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2 } from '../../../../../config';\n\nconst apiEndpoints = {\n INVOICES: `${API_URL_WITH_V2}/employer/invoices`,\n};\n\nexport const GET_BILLING_INVOICES =\n '@admin/billings/paymentHistory/GET_BILLING_INVOICES';\nexport const GET_BILLING_INVOICE =\n '@admin/billings/paymentHistory/GET_BILLING_INVOICE_ID';\nexport const RESET_BILLING_INVOICES =\n '@admin/billings/paymentHistory/RESET_BILLING_INVOICES';\n\nexport const getBillingInvoices = (afterId = null, limit = 10) => ({\n type: GET_BILLING_INVOICES,\n request: {\n url: afterId\n ? `${apiEndpoints.INVOICES}?startingAfter=${afterId}&limit=${limit}`\n : `${apiEndpoints.INVOICES}?limit=${limit}`,\n method: 'get',\n ...AuthHeadersV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const getBillingInvoice = ({ invoiceId, startDate, endDate }) => ({\n type: GET_BILLING_INVOICE,\n request: {\n url: `${apiEndpoints.INVOICES}/${invoiceId}?startDate=${startDate}&endDate=${endDate}`,\n method: 'get',\n ...AuthHeadersV2(),\n },\n meta: {\n invoiceId,\n },\n});\n\nexport const resetBillingInvoices = () => ({\n type: RESET_BILLING_INVOICES,\n});\n\nexport default requestsReducer({\n actionType: GET_BILLING_INVOICES,\n getData: (state, action, config) => {\n switch (action.type) {\n case success(GET_BILLING_INVOICES): {\n const data = _.get(action, ['data', 'data'], {});\n const { invoices, ...rest } = data;\n const invoicesList = invoices.data;\n const existingInvoice = _.get(state, ['data', 'invoices'], []);\n return {\n ...state.data,\n ...rest,\n invoices: [...existingInvoice, ...invoicesList],\n invoicesInfo: invoices,\n };\n }\n default:\n return state;\n }\n },\n mutations: {\n [GET_BILLING_INVOICE]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(GET_BILLING_INVOICE): {\n const data = _.get(action, ['data', 'data'], null);\n const id = action.meta.invoiceId;\n return { ...state.data, [id]: data };\n }\n default:\n return { ...state.data };\n }\n },\n },\n [RESET_BILLING_INVOICES]: {\n updateData: (state, action) => {\n switch (action.type) {\n case RESET_BILLING_INVOICES: {\n return null;\n }\n default:\n return { ...state.data };\n }\n },\n local: true,\n },\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport history from './../history';\nimport { API_URL_WITH_V2 } from '../config';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../containers/helpers/ErrorHelper';\nimport { AuthHeaders } from './shared/HeaderToken';\nimport Logger from '../Utils/Logger';\nimport {\n showSuccessMessage,\n showErrorMessage,\n showInfoMessage,\n} from '../Utils/flashHandler';\nimport { updateMyDetails } from './Me';\nimport { adminActions } from './Admin';\nimport getter from '../Utils/objectUtils/getter';\nimport { trackEvent, EventType } from '../Utils/analytics/Metrics';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n PLATFORM_PAYMENT: `${API_URL_WITH_V2}/employer/subscription/payment/card`,\n PLATFORM_PAYMENT_V2: `${API_URL_WITH_V2}/employer/subscription/v2/payment/card`,\n PLATFORM_PAYMENT_DETAILS: `${API_URL_WITH_V2}/employer/subscription/v2/payment/card/details`,\n PLATFORM_PROMO_CODE: `${API_URL_WITH_V2}/employer/subscription/payment/coupon`,\n ADD_CREDIT_CARD: `${API_URL_WITH_V2}/employer/billing/cards/add`,\n};\n\nconst processError = (error = {}, dispatch) => {\n // Logger('processError');\n // Logger(error.response);\n // Logger(error);\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(actions.paymentFailure(ErrorMessages.serverError));\n break;\n case 401: // Not authorised\n // (Log out user)\n break;\n case 403: // Forbidden\n // redirect to home\n break;\n case 404: // Page not found\n dispatch(actions.paymentFailure(ErrorMessages.serverError));\n break;\n // mostly my error\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n Logger(msg, true);\n Logger(responseData, true);\n Logger(responseData.code, true);\n if (responseData.code === 102) {\n dispatch(actions.paymentFailure(responseData.error));\n } else {\n dispatch(actions.paymentFailure(msg));\n }\n }\n break;\n default:\n dispatch(actions.paymentFailure(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const PROCESS_PAYMENT_SUCCESS = 'paymentSuccess';\nexport const PROCESS_PAYMENT_ERROR = 'paymentFailure';\nexport const PROMO_CODE_ERROR = 'promo_code_failure';\nexport const PROMO_CODE_SUCCESS = 'promo_code_success';\nexport const PROCESS_PAYMENT_RESET = 'paymentReset';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst paymentSuccess = () => ({\n type: PROCESS_PAYMENT_SUCCESS,\n});\n\nconst paymentFailure = (error) => ({\n type: PROCESS_PAYMENT_ERROR,\n message: error,\n});\nconst promoCodeFailure = (error) => ({\n type: PROMO_CODE_ERROR,\n message: error,\n});\nconst promoCodeSuccess = (success, code) => ({\n type: PROMO_CODE_SUCCESS,\n message: success,\n code,\n});\n\nconst paymentReset = () => ({\n type: PROCESS_PAYMENT_RESET,\n});\n\nexport const actions = {\n paymentSuccess,\n paymentFailure,\n paymentReset,\n promoCodeFailure,\n promoCodeSuccess,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const processPayment = (props, type, isUpdate = false) => {\n Logger(props, true);\n Logger('processPayment');\n return async (dispatch) => {\n if (props.error) {\n dispatch(actions.paymentFailure(props.error.message));\n } else {\n try {\n dispatch(actions.paymentReset());\n let res;\n // dispatch(showInfoMessage('Saving platform payment...'));\n if (isUpdate) {\n res = await axios.post(\n apiEndpoints.ADD_CREDIT_CARD,\n props,\n AuthHeaders(),\n );\n } else {\n res = await axios.post(\n apiEndpoints.ADD_CREDIT_CARD,\n props,\n AuthHeaders(),\n );\n }\n const result = res.data;\n Logger(result, true);\n dispatch(actions.paymentSuccess());\n dispatch(adminActions.gotMyEmployer(result.data.employer));\n if (isUpdate) {\n // dispatch(showSuccessMessage('Payment method has been updated'));\n const stripe = getter(\n ['employer', 'accounts', 'stripe'],\n result.data,\n );\n dispatch(adminActions.gotPaymentDetails(stripe));\n // history.push('/admin/billing/platform');\n } else if (type === 'companySetup') {\n const user = result.data.user;\n const employer = result.data.employer;\n updateMyDetails(user, dispatch);\n dispatch(adminActions.gotMyEmployer(employer));\n trackEvent(EventType.SUBSCRIPTION, {\n userId: user._id,\n employerId: employer._id,\n });\n history.push('/setup/import', { addToTracker: true });\n }\n } catch (error) {\n dispatch(\n showErrorMessage(\n 'Whoops, looks like we’re experiencing network issues -- Try again.',\n ),\n );\n processError(error, dispatch);\n }\n }\n };\n};\nexport const applyPromoCodeAction = (code) => async (dispatch) => {\n dispatch(actions.promoCodeFailure(null));\n try {\n dispatch(showInfoMessage('Applying Promo Code...'));\n const res = await axios.get(\n `${apiEndpoints.PLATFORM_PROMO_CODE}/${code}`,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const successMessage = result.message.join(' ');\n dispatch(showSuccessMessage('Promo Code has been applied successfully'));\n dispatch(actions.promoCodeSuccess(successMessage, code));\n // dispatch(gotMyEmployer(employer));\n }\n } catch (error) {\n if (error && error.response) {\n const responseData = error.response.data;\n if (responseData.code === 102) {\n dispatch(actions.promoCodeFailure(responseData.message));\n } else {\n processError(error, dispatch);\n }\n }\n }\n};\n\nexport const getPaymentCardDetails = () => async (dispatch) => {\n try {\n const res = await axios.get(\n `${apiEndpoints.PLATFORM_PAYMENT_DETAILS}`,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(adminActions.gotPaymentDetails(result.data));\n }\n } catch (error) {\n if (error && error.response) {\n processError(error, dispatch);\n }\n }\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case PROCESS_PAYMENT_SUCCESS:\n return { ...state, payment_status: true, error: '' };\n case PROCESS_PAYMENT_ERROR:\n return {\n ...state,\n payment_status: false,\n error: action.message || 'Card Error',\n };\n case PROCESS_PAYMENT_RESET:\n return { ...state, payment_status: false, error: '' };\n case PROMO_CODE_ERROR:\n return { ...state, promoCodeError: action.message };\n case PROMO_CODE_SUCCESS:\n return {\n ...state,\n promoCodeSuccess: action.message,\n promoCode: action.code,\n };\n default:\n return state;\n }\n};\n","import styled from 'styled-components';\n\nimport Body from '../Body';\nimport SVGIcon from '../SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const StyledWrapper = styled.div`\n width: auto;\n`;\n\nexport const StyledInput = styled.input`\n position: absolute;\n opacity: 0;\n margin: 0;\n padding: 0;\n`;\n\nexport const StyledLabel = styled.label<{\n checkboxSize: string;\n disabled: boolean;\n}>`\n display: flex;\n align-items: center;\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n position: relative;\n margin: 0;\n\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n & span {\n width: ${({ checkboxSize }) => checkboxSize || '14px'};\n }\n\n & div {\n color: ${({ disabled }) => disabled && `${ThemeV2.palette.darkGray7}`};\n }\n`;\n\nexport const StyledCheckboxSpan = styled.span`\n display: flex;\n align-items: center;\n`;\n\n// https://styled-components.com/docs/api#transient-props\ninterface LabelTransientProps {\n $isFocused?: boolean;\n}\n\nexport const StyledSVGIcon = styled(SVGIcon)`\n box-shadow: ${({ $isFocused }) =>\n $isFocused && `0 0 1px 1px ${ThemeV2.palette.geekBlue6}`};\n border-radius: 2px;\n`;\n\nexport const StyledBody = styled(Body)<{ $margin?: string; $padding?: string }>`\n margin: ${({ $margin }) => $margin || '0px 0px 0px 8px'};\n padding: ${({ $padding }) => $padding || undefined};\n`;\n","import React, { useCallback, useMemo } from 'react';\n\nimport {\n StyledBody,\n StyledCheckboxSpan,\n StyledInput,\n StyledLabel,\n StyledSVGIcon,\n StyledWrapper,\n} from './styles';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport useToggle from '../../../hooks/useToggle';\nimport { mapHexCodeToEmoticon } from '../../../Utils/mappers';\n\nexport interface CheckboxProps {\n label?: React.ReactNode;\n labelMargin?: string;\n labelPadding?: string;\n labelVariant?: string;\n name: string;\n value?: boolean;\n onChange: (event: React.ChangeEvent) => void;\n size?: string;\n color?: string;\n className?: string;\n disabled?: boolean;\n stopClickPropagation?: boolean;\n icon?: string;\n}\n\nconst Checkbox = (props: CheckboxProps) => {\n const {\n name,\n label,\n labelMargin = undefined,\n labelPadding = undefined,\n labelVariant = 'body2',\n value = false,\n size = '14px',\n color = ThemeV2.palette.geekBlue6,\n onChange,\n className,\n disabled = false,\n stopClickPropagation,\n icon,\n } = props;\n const {\n models: { toggleValue: isFocused },\n operations: { setToggleToFalse, setToggleToTrue },\n } = useToggle();\n\n const handleOnFocus = () => {\n setToggleToTrue();\n };\n const handleOnBlur = () => {\n setToggleToFalse();\n };\n\n const svgColor = useMemo(() => {\n if (disabled) {\n return ThemeV2.palette.gray3;\n }\n if (!value) {\n return ThemeV2.palette.gray6;\n }\n\n return color;\n }, [color, value, disabled]);\n\n const hoverColor = useMemo(() => {\n if (disabled) {\n return undefined;\n }\n return color;\n }, [color, disabled]);\n\n const onClick = useCallback(\n (e) => {\n if (stopClickPropagation) {\n e.stopPropagation();\n }\n },\n [stopClickPropagation],\n );\n\n return (\n \n \n \n \n \n \n {icon && {mapHexCodeToEmoticon(icon)} }\n {label && (\n \n {label}\n \n )}\n \n \n );\n};\n\nexport default Checkbox;\n","import ThemeV2 from '../../../componentsV2/theme';\n\nexport const CARD_OPTIONS = {\n style: {\n base: {\n fontFamily: 'Roboto, Menlo, monospace',\n fontWeight: 'normal',\n fontSize: '16px',\n border: `1px solid ${ThemeV2.palette.gray5}`,\n color: ThemeV2.palette.darkText,\n borderRadius: '3px',\n marginBottom: '16px',\n '::placeholder': {\n color: ThemeV2.palette.gray6,\n },\n },\n invalid: {\n color: ThemeV2.palette.darkText,\n },\n },\n hideIcon: true,\n};\n","import { DEVICES } from '../../constants/devices';\n\nconst SOURCE_DEVICE = 'SOURCE_DEVICE';\n\nexport const setSourceDevice = (device: DEVICES) => {\n localStorage.setItem(SOURCE_DEVICE, device);\n};\n\nexport const getSourceDevice = () => {\n return localStorage.getItem(SOURCE_DEVICE);\n};\n\nexport const setSourceDeviceAsIPhone = () => {\n setSourceDevice(DEVICES.IPHONE);\n};\n\nexport const isSourceDeviceIPhone = () => getSourceDevice() === DEVICES.IPHONE;\n","export default \"data:image/png;base64,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\"","import React from 'react';\nimport Tooltip, { TooltipProps } from '@material-ui/core/Tooltip';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n arrow: {\n color: ThemeV2.palette.gray9,\n },\n tooltip: {\n backgroundColor: ThemeV2.palette.gray9,\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontSize: '14px',\n lineHeight: '22px',\n padding: '5px 8px',\n },\n});\n\nconst CustomToolTip: React.FC = (\n props: TooltipProps,\n): React.ReactElement => {\n const classes = useStyles();\n return ;\n};\n\nexport default CustomToolTip;\n","export const device = {\n mobile: '(min-width: 320px) and (max-width: 767px)',\n tablet: '(min-width: 768px) and (max-width: 1023px)',\n laptop: '(min-width: 1024px)',\n tabletV2: '(min-width: 768px)',\n laptop2: '(min-width: 1025px)',\n};\n\nexport const PrimaryNavWidth = 96;\nexport const SecondaryNavWidth = 336;\nexport const PrimaryNavWidthMobile = 72;\nexport const AsideWidthWhenClosed = 24;\nexport const AsideWidthWhenOpen = 320;\nexport const AsideToggleIconSize = 40;\n\nexport const MainHeaderHeight = '152px';\nexport const MainHeaderWithTabsHeight = '181px';\n\nexport const RewardsFixedHeaderSpacing =\n PrimaryNavWidth + SecondaryNavWidth + AsideWidthWhenClosed * 2;\n\nexport const RewardsFixedHeaderMobileSpacing = AsideWidthWhenClosed * 2;\n","import React from 'react';\nimport { CircularProgress, makeStyles } from '@material-ui/core';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { CircularProgressProps } from './interfaces';\nimport BenchmarkStatusIcon from '../BenchmarkStatusIcon';\n\nconst useStyles = makeStyles({\n root: ({ size }: CircularProgressProps) => ({\n width: size,\n height: size,\n position: 'relative',\n }),\n progress: {\n position: 'absolute',\n top: 0,\n left: 0,\n },\n overlayText: {\n position: 'absolute',\n top: 0,\n left: 0,\n margin: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n flexDirection: 'column',\n color: ({ valueColor }: CircularProgressProps) => valueColor,\n },\n shadowClass: ({ shadowColor }: CircularProgressProps) => ({\n color: shadowColor,\n }),\n progressIndicatorClass: ({ color }: CircularProgressProps) => ({\n color,\n '& circle': {\n fill: ({ backgroundColor }: CircularProgressProps) =>\n backgroundColor || 'transparent',\n },\n }),\n});\n\nconst CircularProgressComponent = (props: CircularProgressProps) => {\n const classes = useStyles(props);\n const {\n variant,\n showValue,\n value,\n size,\n showCircularShadow,\n showBenchmarkStatus,\n benchmarkStatus,\n thickness,\n } = props;\n return (\n
\n {showCircularShadow && (\n \n )}\n \n {showValue && value !== undefined && (\n
\n {showBenchmarkStatus && (\n \n )}\n {`${value}%`}\n
\n )}\n
\n );\n};\n\nCircularProgressComponent.defaultProps = {\n variant: 'determinate',\n showValue: false,\n value: undefined,\n size: '24px',\n showCircularShadow: false,\n color: ThemeV2.palette.geekBlue6,\n shadowColor: ThemeV2.palette.gray3,\n valueColor: ThemeV2.palette.gray9,\n};\n\nexport default CircularProgressComponent;\n","import React, {\n useState,\n ReactNode,\n useMemo,\n useCallback,\n useRef,\n} from 'react';\nimport { usePopper } from 'react-popper';\nimport { Placement } from '@popperjs/core';\n\nimport {\n ClickHolder,\n Container,\n PopoverElement,\n ReferenceContentContainer,\n} from './styles';\nimport useToggle from '../../../hooks/useToggle';\nimport useOnClickOutside from '../../../hooks/useOnOutsideClick';\n\nexport interface PopoverProps {\n elementPadding?: string;\n containerPadding?: string;\n popoverPosition?: Placement;\n popoverContent: ReactNode;\n referenceContent: ReactNode;\n xAxisOffset?: number;\n yAxisOffset?: number;\n triggerAction?: TriggerActionType;\n onOutsideClick?: (event: MouseEvent | TouchEvent) => void;\n closeOnPopoverClick?: boolean;\n disabled?: boolean;\n className?: string;\n}\n\ntype PopperElementState = HTMLElement | null;\nexport enum TriggerActionType {\n hover = 'HOVER',\n click = 'CLICK',\n}\n\nconst Popover = ({\n disabled,\n elementPadding = '16px',\n containerPadding = '0px',\n popoverPosition = 'bottom',\n triggerAction = TriggerActionType.hover,\n popoverContent: PopoverContent,\n referenceContent: ReferenceContent,\n xAxisOffset = 0,\n yAxisOffset = 0,\n onOutsideClick,\n closeOnPopoverClick,\n className,\n}: PopoverProps) => {\n const {\n models: { toggleValue: isPopoverOpen },\n operations: { setToggleValue: togglePopoverOpen },\n } = useToggle();\n const [referenceElement, setReferenceElement] =\n useState(null);\n const [popperElement, setPopperElement] = useState(null);\n\n const containerRef = useRef(null);\n\n const popperAttributes = useMemo(\n () => ({\n placement: popoverPosition,\n modifiers: [\n { name: 'offset', options: { offset: [yAxisOffset, xAxisOffset] } },\n ],\n }),\n [popoverPosition, xAxisOffset, yAxisOffset],\n );\n const { styles, update } = usePopper(\n referenceElement,\n popperElement,\n popperAttributes,\n );\n\n const checkTriggerAndToggle = useCallback(\n async (action: TriggerActionType, requiredAction: TriggerActionType) => {\n if (disabled) {\n return;\n }\n\n if (action === requiredAction) {\n // to update the position of the popover\n if (update) {\n update();\n }\n togglePopoverOpen();\n }\n },\n [disabled, togglePopoverOpen, update],\n );\n const onOutsideClickHandler = useCallback(\n (event: MouseEvent | TouchEvent) => {\n if (isPopoverOpen) {\n checkTriggerAndToggle(triggerAction, TriggerActionType.click);\n if (onOutsideClick) {\n onOutsideClick(event);\n }\n }\n },\n [checkTriggerAndToggle, isPopoverOpen, triggerAction, onOutsideClick],\n );\n const handleHoverToggle = useCallback(\n () => checkTriggerAndToggle(triggerAction, TriggerActionType.hover),\n [checkTriggerAndToggle, triggerAction],\n );\n const handleContainerClick = useCallback(() => {\n if (!isPopoverOpen) {\n checkTriggerAndToggle(triggerAction, TriggerActionType.click);\n }\n }, [checkTriggerAndToggle, isPopoverOpen, triggerAction]);\n const onPopoverClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (closeOnPopoverClick) {\n togglePopoverOpen();\n }\n },\n [closeOnPopoverClick, togglePopoverOpen],\n );\n\n const onPopoverKeypress = useCallback(\n (event) => {\n if (event.key === 'Enter') {\n togglePopoverOpen();\n }\n },\n [togglePopoverOpen],\n );\n\n const handleMouseLeave = useCallback(() => {\n if (isPopoverOpen) {\n checkTriggerAndToggle(triggerAction, TriggerActionType.hover);\n }\n }, [checkTriggerAndToggle, isPopoverOpen, triggerAction]);\n\n useOnClickOutside(containerRef, onOutsideClickHandler);\n\n return (\n \n \n {ReferenceContent}\n \n \n {isPopoverOpen && (\n \n {PopoverContent}\n \n )}\n \n \n );\n};\n\nexport default Popover;\n","import styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const Container = styled.div`\n width: 250px;\n`;\n\nexport const SVGContainer = styled.div`\n padding: 4px 0;\n`;\n\nexport const ErrorContainer = styled.div`\n background-color: ${ThemeV2.palette.gray3};\n border-radius: 100%;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const PopoverHeader = styled.div`\n display: flex;\n align-items: center;\n & > span:last-child {\n margin-left: 8px;\n }\n`;\n\nexport const PopoverContent = styled.div`\n margin: 4px 0 16px 32px;\n`;\n","import styled from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const Container = styled.div`\n width: fit-content;\n & div:nth-child(2) {\n z-index: 2;\n }\n`;\n\nexport const PopoverElement = styled.div<{\n padding: string;\n}>`\n background: ${ThemeV2.palette.gray1};\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n padding: ${({ padding }) => padding};\n`;\n\nexport const ReferenceContentContainer = styled.div<{ padding: string }>`\n padding: ${({ padding }) => padding};\n`;\n\nexport const ClickHolder = styled.div`\n &:focus {\n outline: 0;\n border: 0;\n }\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport ContentLoader from 'react-content-loader';\nimport { useHistory } from 'react-router-dom';\nimport {\n Container,\n ErrorContainer,\n PopoverContent,\n PopoverHeader,\n SVGContainer,\n} from './styles';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Tooltip from '../ToolTipV2';\nimport Popover from '../Popover';\nimport Body from '../../atoms/Body';\nimport Button from '../../atoms/Button';\nimport routesList from '../../../aV2/routes/routesList';\nimport {\n NEED_A_BOOST_BUTTON,\n NEED_A_BOOST_CONTENT,\n NEED_A_BOOST_HEADER,\n DOING_GREAT_CONTENT,\n DOING_GREAT_HEADER,\n GIVE_RECOGNITION_BUTTON,\n TOP_PERFORMER_CONTENT,\n TOP_PERFORMER_HEADER,\n ADD_INFO_BUTTON,\n DOING_GREAT_CONTENT_PROFILE_INFO,\n NEED_A_BOOST_CONTENT_PROFILE_INFO,\n TOP_PERFORMER_CONTENT_PROFILE_INFO,\n BENCHMARK_ERROR_TOOLTIP,\n} from '../../../constants/analytics/benchmark/constants';\nimport { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\n\nexport interface BenchmarkStatusIconProps {\n status?: BenchmarkStatus;\n loading?: boolean;\n size?: number;\n error?: boolean;\n isProfileInfo?: boolean;\n onShowTipsClick?: () => void;\n}\n\nconst BenchmarkStatusIcon = ({\n status,\n loading,\n size = 20,\n error,\n isProfileInfo,\n onShowTipsClick,\n}: BenchmarkStatusIconProps) => {\n const { push } = useHistory();\n const onGiveRecognitionClick = useCallback(\n () => push(routesList.HOME),\n [push],\n );\n const onAddInfoClick = useCallback(\n () => push(routesList.ADMIN_USER_MANAGE),\n [push],\n );\n const onCheckTipsClick = useCallback(() => {\n if (onShowTipsClick) {\n onShowTipsClick();\n }\n }, [onShowTipsClick]);\n const [selectedIcon, headerContent, bodyContent, buttonText, onButtonClick] =\n useMemo(() => {\n switch (status) {\n case BenchmarkStatus.TOP_PERFORMER: {\n return [\n 'benchmark-top-performer',\n TOP_PERFORMER_HEADER,\n isProfileInfo\n ? TOP_PERFORMER_CONTENT_PROFILE_INFO\n : TOP_PERFORMER_CONTENT,\n isProfileInfo ? false : GIVE_RECOGNITION_BUTTON,\n isProfileInfo ? onAddInfoClick : onGiveRecognitionClick,\n ];\n }\n case BenchmarkStatus.DOING_GREAT: {\n return [\n 'benchmark-doing-great',\n DOING_GREAT_HEADER,\n isProfileInfo\n ? DOING_GREAT_CONTENT_PROFILE_INFO\n : DOING_GREAT_CONTENT,\n isProfileInfo ? ADD_INFO_BUTTON : GIVE_RECOGNITION_BUTTON,\n isProfileInfo ? onAddInfoClick : onGiveRecognitionClick,\n ];\n }\n case BenchmarkStatus.NEED_A_BOOST:\n default: {\n return [\n 'benchmark-need-boost',\n NEED_A_BOOST_HEADER,\n isProfileInfo\n ? NEED_A_BOOST_CONTENT_PROFILE_INFO\n : NEED_A_BOOST_CONTENT,\n isProfileInfo ? ADD_INFO_BUTTON : NEED_A_BOOST_BUTTON,\n isProfileInfo ? onAddInfoClick : onCheckTipsClick,\n ];\n }\n }\n }, [\n isProfileInfo,\n onAddInfoClick,\n onCheckTipsClick,\n onGiveRecognitionClick,\n status,\n ]);\n const PopoverContainer = useMemo(\n () => (\n \n \n \n \n {headerContent}\n \n \n \n {bodyContent}\n \n {buttonText && (\n \n {buttonText}\n \n )}\n \n ),\n [bodyContent, buttonText, headerContent, onButtonClick, selectedIcon],\n );\n const Icon = useCallback(\n () => (\n \n \n \n ),\n [size, selectedIcon],\n );\n if (error) {\n return (\n \n \n {BENCHMARK_ERROR_TOOLTIP}\n
\n \n );\n }\n if (loading) {\n return (\n \n \n \n );\n }\n if (status) {\n return (\n }\n popoverPosition={isProfileInfo ? 'top' : 'bottom'}\n />\n );\n }\n return null;\n};\n\nexport default BenchmarkStatusIcon;\n","export enum PostTypes {\n CELEBRATED = 'celebrated',\n ANNIVERSARY = 'anniversary',\n BIRTHDAY = 'birthday',\n RECOGNITION = 'recognition',\n FLOW = 'flow',\n DEFAULT = 'default',\n}\n\nexport enum FeedTypes {\n POST = 'post',\n COMMENT = 'comment',\n}\n","import { capitalizeFirstLetter } from '../../../Utils/text';\n\nimport { PostTypes, FeedTypes } from '../../../interfaces/Home';\n\nexport const ADMIN_SETTINGS = 'Admin Settings';\n\nexport const GIVEN_PRIVATELY = 'Given Privately';\nexport const YOU = 'You';\nexport const AND = 'and';\nexport const OTHERS = 'Others';\nexport const PEOPLE = 'People';\n\nexport const CHOOSE_A_CORE_VALUE = 'Choose a core value';\nexport const PREMIUM_FEATURE = 'Premium feature';\nexport const UPGRADE_TO_ACCESS = 'upgrade to access';\n\nexport const FEED_POST_REACTIONS_COMMENT_TEXT = 'Comment';\nexport const FEED_POST_REACTIONS_REACT_TEXT = 'React';\nexport const EMOTICON_PICKER_TEXT = 'Pick your emoji';\nexport const REACTION_PICKER_TOOLTIP_TEXT =\n 'Reaction limit reached, looks like you have plenty to choose from!';\n\nexport const ADDED = 'added';\n\nexport const SOMETHING_WENT_WRONG = 'Something went wrong.';\nexport const TRY_AGAIN = 'Whoops! Please reload the page to try again.';\nexport const TRY_AGAIN_LATER = 'Whoops! Please try again later.';\n\nexport const getPostTypeString = (type: PostTypes) => {\n switch (type) {\n case PostTypes.CELEBRATED:\n return 'celebrated';\n\n case PostTypes.ANNIVERSARY:\n return 'anniversary';\n\n case PostTypes.BIRTHDAY:\n return 'birthday';\n\n default:\n return '';\n }\n};\n\n// Feed\n\nconst POST = 'post';\nconst COMMENT = 'comment';\nconst FEED = 'feed';\n\nexport const notificationDropdownHeading = 'Notifications';\nexport const notificationDropdownAllButton = 'All';\nexport const notificationDropdownUnreadButton = 'Unread';\nexport const notificationDropdownAllCaughtUpHeading = \"You're all caught up\";\nexport const notificationDropdownAllCaughtUpMessage =\n \"You've seen all of your notifications\";\nexport const notificationDropdownNoNotificationsHeading =\n 'No notifications yet!';\nexport const notificationDropdownNoNotificationsMessage =\n 'Celebrate a teammate to get started';\n\nexport const removeAttachmentModalInfo = {\n headerText: 'Are you sure?',\n contentHeading: 'Remove this attachment.',\n contentText:\n 'When you remove this attachment, it will disappear from the post and from the feed at large.',\n};\n\nexport const feedPostHeaderModalSubmitButtonText = 'Delete';\nexport const feedPostHeaderModalCancelButtonText = 'Cancel';\n\nexport const GIVE_TROPHIES_BACK_TO_SENDER =\n 'Give trophies back to sender, remove from receiver balance';\nexport const ALLOW_THE_RECEIVER_TO_KEEP =\n 'Allow the receiver to keep the trophies';\n\nexport const COPY_POST_LINK = 'Copy Post Link';\nexport const REMOVE_GIF = 'Remove GIF';\nexport const DELETE_POST = 'Delete Post';\nexport const EDIT_MY_ANSWERS = 'Edit my answers';\nexport const DELETE_POST_AND_ANSWER = 'Delete post and answers';\n\nexport const COPY_LINK = 'Copy Link';\nexport const DELETE_COMMENT = 'Delete Comment';\n\nexport const BOTTOM_OF_FEED_MESSAGE =\n 'This is the end of the feed. You can only go up from here.';\n\nconst getFeedTypeString = (feedType: FeedTypes) => {\n return feedType === FeedTypes.COMMENT ? COMMENT : POST;\n};\n\nconst getDisappearFromString = (feedType: FeedTypes) => {\n return feedType === FeedTypes.COMMENT ? POST : FEED;\n};\n\nexport const getDeleteFeedModelInfo = (feedType: FeedTypes) => {\n const feedTypeString = getFeedTypeString(feedType);\n const disappearFromString = getDisappearFromString(feedType);\n return {\n headerText: 'Are you sure?',\n contentHeading: `Delete this ${feedTypeString}.`,\n contentText: `When you delete this ${feedTypeString}, it will disappear from the ${disappearFromString}.`,\n };\n};\n\nexport const getDeleteFeedConfirmationModalInfo = (feedType: FeedTypes) => {\n const feedTypeString = getFeedTypeString(feedType);\n const capitalizedFeedTypeString = capitalizeFirstLetter(feedType);\n return {\n headerText: `Delete ${capitalizedFeedTypeString}`,\n contentHeading: `How do you want to handle the trophies given in this ${feedTypeString}?`,\n };\n};\n\nexport const GET_DELETE_FLOW_MODEL_INFO = {\n headerText: 'Delete Post',\n contentText:\n // eslint-disable-next-line max-len\n 'When you delete this post, it will disappear from the feed and all of your answers will be erased. You will be able to re-fill out this flow if the occurrence is still running or has a shortcut.',\n};\n\nexport const GET_DELETE_FLOW_CONFIRMATION_MODAL_INFO = {\n headerText: 'Delete Post',\n contentHeading: 'How do you want to handle the trophies given in this post?',\n};\n\n// Header\nexport const FAILED_TO_LOAD_MEMBER_COUNT = 'Failed to load member count';\nexport const MEMBERS = 'Members';\nexport const GO_TO_MAIN_FEED = 'Go to Main Feed';\n\nexport const SHOW_ALL = 'Show All';\n","import styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const DropdownItemContainer = styled.div<{\n isPrefixIconRequired?: boolean;\n disabled?: boolean;\n isSelected?: boolean;\n deleteItem?: boolean;\n disableHoverActions?: boolean;\n}>`\n white-space: nowrap;\n min-width: 158px;\n padding: 4px 8px;\n border-radius: ${({ isSelected }) => !isSelected && '4px'};\n background: ${ThemeV2.palette.gray1};\n display: flex;\n align-items: center;\n text-align: left;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n color: ${({ isSelected, disabled, deleteItem }) => {\n if (disabled) {\n return ThemeV2.palette.gray6;\n }\n if (deleteItem) {\n return ThemeV2.palette.dustRed6;\n }\n if (isSelected) {\n return ThemeV2.palette.geekBlue6;\n }\n return ThemeV2.palette.gray8;\n }};\n & > span {\n & > div:last-of-type {\n color: ${ThemeV2.palette.gray1};\n }\n }\n div:last-of-type {\n flex-grow: 1;\n color: currentColor;\n }\n\n ${({ disableHoverActions, disabled, deleteItem }) =>\n !disableHoverActions &&\n `\n &:hover {\n background: ${\n disabled ? ThemeV2.palette.gray1 : ThemeV2.palette.geekBlue1\n };\n color: ${\n // eslint-disable-next-line no-nested-ternary\n disabled\n ? ThemeV2.palette.gray6\n : deleteItem\n ? ThemeV2.palette.dustRed6\n : ThemeV2.palette.geekBlue6\n }\n }\n `};\n`;\n\nexport const PrefixContainer = styled.span<{ prefixIcon?: boolean }>`\n margin-right: 8px;\n height: ${({ prefixIcon }) => (prefixIcon ? '15px' : 'initial')};\n span {\n color: currentColor;\n & > svg {\n path {\n fill: currentColor;\n }\n }\n }\n`;\n","import React, { ReactNode, useCallback, useMemo, MouseEvent } from 'react';\nimport Body from '../../atoms/Body';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Avatar from '../../atoms/Avatar';\nimport { DropdownItemContainer, PrefixContainer } from './styles';\nimport AssemblyCurrencyIcon from '../../atoms/AssemblyCurrencyIcon';\nimport { AssemblyCurrency } from '../../../interfaces/assembly';\nimport { AvatarProps } from '../../atoms/Avatar/interfaces';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { Flex } from '../../../Utils/styles/display';\n\nexport interface DropdownItemProps {\n value: string;\n id: string | number;\n disabled?: boolean;\n isSelected?: boolean;\n deleteItem?: boolean;\n prefixIcon?: string;\n prefixImg?: string;\n onItemClick?: (id: string | number) => void;\n assemblyCurrency?: AssemblyCurrency;\n emoji?: string;\n className?: string;\n getItemLabel?: (value: string) => ReactNode;\n avatar?: AvatarProps;\n disableHoverActions?: boolean;\n helperText?: string;\n}\n\nconst DropdownItem = ({\n disabled,\n isSelected,\n deleteItem,\n value,\n prefixIcon,\n prefixImg,\n onItemClick,\n id,\n assemblyCurrency,\n emoji,\n className = '',\n getItemLabel,\n avatar,\n disableHoverActions,\n helperText,\n}: DropdownItemProps) => {\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (onItemClick && !disabled) {\n e.stopPropagation();\n onItemClick(id);\n }\n },\n [disabled, id, onItemClick],\n );\n\n const displayLabel = useMemo(() => {\n if (getItemLabel) {\n return getItemLabel(value);\n }\n return value;\n }, [getItemLabel, value]);\n\n const renderPrefix = useCallback(() => {\n if (avatar) {\n return (\n \n \n \n );\n }\n if (prefixImg) {\n return (\n \n \n \n );\n }\n if (prefixIcon) {\n return (\n \n \n \n );\n }\n if (assemblyCurrency) {\n return (\n \n \n \n );\n }\n if (emoji) {\n return {emoji};\n }\n return null;\n }, [assemblyCurrency, avatar, emoji, prefixIcon, prefixImg, value]);\n return (\n \n {renderPrefix()}\n \n \n {displayLabel}\n {isSelected && !disabled && (\n \n )}\n \n \n {helperText}\n \n \n \n );\n};\n\nexport default DropdownItem;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport const MERGE = 'MERGE';\nexport const IdentitySSO = {\n GSUITE: {\n ssoParam: 'gSuite',\n logo: 'gSuite-logo',\n displayName: 'G Suite',\n helperLink:\n 'https://www.joinassembly.com/articles/g-suite-connect-my-assembly-account-to-google-suite',\n },\n OFFICE365: {\n ssoParam: 'office365',\n logo: 'office365-logo',\n displayName: 'Office 365',\n helperLink:\n 'https://www.joinassembly.com/articles/office-365-connect-my-assembly-account-to-office-365',\n },\n ADP: {\n ssoParam: 'adp',\n logo: 'adp-logo',\n displayName: 'ADP',\n isUpgradeNeeded: true,\n helperLink:\n 'https://www.joinassembly.com/articles/adp-connect-my-assembly-account-to-adp',\n },\n SLACK: {\n ssoParam: 'slack',\n logo: 'slack-logo',\n displayName: 'Slack',\n helperLink:\n 'https://www.joinassembly.com/articles/slack-connect-my-assembly-account-to-slack-identity-provider',\n },\n MSTEAM: { ssoParam: 'msteam', logo: 'ms-teams', displayName: 'MS Teams' },\n BAMBOO: {\n ssoParam: 'bamboo',\n logo: 'bambooHR-logo',\n displayName: 'BambooHR',\n isUpgradeNeeded: true,\n helperLink:\n 'https://www.joinassembly.com/articles/bamboo-hr-connect-my-assembly-account-to-bamboo-hr',\n },\n [MERGE]: {\n ssoParam: 'merge',\n logo: '',\n displayName: '',\n isUpgradeNeeded: true,\n helperLink:\n 'https://www.joinassembly.com/articles/connect-my-assembly-to-an-hris',\n },\n};\n\nexport const getIdentityManagerDetails = (im, mergeDetails) => {\n if (im === 'MERGE' && mergeDetails) {\n return {\n ...IdentitySSO[im],\n logo: mergeDetails.logo || '',\n displayName: mergeDetails.displayName || mergeDetails.name || '',\n };\n }\n return IdentitySSO[im];\n};\n\nexport const isSSOAllowed = (sso) => {\n let result = false;\n Object.keys(IdentitySSO).forEach((key) => {\n const value = IdentitySSO[key];\n if (value.ssoParam === sso) {\n result = true;\n }\n });\n return result;\n};\n\nexport const getSSOIDByParam = (ssoParam) => {\n let result = null;\n Object.keys(IdentitySSO).forEach((key) => {\n const value = IdentitySSO[key];\n if (value.ssoParam === ssoParam) {\n result = key;\n }\n });\n return result;\n};\n\nexport const getSSOButtons = (identityManagers) => {\n const buttons = [];\n for (let j = 0; j < identityManagers.length; j += 1) {\n Object.keys(IdentitySSO).forEach((key) => {\n const sso = IdentitySSO[key];\n const identityManager = identityManagers[j];\n if (key === identityManager.id && key !== MERGE) {\n const { logo, ssoParam, ...rest } = sso;\n const buttonConfig = { id: key, logo, sso: ssoParam, ...rest };\n if (identityManager.integrationStatus === 'COMING_SOON') {\n buttonConfig.disabled = true;\n }\n buttons.push(buttonConfig);\n }\n });\n }\n return buttons;\n};\n","import { TreatmentsWithConfig } from '@splitsoftware/splitio/types/splitio';\nimport { useTreatments } from '@splitsoftware/splitio-react';\n\nexport const useFeatureSplit = (splitName: string) => {\n const treatmentObj: TreatmentsWithConfig = useTreatments([splitName]);\n return { treatment: treatmentObj[splitName]?.treatment };\n};\n","export const FLOWS_PREFERENCE_SETTINGS = {\n PREFERENCE_HEADING: 'Set who has permission to create new flows',\n PREFERENCE_SUB_TITLE: 'People who can create new flows',\n PREFERENCE_SELECT_HELPER_TEXT:\n 'Workspace Owners & Admins always have access.',\n UPGRADE_TEXT: 'Upgrade to edit',\n GIF_FORMAT_HEADING: 'Set GIF MMPA ratings',\n GIF_FORMAT_SUB_TITLE:\n 'GIFs from Giphy are rated according to appropriateness, similar to movies – we recommend PG-13 or lower',\n GIF_FORMAT_SELECT_LABEL: 'GIF’s MPAA Rating',\n};\n\nexport const FLOWS_PERMISSIONS_TEXTS = {\n FLOW_CREATION_PERMISSIONS_TITLE: 'Flow Creation Permissions',\n FLOW_CREATION_PERMISSIONS_SUBTITLE:\n 'Configure access to certain features while creating flows.',\n LEARN_MORE_TEXT: 'Learn more',\n LEARN_MORE_URL: '',\n UPGRADE_TEXT: 'Upgrade to edit',\n FLOW_PERMISSIONS_HELPER_TEXT: 'Workspace Owners & Admins always have access.',\n CREATE_FLOW_PERMISSIONS_TITLE: 'Set who has permission to create new flows',\n CREATE_FLOW_PERMISSIONS_SUBTITLE: 'People who can create new flows',\n ADD_EVERYONE_PERMISSION_TITLE:\n 'Set who has permission to add entire organization as a participant in a flow',\n ADD_EVERYONE_PERMISSION_SUBTITLE:\n 'Anyone who has this permission can select “Entire Organization” as a criteria for participation.',\n ADD_GIVE_POINTS_PERMISSION_TITLE:\n 'Set who has permission to add “Give Points” blocks to a flow',\n ADD_GIVE_POINTS_PERMISSION_SUBTITLE:\n 'Anyone with this permission can create a flow where participants are prompted to give points to others.',\n GIF_FORMAT_HEADING: 'Set GIF MMPA ratings',\n GIF_FORMAT_SUB_TITLE:\n 'GIFs from Giphy are rated according to appropriateness, similar to movies – we recommend PG-13 or lower',\n GIF_FORMAT_SELECT_LABEL: 'GIF’s MPAA Rating',\n PERMISSION_CHANGED_SUCCESSFULLY: 'Permissions updated!',\n PERMISSION_CHANGE_ERROR: 'Permissions not updated. Please try again.',\n};\n\nexport const CURRENCY_SETTINGS_TEXTS = {\n EMOJI_LABEL: 'Emoji',\n LABEL: 'Currency name, singular',\n HELPER_TEXT: 'Name should be singular and less than 22 characters',\n};\n","import React from 'react';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport accountManagementTypes from '../../identity/accountManagementTypes';\nimport Link from '../../../atomic/atoms/Link';\nimport routesList from '../../../aV2/routes/routesList';\nimport {\n accountManagementTypeLanguageMap,\n identityManagerSteps,\n} from './common';\n\nexport const stepsWizardTitle = 'Set up Office365 as your identity provider';\nexport const steps = [\n {\n id: identityManagerSteps.WHAT_IS_THIS,\n title: 'Connect',\n },\n {\n id: identityManagerSteps.SELECT_PEOPLE,\n title: 'Select People',\n },\n {\n id: identityManagerSteps.CONFIGURE_INVITES,\n title: 'Configure Invites',\n },\n {\n id: identityManagerSteps.CREATE_ACCOUNTS,\n title: 'Create Accounts',\n },\n];\n\nexport const introInfoItems = [\n {\n icon: 'api',\n badgeColor: ThemeV2.palette.cyan7,\n info: 'Connecting Office365 is a simple way of importing people from your business into Assembly.',\n },\n {\n icon: 'team',\n badgeColor: ThemeV2.palette.geekBlue6,\n info: 'Choose whether to import everyone or select specific people.',\n },\n {\n icon: 'sync',\n badgeColor: ThemeV2.palette.yellow2,\n info: \"When you add or remove people from Office365, we'll automatically add or remove them from Assembly.\",\n },\n {\n icon: 'idcard',\n badgeColor: ThemeV2.palette.brown,\n info: \"Update people's profile info in Office365 and we'll sync these changes on Assembly too.\",\n },\n];\n\nexport const introHeading = 'How does the Office365 connection work?';\nexport const introSecondHeading = 'Recommended permission requirements';\nexport const recommendation =\n 'We recommend that a Office 365 admin to connect Assembly with your Office 365 directory';\nexport const progressHeading =\n 'Assembly is gathering your team members, please give us a moment';\n\nexport const userSelectHeading = 'Who do you want to add from Office365? ';\nexport const userSelectSubHeading =\n \"We'll keep your details in sync if you choose an automated option\";\nexport const userSelectRadioGroupOptions = [\n {\n value: accountManagementTypes.ALL_USERS,\n label: 'Everyone that joins or leaves the Office 365 workspace',\n },\n {\n value: accountManagementTypes.GROUPS,\n label: `Anyone that joins or leaves a specific Office365 ${\n accountManagementTypeLanguageMap[accountManagementTypes.GROUPS]\n }`,\n },\n {\n value: accountManagementTypes.SELECTED_USERS,\n label: 'I want to manage all members manually on Assembly',\n },\n];\n\nexport const invitesHeading = 'Ready to send your invitations?';\nexport const invitesSubHeading = `Once accounts are created, you'll need to send invitations so\npeople can access Assembly. Decide whether to send these invitations now or later`;\nexport const invitesRadioGroupOptions = [\n {\n value: true,\n labelHeader: 'Send Invitations Now',\n label: ` – Send them now, and whenever someone is added to your Office365, they'll automatically\n be sent an invitation too.`,\n },\n {\n value: false,\n labelHeader: `I'll send them later`,\n label: ` – If you choose to send them later, we'll create the accounts and put the invitations\n in your Invites page, so you can send them when you're ready.`,\n },\n];\n\nexport const approvalHeading =\n 'Auto approve all new members or require invite and request approvals?';\nexport const approvalSubHeading = `When new members join your Office365 groups, we can either\nsend you and admins an approval email or we can immediately send the member an invite`;\nexport const approvalRadioGroupOptions = [\n {\n value: true,\n labelHeader: 'Auto approve new members',\n label: ` – When we see a new Office365 member that fits the correct criteria, we’ll send them an\n invite and they’ll have access when they accept`,\n },\n {\n value: false,\n labelHeader: `Admin approval only`,\n label: ` – When we see a new Office365 member that fits the correct criteria, we’ll send you and\n admins a request to explicitly approve first`,\n },\n];\n\nexport const createAccountsHeading = 'Creating your Assembly accounts';\nexport const createAccountsSubHeading = `This may take a while. You can leave this page and continue with other tasks.\n Invites will be sent once we’re done creating everyone’s account`;\nexport const createAccountsSubHeadingQueued = (\n <>\n This may take a while. You can leave this page and continue with other\n tasks. Go here to send out\n invitations for people to activate their new accounts when ready\n \n);\n\nexport const setupConfigurePopupHeading = 'Add Assembly to your channel tab';\nexport const setupConfigurePopupText =\n 'Get ready to celebrate your co-workers! Use Assembly in Microsoft Teams to give recognition and redeem rewards.';\n","import { format, getDate, getDay, getMonth, getYear } from 'date-fns';\nimport RRule, { Options } from 'rrule';\n\nimport { getWeekDetails, hasAllWeekDays } from '..';\n\n// eslint-disable-next-line max-len\nimport {\n FlowFrequencyOptions,\n GetRRuleStringProps,\n} from '../../../../controllers/flowsBuilder/FlowsBuilderTriggerController/ScheduleDateTimeController/types';\nimport { hasWeekDays } from '../flowFrequencyOptions';\n\n// needed to form the RRule\nexport const getDayNameRRule = (dayInNumber: number) => {\n switch (dayInNumber) {\n case 0:\n return RRule.MO;\n case 1:\n return RRule.TU;\n case 2:\n return RRule.WE;\n case 3:\n return RRule.TH;\n case 4:\n return RRule.FR;\n case 5:\n return RRule.SA;\n default:\n return RRule.SU;\n }\n};\n\n// just a util func to get dayName in a way ie required to form the RRuleString\nexport const getDayName = (date: Date | undefined) => {\n if (date !== undefined) {\n let dayInNumber = getDay(date);\n if (dayInNumber === 0) {\n dayInNumber = 6;\n } else {\n dayInNumber -= 1;\n }\n return getDayNameRRule(dayInNumber);\n }\n return null;\n};\n\n// just a util func to get time - made it as func since its been reused\nexport const getTime = (time: string | undefined) => {\n if (time !== undefined) {\n const timeArray = time.split(' ');\n const calculatedTime = timeArray[0];\n const hours = parseInt(calculatedTime.split(':')[0], 10);\n const minutes = parseInt(calculatedTime.split(':')[1], 10);\n\n if (timeArray[1] === 'pm' && hours !== 12) {\n return {\n hours: hours + 12,\n minutes,\n };\n }\n if (timeArray[1] === 'am' && hours === 12) {\n return {\n hours: 0,\n minutes,\n };\n }\n return {\n hours,\n minutes,\n };\n }\n return null;\n};\n\n// just a util func to get the date, month & year - made it as func since its been reused\nexport const getDateMonthYear = (receivedDate: Date | undefined) => {\n if (receivedDate !== undefined) {\n const date = getDate(receivedDate);\n const month = getMonth(receivedDate);\n const year = getYear(receivedDate);\n return {\n date,\n month,\n year,\n };\n }\n return null;\n};\n\n// to form the RRuleString\nexport const getRRuleString = (props: GetRRuleStringProps) => {\n const {\n flowStartDate,\n flowEndDate,\n flowFrequency,\n flowFrequencyTime,\n flowEndDateTime,\n selectedTimezone,\n selectedCustomRecurrenceTypes,\n } = props;\n\n const rruleOptions: Partial = {};\n if (flowStartDate) {\n const dayNumber = format(flowStartDate, 'd');\n const weekDetails = getWeekDetails(flowStartDate);\n const byWeekDay = getDayName(flowStartDate);\n\n if (selectedCustomRecurrenceTypes !== undefined) {\n rruleOptions.interval =\n selectedCustomRecurrenceTypes.repeatEveryCount > 1\n ? selectedCustomRecurrenceTypes.repeatEveryCount\n : 1;\n switch (selectedCustomRecurrenceTypes.repeatEvery) {\n case 'days': {\n rruleOptions.freq = RRule.DAILY;\n break;\n }\n case 'weeks': {\n const includeAllDays = hasAllWeekDays(\n selectedCustomRecurrenceTypes.selectedDayIds,\n );\n const onlyWeekDays = hasWeekDays(\n selectedCustomRecurrenceTypes.selectedDayIds,\n );\n rruleOptions.freq = RRule.WEEKLY;\n // all weekdays\n if (includeAllDays) {\n rruleOptions.byweekday = [\n RRule.SU,\n RRule.MO,\n RRule.TU,\n RRule.WE,\n RRule.TH,\n RRule.FR,\n RRule.SA,\n ];\n } else if (onlyWeekDays) {\n // only weekdays\n rruleOptions.byweekday = [\n RRule.MO,\n RRule.TU,\n RRule.WE,\n RRule.TH,\n RRule.FR,\n ];\n } else {\n rruleOptions.freq = RRule.WEEKLY;\n rruleOptions.byweekday =\n selectedCustomRecurrenceTypes.selectedDayIds.map((dayId) =>\n getDayNameRRule(dayId),\n );\n }\n break;\n }\n case 'years': {\n rruleOptions.freq = RRule.YEARLY;\n break;\n }\n default: {\n // repeatMonths\n rruleOptions.freq = RRule.MONTHLY;\n if (byWeekDay !== null && weekDetails !== undefined) {\n if (\n weekDetails.isLastWeek &&\n selectedCustomRecurrenceTypes.repeatOnMonth === 'repeatMonthlyOn'\n ) {\n rruleOptions.bysetpos = -1; // last day\n rruleOptions.byweekday = byWeekDay;\n } else if (\n selectedCustomRecurrenceTypes.repeatOnMonth === 'repeatMonthlyOn'\n ) {\n rruleOptions.byweekday = byWeekDay;\n rruleOptions.bysetpos = weekDetails.weekNumber; // ex. third THU\n } else if (\n selectedCustomRecurrenceTypes.repeatOnMonth === 'repeatMonthly'\n ) {\n rruleOptions.bymonthday = parseInt(dayNumber, 10);\n }\n }\n break;\n }\n }\n } else {\n if (flowFrequency?.id === FlowFrequencyOptions.ONCE) {\n rruleOptions.count = 1;\n }\n if (flowFrequency?.id === FlowFrequencyOptions.DAILY) {\n rruleOptions.freq = RRule.DAILY;\n }\n if (flowFrequency?.id === FlowFrequencyOptions.WEEKLY) {\n rruleOptions.freq = RRule.WEEKLY;\n if (byWeekDay !== null) {\n rruleOptions.byweekday = byWeekDay;\n }\n }\n if (flowFrequency?.id === FlowFrequencyOptions.MONTHLY) {\n rruleOptions.freq = RRule.MONTHLY;\n if (byWeekDay !== null && weekDetails !== undefined) {\n rruleOptions.byweekday = byWeekDay;\n rruleOptions.bysetpos =\n weekDetails.weekNumber === 5 ? -1 : weekDetails.weekNumber;\n }\n }\n if (flowFrequency?.id === FlowFrequencyOptions.MONTHLY_LAST) {\n rruleOptions.freq = RRule.MONTHLY;\n if (byWeekDay !== null) {\n rruleOptions.byweekday = byWeekDay;\n rruleOptions.bysetpos = -1; // for last day\n }\n }\n if (flowFrequency?.id === FlowFrequencyOptions.ANNUALLY) {\n rruleOptions.freq = RRule.YEARLY;\n }\n if (flowFrequency?.id === FlowFrequencyOptions.BIWEEKLY) {\n rruleOptions.freq = RRule.WEEKLY;\n rruleOptions.interval = 2;\n if (byWeekDay !== null) {\n rruleOptions.byweekday = byWeekDay;\n }\n }\n if (flowFrequency?.id === FlowFrequencyOptions.QUARTERLY) {\n rruleOptions.freq = RRule.MONTHLY;\n rruleOptions.interval = 3;\n if (byWeekDay !== null && weekDetails !== undefined) {\n rruleOptions.byweekday = byWeekDay;\n rruleOptions.bysetpos =\n weekDetails.weekNumber === 5 ? -1 : weekDetails.weekNumber;\n }\n }\n if (flowFrequency?.id === FlowFrequencyOptions.QUARTERLY_LAST) {\n rruleOptions.freq = RRule.MONTHLY;\n rruleOptions.interval = 3;\n if (byWeekDay !== null && weekDetails !== undefined) {\n rruleOptions.byweekday = byWeekDay;\n rruleOptions.bysetpos = -1; // for last day\n }\n }\n if (flowFrequency?.id === FlowFrequencyOptions.EVERY_WEEKDAY) {\n rruleOptions.freq = RRule.WEEKLY;\n rruleOptions.byweekday = [\n RRule.MO,\n RRule.TU,\n RRule.WE,\n RRule.TH,\n RRule.FR,\n ];\n }\n }\n\n if (selectedTimezone) {\n rruleOptions.tzid = selectedTimezone.id;\n }\n\n const flowStartDateTimeInfo = getTime(flowFrequencyTime?.title);\n const flowStartDateInfo = getDateMonthYear(flowStartDate);\n\n const flowEndDateTimeInfo = getTime(flowEndDateTime?.title);\n const flowEndDateInfo = getDateMonthYear(flowEndDate);\n\n if (flowStartDateInfo !== null && flowStartDateTimeInfo !== null) {\n rruleOptions.dtstart = new Date(\n Date.UTC(\n flowStartDateInfo.year,\n flowStartDateInfo.month,\n flowStartDateInfo.date,\n flowStartDateTimeInfo.hours,\n flowStartDateTimeInfo.minutes,\n ),\n );\n } else if (flowStartDateInfo !== null && flowStartDateTimeInfo === null) {\n rruleOptions.dtstart = new Date(\n Date.UTC(\n flowStartDateInfo.year,\n flowStartDateInfo.month,\n flowStartDateInfo.date,\n ),\n );\n }\n if (flowEndDateInfo !== null && flowEndDateTimeInfo !== null) {\n rruleOptions.until = new Date(\n Date.UTC(\n flowEndDateInfo.year,\n flowEndDateInfo.month,\n flowEndDateInfo.date,\n flowEndDateTimeInfo.hours,\n flowEndDateTimeInfo.minutes,\n ),\n );\n } else if (flowEndDateInfo !== null && flowEndDateTimeInfo === null) {\n rruleOptions.until = new Date(\n Date.UTC(\n flowEndDateInfo.year,\n flowEndDateInfo.month,\n flowEndDateInfo.date,\n ),\n );\n }\n }\n const rule = new RRule(rruleOptions);\n return rule;\n};\n","import { addHours } from 'date-fns';\nimport RRule from 'rrule';\n\nimport { AutocompleteDropdownItem } from '../../../../atomic/organism/Autocomplete/interfaces';\nimport {\n ScheduleRule,\n TriggerBuilderBlockData,\n} from '../../../../interfaces/Flow/Builder';\n\n// js converts the RRule time local time, so to convert that to UTC to get the actual time\n/* .padStart(2,0) is added in order to get 1:00 when the time is 1pm/am this\n applies for all round time like 8,9,6, etc,.\n*/\nexport const getUTCTimeFromDate = (date: Date) => {\n let hours = date.getUTCHours();\n let finalHours = hours.toString();\n const minutes = date.getUTCMinutes();\n if (hours === 12) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n finalHours = `${hours.toString()}:${minutes.toString().padStart(2, 0)} pm`;\n } else if (hours > 12) {\n hours -= 12;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n finalHours = `${hours.toString()}:${minutes.toString().padStart(2, 0)} pm`;\n } else if (hours === 0) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n finalHours = `12:${minutes.toString().padStart(2, 0)} am`;\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n finalHours = `${hours.toString()}:${minutes.toString().padStart(2, 0)} am`;\n }\n return finalHours;\n};\n\n// to get the actual date from RRule - for builder & edit\nexport const getUTCDateFromDate = (receivedDate: Date) => {\n const date = receivedDate.getUTCDate();\n const month = receivedDate.getUTCMonth();\n const year = receivedDate.getUTCFullYear();\n const utcDate = new Date(year, month, date);\n return utcDate;\n};\n\n// to get the default value for flowStartDate\nexport const getDefaultFlowStartDate = (schedule: ScheduleRule | undefined) => {\n if (schedule) {\n const parsedString = RRule.parseString(schedule.rule);\n if (parsedString.dtstart) {\n return getUTCDateFromDate(parsedString.dtstart);\n }\n }\n return addHours(new Date(), 2);\n};\n\n// get next full hour time - this code is moved to a separate function in order to cover the test case\nexport const getNextFullHour = (nextFullHour: number) => {\n let nextFullHourTimeString = '';\n if (nextFullHour === 12) {\n nextFullHourTimeString = `${nextFullHour.toString()}:00 pm`;\n } else if (nextFullHour === 24) {\n nextFullHourTimeString = `12:00 am`;\n } else if (nextFullHour === 25) {\n nextFullHourTimeString = `1:00 am`;\n } else if (nextFullHour > 12) {\n const updatedNextFullHour = nextFullHour - 12;\n nextFullHourTimeString = `${updatedNextFullHour.toString()}:00 pm`;\n } else if (nextFullHour === 0) {\n nextFullHourTimeString = `12:00 am`;\n } else {\n nextFullHourTimeString = `${nextFullHour.toString()}:00 am`;\n }\n return nextFullHourTimeString;\n};\nexport const getNextFullHourTimeInString = () => {\n const currentDateTime = new Date();\n const currentTime = currentDateTime.getHours();\n const nextFullHour = currentTime + 2;\n return getNextFullHour(nextFullHour);\n};\n\n// to get the default frequencyTime\nexport const getDefaultFlowFrequencyTime = (\n isFromTemplate: boolean,\n triggerBlockData: TriggerBuilderBlockData,\n flowFrequencyTimeOptions: AutocompleteDropdownItem[],\n) => {\n if (\n triggerBlockData?.triggerType === 'SCHEDULED' &&\n triggerBlockData?.schedule &&\n !isFromTemplate\n ) {\n const parsedString = RRule.parseString(triggerBlockData.schedule.rule);\n if (parsedString.dtstart) {\n const finalHours = getUTCTimeFromDate(parsedString.dtstart);\n const selectedTimeOption:\n | AutocompleteDropdownItem[]\n | null = flowFrequencyTimeOptions.filter(\n (flowFrequencyTimeOption) =>\n flowFrequencyTimeOption.title === finalHours,\n );\n if (selectedTimeOption.length === 0 || selectedTimeOption === undefined) {\n return flowFrequencyTimeOptions[0];\n }\n return selectedTimeOption[0];\n }\n return flowFrequencyTimeOptions[0];\n }\n\n const nextFullHourTimeInString = getNextFullHourTimeInString();\n const selectedTimeOption:\n | AutocompleteDropdownItem[]\n | null = flowFrequencyTimeOptions.filter(\n (flowFrequencyTimeOption) =>\n flowFrequencyTimeOption.title === nextFullHourTimeInString,\n );\n if (selectedTimeOption.length === 0 || selectedTimeOption === undefined) {\n return flowFrequencyTimeOptions[0];\n }\n return selectedTimeOption[0];\n};\n\n// to get the default flowEndDate\nexport const getDefaultFlowEndDate = (schedule: ScheduleRule | undefined) => {\n if (schedule) {\n const parsedString = RRule.parseString(schedule.rule);\n if (parsedString.until) {\n return getUTCDateFromDate(parsedString.until);\n }\n }\n return undefined;\n};\n\n// to get the default flowEndDateTime\nexport const getDefaultFlowEndDateTime = (\n triggerBlockData: TriggerBuilderBlockData,\n flowFrequencyTimeOptions: AutocompleteDropdownItem[],\n) => {\n if (\n triggerBlockData?.triggerType === 'SCHEDULED' &&\n triggerBlockData?.schedule\n ) {\n const parsedString = RRule.parseString(triggerBlockData.schedule.rule);\n if (parsedString.until) {\n const finalHours = getUTCTimeFromDate(parsedString.until);\n const selectedTimeOption:\n | AutocompleteDropdownItem[]\n | null = flowFrequencyTimeOptions.filter(\n (flowFrequencyTimeOption) =>\n flowFrequencyTimeOption.title === finalHours,\n );\n if (selectedTimeOption.length === 0 || selectedTimeOption === undefined) {\n return null;\n }\n return selectedTimeOption[0];\n }\n return null;\n }\n return null;\n};\n","import styled from 'styled-components';\n\nimport TextField from '../NewTextfield';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const StyledTextField = styled(TextField)`\n .MuiInputBase-root {\n &:hover {\n .MuiOutlinedInput-input {\n border-color: ${ThemeV2.palette.gray5};\n }\n }\n }\n .MuiInputBase-root.Mui-focused {\n .MuiOutlinedInput-input {\n border-color: ${ThemeV2.palette.geekBlue6};\n }\n }\n .MuiInputBase-root fieldset {\n border-color: ${ThemeV2.palette.gray7};\n }\n .MuiFormLabel-root.MuiInputLabel-root {\n color: ${ThemeV2.palette.gray9};\n }\n .MuiOutlinedInput-adornedStart {\n padding-left: 0;\n }\n .MuiOutlinedInput-input {\n padding-left: 12px;\n border-left: 1px solid ${ThemeV2.palette.gray7};\n }\n .MuiInputAdornment-positionStart {\n width: 72px;\n height: 100%;\n display: flex;\n align-items: center;\n padding: 8px 12px;\n margin: 0;\n justify-content: space-between;\n cursor: pointer;\n box-sizing: border-box;\n }\n .MuiInputAdornment-root {\n & svg {\n & > path:last-of-type {\n fill: ${ThemeV2.palette.gray9};\n }\n }\n }\n`;\n\nexport const StyledSVGIcon = styled(SVGIcon)`\n margin-left: 8px;\n`;\n","import React, { useCallback } from 'react';\nimport { FieldInputProps, FieldMetaProps, FormikErrors } from 'formik';\n\nimport Input from '../Input';\nimport { RadioOptionProps } from '../RadioGroup';\n\n// From Input/index.jsx\ntype FormikFieldType =\n | 'text'\n | 'textV2_text'\n | 'textV2_number'\n | 'textV2_password'\n | 'textV3_text'\n | 'textV3_number'\n | 'textV3_password'\n | 'textArea'\n | 'number'\n | 'password'\n | 'button'\n | 'submit'\n | 'dropdown'\n | 'dropdownWithMultiSelect'\n | 'textWithChips'\n | 'date'\n | 'radio'\n | 'checkbox'\n | 'textV3_text_emoticon_picker'\n | 'flowCheckbox'\n | 'singleSelectAutoComplete';\n\n// From node_modules/formik/dist/Formik.d.ts. Taken only required fields\nexport interface FormikType {\n values: Values;\n isValid: boolean;\n dirty: boolean;\n initialValues: Values;\n handleSubmit: (e?: React.FormEvent | undefined) => void;\n getFieldProps: (nameOrOptions: string) => FieldInputProps;\n getFieldMeta: (name: string) => FieldMetaProps;\n setFieldTouched: (\n field: string,\n touched?: boolean,\n shouldValidate?: boolean | undefined,\n ) => Promise> | Promise;\n setFieldValue: (\n field: string,\n value: any,\n shouldValidate?: boolean | undefined,\n ) => Promise> | Promise;\n}\n\nexport interface FormikFieldProps {\n formik: FormikType;\n name: string;\n type: FormikFieldType;\n value?: string | number | boolean | string[];\n helperText?: string;\n hasDropdown?: boolean;\n isMultiSelectEnable?: boolean;\n disableClearButton?: boolean;\n label?: string | React.ReactNode;\n placeholder?: string;\n disabled?: boolean;\n size?: string;\n radioOptions?: RadioOptionProps[];\n strength?: string;\n validationTexts?: {\n text: string;\n checked: boolean;\n }[];\n img?: string;\n autoFocus?: boolean;\n dropdownItems?: any;\n autoComplete?: string;\n}\n\nfunction FormikField({\n formik,\n name,\n type,\n value: fieldValue,\n helperText,\n isMultiSelectEnable,\n disableClearButton,\n dropdownItems,\n autoComplete,\n ...props\n}: FormikFieldProps) {\n const { getFieldProps, getFieldMeta, setFieldTouched, setFieldValue } =\n formik;\n const field = getFieldProps(name);\n const meta = getFieldMeta(name);\n const { onBlur, onChange, value: formValues } = field;\n const { error, touched } = meta;\n const value =\n type === 'button' || type === 'submit' ? fieldValue : formValues;\n const handleChange = useCallback(\n (valueOrEvent, secondArg) => {\n if (\n [\n 'dropdownWithMultiSelect',\n 'date',\n 'textV2_text',\n 'textV2_number',\n 'textV2_password',\n 'textV3_text_emoticon_picker',\n 'singleSelectAutoComplete',\n ].indexOf(type) !== -1\n ) {\n setFieldValue(name, valueOrEvent);\n setFieldTouched(name, true);\n } else if (['textWithChips'].indexOf(type) !== -1) {\n setFieldValue(name, secondArg);\n setFieldTouched(name, true);\n } else {\n onChange(valueOrEvent);\n }\n },\n [type, setFieldTouched, name, setFieldValue, onChange],\n );\n return (\n \n );\n}\n\nexport default FormikField;\n","import { useQuery } from 'react-query';\n\nimport { GET_JOB_STATUS } from '../../constants/endpoints';\nimport { ResponseError } from '../../interfaces/ResponseError';\nimport { makeAPICallWithDataReturn } from '../utils';\n\ninterface JobStatusResponse {\n data: { id: string; status: string };\n}\n\nexport const useJobStatusQuery = (jobId?: string) => {\n return useQuery(\n [GET_JOB_STATUS, jobId],\n () =>\n makeAPICallWithDataReturn(GET_JOB_STATUS, undefined, undefined, {\n jobId: jobId || '',\n }),\n {\n staleTime: Infinity,\n refetchInterval: 3000,\n enabled: jobId !== undefined,\n },\n );\n};\n\nexport interface MakeAPICallInterface {\n apiName: string;\n payload?: any;\n params?: Record;\n substitutions?: Record;\n}\n\nexport const useGenericAPIQuery = (\n api?: MakeAPICallInterface,\n enabled?: boolean,\n) => {\n return useQuery(\n api?.apiName || '',\n () =>\n makeAPICallWithDataReturn(\n api?.apiName || '',\n api?.payload,\n api?.params,\n api?.substitutions,\n ),\n {\n staleTime: Infinity,\n enabled,\n },\n );\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nconst AdminBreadCrumps = ({ thirdText, link, primaryText, secondaryText }) => {\n return (\n
\n {thirdText ? (\n <>\n {primaryText}\n {link ? (\n \n {' '}\n > \n \n {secondaryText}\n \n \n ) : (\n \n {' '}\n > {secondaryText}\n \n )}\n\n \n {' '}\n > {thirdText}\n \n \n ) : (\n <>\n {primaryText}\n \n {' '}\n > {secondaryText}\n \n \n )}\n
\n );\n};\n\nAdminBreadCrumps.propTypes = {\n primaryText: PropTypes.string.isRequired,\n secondaryText: PropTypes.string.isRequired,\n thirdText: PropTypes.string,\n link: PropTypes.string,\n};\n\nAdminBreadCrumps.defaultProps = {\n thirdText: null,\n link: null,\n};\n\nexport default AdminBreadCrumps;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport uuidv4 from 'uuid/v4';\n\nconst INITIAL_STATE = {\n name: '',\n email: '',\n department: [],\n status: '',\n allowanceType: '',\n isAdmin: '',\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nconst ADMIN_TABLE_INITIALIZE_FILTER = '@@ADMIN_TABLE/INITIALIZE_FILTER';\nconst ADMIN_TABLE_APPLY_FILTER = '@@ADMIN_TABLE/APPLY_FILTER';\nconst ADMIN_TABLE_REMOVE_FILTER = '@@ADMIN_TABLE/REMOVE_FILTER';\nconst ADMIN_TABLE_REMOVE_ALL_FILTERS =\n '@@ADMIN_TABLE/ADMIN_TABLE_REMOVE_ALL_FILTERS';\nconst ADMIN_TABLE_UPDATE_INPUT = '@@ADMIN_TABLE/UPDATE_INPUT';\nconst ADMIN_TABLE_RESET_INPUTS = '@@ADMIN_TABLE/RESET_INPUTS';\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case ADMIN_TABLE_INITIALIZE_FILTER: {\n const { tableName, defaultValues = {} } = action;\n return {\n ...state,\n currentTable: tableName,\n [tableName]: {\n filters: {},\n values: INITIAL_STATE,\n defaultValues,\n },\n };\n }\n case ADMIN_TABLE_RESET_INPUTS: {\n const { tableName } = action;\n return {\n ...state,\n [tableName]: { ...state[tableName], values: INITIAL_STATE },\n };\n }\n case ADMIN_TABLE_UPDATE_INPUT: {\n const { tableName, field, value } = action;\n const values = state[tableName] ? state[tableName].values : {};\n return {\n ...state,\n [tableName]: {\n ...state[tableName],\n values: { ...values, [field]: value },\n },\n };\n }\n case ADMIN_TABLE_APPLY_FILTER: {\n const { tableName, filter } = action;\n const filters = state[tableName] ? state[tableName].filters : {};\n const id = uuidv4();\n return {\n ...state,\n [tableName]: {\n ...state[tableName],\n filters: { ...filters, ...filter },\n id,\n },\n };\n }\n case ADMIN_TABLE_REMOVE_FILTER: {\n const { tableName, filter } = action;\n const filters = state[tableName] ? state[tableName].filters : {};\n const { [filter]: value, ...rest } = filters;\n const id = uuidv4();\n return {\n ...state,\n [tableName]: { ...state[tableName], filters: rest, id },\n };\n }\n case ADMIN_TABLE_REMOVE_ALL_FILTERS: {\n const { tableName } = action;\n const id = uuidv4();\n return {\n ...state,\n [tableName]: { ...state[tableName], filters: {}, id },\n };\n }\n default:\n return state;\n }\n};\n\nexport const initializeNewFilter = (tableName, defaultValues = {}) => ({\n type: ADMIN_TABLE_INITIALIZE_FILTER,\n tableName,\n defaultValues,\n});\n\nexport const resetFilterInputValues = (tableName) => ({\n type: ADMIN_TABLE_RESET_INPUTS,\n tableName,\n});\n\nexport const applyFilter = (tableName, filter) => ({\n type: ADMIN_TABLE_APPLY_FILTER,\n tableName,\n filter,\n});\n\nexport const removeFilter = (tableName, filter) => ({\n type: ADMIN_TABLE_REMOVE_FILTER,\n tableName,\n filter,\n});\n\nexport const removeAllFilters = (tableName) => ({\n type: ADMIN_TABLE_REMOVE_ALL_FILTERS,\n tableName,\n});\n\nexport const updateInput = (tableName, field, value) => ({\n type: ADMIN_TABLE_UPDATE_INPUT,\n tableName,\n field,\n value,\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport uuid from 'uuid';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport Papa from 'papaparse';\nimport readXlsxFile from 'read-excel-file';\nimport getter from './objectUtils/getter';\nimport { isValidEmail } from './validation';\n\nconst PLACEHOLDER_EMAIL = [\n 'tylersellers@joinassembly.com',\n 'racheljones@joinassembly.com',\n];\n\nexport const readXls = (data, employer) => {\n const XLSX = window.XLSX;\n if (!XLSX) {\n return;\n }\n const rABS = true;\n if (!rABS) data = new Uint8Array(data);\n const workbook = XLSX.read(data, {\n type: rABS ? 'binary' : 'array',\n cellDates: true,\n });\n const js = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {\n header: 1,\n }); // raw: true,\n const users = [];\n let noElementCount = 0;\n for (let i = 0; i < js.length; i++) {\n const row = js[i];\n if (row.length > 6) {\n noElementCount = 0;\n if (Number(i) === 0 && row[0] === 'first_name') {\n continue;\n } else {\n const firstName = row[0];\n const lastName = row[1];\n const email = row[2];\n if (\n email === 'bruce@wayneenterprise.com' ||\n email === 'rachel@gothamda.com'\n ) {\n continue;\n }\n const department = row[3];\n const statusValue = row[4];\n let status = 'normal';\n if (statusValue.includes('Giver')) {\n status = 'giver';\n } else if (statusValue.includes('Observer')) {\n status = 'observer';\n } else if (statusValue.includes('Receiver')) {\n status = 'receiver';\n }\n const regularAllowance = getter(['regularAllowance'], employer) || 200;\n const allowanceTypeValue = row[5];\n let allowanceType = 'regular';\n let customAllowance = 0;\n if (allowanceTypeValue !== regularAllowance) {\n allowanceType = 'custom';\n customAllowance = allowanceTypeValue;\n }\n\n const birthDate = moment(row[6], [\n 'MM-DD-YYYY',\n 'MM-DD-YY',\n 'MM/DD/YYYY',\n 'MM/DD/YY',\n ]).isValid()\n ? moment(row[6], [\n 'MM-DD-YYYY',\n 'DD-MM',\n 'DD-MM-YYYY',\n 'DD/MM/YYYY',\n 'MM/DD/YYYY',\n 'DD/MM/YY',\n 'MM/DD/YY',\n ]).format()\n : null;\n const hiredDate = moment(row[7], [\n 'MM-DD-YYYY',\n 'MM-DD-YY',\n 'MM/DD/YYYY',\n 'MM/DD/YY',\n ]).isValid()\n ? moment(row[7], [\n 'MM-DD-YYYY',\n 'DD-MM',\n 'DD-MM-YYYY',\n 'DD/MM/YYYY',\n 'MM/DD/YYYY',\n 'DD/MM/YY',\n 'MM/DD/YY',\n ]).format()\n : null;\n\n // else if (allowanceTypeValue.includes(\"No\")) {\n // allowanceType = \"no\";\n // }\n const isManager = row[8] === 'Yes';\n const isAdmin = row[9] === 'Yes';\n const managerEmail = row[10] ? row[10] : '';\n const externalUniqueId = row[11] ? row[11] : '';\n const _id = uuid();\n users.push({\n _id,\n email,\n firstName,\n lastName,\n department,\n status,\n allowanceType,\n customAllowance,\n birthDate,\n hiredDate,\n managerEmail,\n externalUniqueId,\n isAdmin,\n isManager,\n });\n }\n } else if (noElementCount < 10) {\n noElementCount++;\n } else {\n break;\n }\n }\n return users;\n};\n\nexport const writeToXLS = (data, sheetName, fileName) => {\n const XLSX = window.XLSX;\n if (!XLSX) {\n return;\n }\n const wb = XLSX.utils.book_new();\n const ws = XLSX.utils.json_to_sheet(data);\n wb.SheetNames.push(sheetName);\n wb.Sheets[sheetName] = ws;\n const wbout = XLSX.write(wb, {\n bookType: 'xlsx',\n bookSST: true,\n type: 'binary',\n });\n const url = window.URL.createObjectURL(\n new Blob([s2ab(wbout)], { type: 'application/octet-stream' }),\n );\n download(url, fileName);\n};\n\nconst s2ab = (s) => {\n const buf = new ArrayBuffer(s.length);\n const view = new Uint8Array(buf);\n for (let i = 0; i !== s.length; ++i) {\n view[i] = s.charCodeAt(i) & 0xff;\n }\n return buf;\n};\nconst download = (url, name) => {\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n a.click();\n\n window.URL.revokeObjectURL(url);\n};\n\nexport const importEmails = (file, successCallback) => {\n let emails = [];\n const fileType = file.name.slice(\n ((file.name.lastIndexOf('.') - 1) >>> 0) + 2,\n );\n\n switch (file.name.length > 0) {\n case fileType === 'csv':\n Papa.parse(file, {\n transform: (data) => {\n return data.trim();\n },\n complete: (results) => {\n const array = results.data.flat();\n emails = array.filter((email) => {\n if (PLACEHOLDER_EMAIL.includes(email)) {\n return false;\n }\n return isValidEmail(email);\n });\n emails = _.uniq(emails);\n successCallback(emails);\n },\n });\n break;\n case fileType === 'xlsx':\n readXlsxFile(file).then((mails) => {\n const emailsUploaded = [].concat.apply([], mails);\n emails = emailsUploaded.filter((email) => {\n if (PLACEHOLDER_EMAIL.includes(email)) {\n return false;\n }\n return isValidEmail(email);\n });\n emails = _.uniq(emails);\n successCallback(emails);\n });\n break;\n default:\n break;\n }\n return emails;\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { REWARD_TYPES } from '../../Utils/constants';\nimport { GIFT_CARD_TYPES } from '../../Utils/admin/rewards';\n\nexport const getCountryAndCurrenyCodes = (giftCards) => {\n const countries = [];\n const currencyCodes = [];\n giftCards.forEach((giftCard) => {\n if (giftCard.items.length > 0) {\n giftCard.items[0].countries.forEach((country) => {\n if (countries.indexOf(country) === -1 && country !== 'UK') {\n countries.push(country);\n }\n });\n if (currencyCodes.indexOf(giftCard.items[0].currencyCode) === -1) {\n currencyCodes.push(giftCard.items[0].currencyCode);\n }\n }\n });\n return { countries, currencyCodes };\n};\n\nconst filterFixedValueDenominations = (denominations, card) => {\n return denominations.filter((denom) => {\n let hasDenom = false;\n card.items.forEach((item) => {\n if (item.faceValue === denom.faceValue && item.utid === denom.utid) {\n hasDenom = true;\n }\n });\n return hasDenom;\n });\n};\n\nconst filterVariableValueDenominations = (denominations, card) => {\n return denominations.filter((denom) => {\n const item = card.items[0];\n let hasDenom = false;\n if (denom.faceValue >= item.minValue && denom.faceValue <= item.maxValue) {\n hasDenom = true;\n }\n return hasDenom;\n });\n};\n\nexport const getGiftCardsAndDonations = (cards) => {\n const giftCards = [];\n const donations = [];\n cards.forEach((cardVal) => {\n const card = { ...cardVal };\n if (card.items.length > 0) {\n const { rewardType, valueType } = card.items[0];\n if (valueType === GIFT_CARD_TYPES.FIXED) {\n card.denominations = filterFixedValueDenominations(\n card.denominations,\n card,\n );\n } else if (valueType === GIFT_CARD_TYPES.VARIABLE) {\n card.denominations = filterVariableValueDenominations(\n card.denominations,\n card,\n );\n }\n\n if (card.denominations.length > 0) {\n if (\n rewardType === REWARD_TYPES.GIFT_CARD ||\n rewardType === REWARD_TYPES.CASH_EQUIVALENT\n ) {\n giftCards.push(card);\n } else if (rewardType === REWARD_TYPES.DONATION) {\n donations.push(card);\n }\n }\n }\n });\n return { giftCards, donations };\n};\n\nexport const filterDenomsAgainstCardItems = (cards, employerRewards) => {\n const cardsDict = {};\n cards.forEach((card) => {\n if (!cardsDict[card.brandKey]) {\n cardsDict[card.brandKey] = card;\n }\n });\n return employerRewards.map((employerReward) => {\n const card = cardsDict[employerReward.brandKey];\n if (card) {\n const { valueType } = card.items[0];\n let { denominations } = employerReward;\n if (valueType === GIFT_CARD_TYPES.FIXED) {\n denominations = filterFixedValueDenominations(denominations, card);\n } else if (valueType === GIFT_CARD_TYPES.VARIABLE) {\n denominations = filterVariableValueDenominations(denominations, card);\n }\n return { ...employerReward, denominations };\n }\n return employerReward;\n });\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport _ from 'lodash';\nimport { API_URL_WITH_V2 } from '../../../config';\nimport { AuthHeaders } from '../../shared/HeaderToken';\nimport { adminProcessError, adminActions } from '../../Admin';\nimport Logger from '../../../Utils/Logger';\nimport {\n showSuccessMessage,\n showInfoMessage,\n showErrorMessage,\n} from '../../../Utils/flashHandler';\nimport {\n getCountryAndCurrenyCodes,\n filterDenomsAgainstCardItems,\n} from '../Utils';\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n CUSTOM_REWARD: `${API_URL_WITH_V2}/employer/rewards/custom`,\n GET_GIFTS_CATALOG: `${API_URL_WITH_V2}/employer/rewards/catalog`,\n SET_DENOMINATION_GIFT: `${API_URL_WITH_V2}/employer/rewards/catalog/denomination/set`,\n UNSET_DENOMINATION_GIFT: `${API_URL_WITH_V2}/employer/rewards/catalog/denomination/unset`,\n SET_ALL_DENOMINATION_GIFT: `${API_URL_WITH_V2}/employer/rewards/catalog/denomination/setall`,\n UNSET_ALL_DENOMINATION_GIFT: `${API_URL_WITH_V2}/employer/rewards/catalog/denomination/unsetall`,\n SET_ALL_CATALOG_GIFT: `${API_URL_WITH_V2}/employer/rewards/catalog/setAllCatalog`,\n UNSET_ALL_CATALOG_GIFT: `${API_URL_WITH_V2}/employer/rewards/catalog/unsetAllCatalog`,\n TOGGLE_GIFT_CARD: `${API_URL_WITH_V2}/employer/rewards/catalog/activate`,\n};\n\nexport const CATALOG_REQUEST_STATUS = {\n BLANK: 'BLANK',\n PENDING: 'PENDING',\n SUCCESS: 'SUCCESS',\n FAILED: 'FAILED',\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nconst GET_CULTURE_REWARDS_SUCCESS = 'GET_CULTURE_REWARDS_SUCCESS';\nexport const CREATE_CUSTOM_REWARD_SUCCESS = 'create_custom_reward_success';\nexport const EDIT_CUSTOM_REWARD_SUCCESS = 'edit_custom_reward_success';\nexport const DELETE_CUSTOM_REWARD_SUCCESS = 'delete_custom_reward_success';\nexport const GET_GIFT_CATALOG_SUCCESS = 'get_gift_catalog_success';\nconst GET_GIFT_CARDS_COUNTRIES_SUCCESS = 'GET_GIFT_CARDS_COUNTRIES_SUCCESS';\nconst GET_DONATIONS_COUNTRIES_SUCCESS = 'GET_DONATIONS_COUNTRIES_SUCCESS';\nconst GET_GIFT_CARD_CURRENCY_CODE_SUCCESS =\n 'GET_GIFT_CARD_CURRENCY_CODE_SUCCESS';\nexport const SET_GIFT_DENOMINATION_SUCCESS = 'set_gift_denomination_success';\nexport const TOGGLE_GIFT_CARD_SUCCRSS = 'toggle_gift_card_success';\nexport const REWARDS_MANAGE_REQUEST_FAILED = 'rewards_manage_request_failed';\nexport const UPDATE_CATATLOG_REQUEST_STATUS = 'UPDATE_CATATLOG_REQUEST_STATUS';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst getCultureRewardsSuccess = (rewards) => ({\n type: GET_CULTURE_REWARDS_SUCCESS,\n rewards,\n});\n\nconst createCustomRewardSuccess = (newReward) => ({\n type: CREATE_CUSTOM_REWARD_SUCCESS,\n newReward,\n});\nconst editCustomRewardSuccess = (reward) => ({\n type: EDIT_CUSTOM_REWARD_SUCCESS,\n reward,\n});\n\nconst deleteCustomRewardSuccess = (reward) => ({\n type: DELETE_CUSTOM_REWARD_SUCCESS,\n reward,\n});\n\nconst updateCatalogRequestStatus = (status) => ({\n type: UPDATE_CATATLOG_REQUEST_STATUS,\n status,\n});\n\nconst getGiftsCatalogSuccess = (payload) => ({\n type: GET_GIFT_CATALOG_SUCCESS,\n payload,\n});\nconst gotGiftCardCountries = (countries) => ({\n type: GET_GIFT_CARDS_COUNTRIES_SUCCESS,\n countries,\n});\n\nconst gotGiftCardCurrencyCodes = (currencyCodes) => ({\n type: GET_GIFT_CARD_CURRENCY_CODE_SUCCESS,\n currencyCodes,\n});\n\nconst gotDonationCountries = (countries) => ({\n type: GET_DONATIONS_COUNTRIES_SUCCESS,\n countries,\n});\nconst setGiftDenominationSuccess = (employerRewards) => ({\n type: SET_GIFT_DENOMINATION_SUCCESS,\n updatedEmployerRewards: employerRewards,\n});\n\nconst toggleGiftCardSuccess = (brandKey, isActive, denominations) => ({\n type: TOGGLE_GIFT_CARD_SUCCRSS,\n brandKey,\n isActive,\n denominations,\n});\nconst requestFailed = (errorMessage) => ({\n type: REWARDS_MANAGE_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const actions = {\n getCultureRewardsSuccess,\n getGiftsCatalogSuccess,\n updateCatalogRequestStatus,\n gotGiftCardCountries,\n gotDonationCountries,\n gotGiftCardCurrencyCodes,\n editCustomRewardSuccess,\n deleteCustomRewardSuccess,\n createCustomRewardSuccess,\n setGiftDenominationSuccess,\n toggleGiftCardSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getCultureRewards = () => async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.CUSTOM_REWARD, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(actions.getCultureRewardsSuccess(result.data));\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n};\n\nexport const createCustomRewardsAction = (props) => async (dispatch) => {\n try {\n dispatch(showInfoMessage('Creating culture reward...'));\n dispatch(\n actions.updateCatalogRequestStatus(CATALOG_REQUEST_STATUS.PENDING),\n );\n const res = await axios.post(\n apiEndpoints.CUSTOM_REWARD,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(showSuccessMessage('Culture reward created'));\n dispatch(\n actions.updateCatalogRequestStatus(CATALOG_REQUEST_STATUS.SUCCESS),\n );\n dispatch(actions.createCustomRewardSuccess(result.data));\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n dispatch(\n showErrorMessage(\n 'Sorry, please upload a 150x150 minimum image or greater',\n ),\n );\n dispatch(actions.updateCatalogRequestStatus(CATALOG_REQUEST_STATUS.BLANK));\n }\n};\nexport const editCustomRewardsAction = (props) => {\n Logger(props);\n return async (dispatch) => {\n try {\n dispatch(\n actions.updateCatalogRequestStatus(CATALOG_REQUEST_STATUS.PENDING),\n );\n dispatch(showInfoMessage('Editing reward...'));\n const res = await axios.put(\n `${apiEndpoints.CUSTOM_REWARD}/${props._id}`,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n dispatch(showSuccessMessage('Successfully edited the reward.'));\n dispatch(\n actions.updateCatalogRequestStatus(CATALOG_REQUEST_STATUS.SUCCESS),\n );\n dispatch(actions.editCustomRewardSuccess(result.data));\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\nexport const toggelCustomRewardsAction = (isActive, cultureRewardId) => {\n Logger(isActive);\n return async (dispatch) => {\n try {\n if (isActive) {\n dispatch(showInfoMessage('Turning on reward...'));\n } else {\n dispatch(showInfoMessage('Turning off reward...'));\n }\n\n const res = await axios.post(\n `${apiEndpoints.CUSTOM_REWARD}/${cultureRewardId}/activate`,\n {\n isActive,\n },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n if (isActive) {\n dispatch(showSuccessMessage('Successfully turned on reward.'));\n } else {\n dispatch(showSuccessMessage('Successfully turned off reward.'));\n }\n dispatch(actions.editCustomRewardSuccess(result.data));\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\nexport const deleteCustomRewardsAction = (props) => {\n const { _id } = props;\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Deleting reward...'));\n const res = await axios.delete(\n `${apiEndpoints.CUSTOM_REWARD}/${_id}`,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n dispatch(showSuccessMessage('Successfully deleted the reward.'));\n dispatch(actions.deleteCustomRewardSuccess(props));\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const getGitfsCatalogAction = () => async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.GET_GIFTS_CATALOG, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const { employer, donations } = result.data;\n let { giftCards } = result.data;\n giftCards = giftCards.filter((giftCard) => giftCard.items.length > 0);\n const denominations = filterDenomsAgainstCardItems(\n giftCards,\n result.data.employerRewards || [],\n );\n const giftCardDetails = getCountryAndCurrenyCodes(giftCards);\n const { countries, currencyCodes } = giftCardDetails;\n const donationCardDetails = getCountryAndCurrenyCodes(donations);\n const doantionCountries = donationCardDetails.countries;\n\n dispatch(actions.gotGiftCardCurrencyCodes(currencyCodes));\n dispatch(actions.gotGiftCardCountries(countries));\n dispatch(actions.gotDonationCountries(doantionCountries));\n\n dispatch(adminActions.gotMyEmployer(employer));\n dispatch(\n actions.getGiftsCatalogSuccess({ giftCards, donations, denominations }),\n );\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n};\nexport const setUnsetGitfDenominationAction = (props, set) => {\n const {\n utid,\n brandKey,\n faceValue,\n currencyCode,\n rewardType,\n isActive,\n countries,\n } = props;\n return async (dispatch) => {\n const data = {\n utid,\n brandKey,\n faceValue,\n currencyCode,\n rewardType,\n isActive,\n countries,\n };\n try {\n const res = await axios.post(\n set\n ? apiEndpoints.SET_DENOMINATION_GIFT\n : apiEndpoints.UNSET_DENOMINATION_GIFT,\n data,\n AuthHeaders(),\n );\n const result = res.data;\n\n Logger(result, true);\n if (result.success) {\n dispatch(actions.setGiftDenominationSuccess(result.data));\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\nexport const setUnsetAllGitfDenominationAction = (props, set) => {\n const { denominations, brandKey, isActive, countries, rewardType } = props;\n return async (dispatch) => {\n let data = {};\n if (set) {\n data = { denominations, brandKey, isActive, countries, rewardType };\n } else {\n data = { brandKey, isActive, countries, rewardType };\n }\n try {\n const res = await axios.post(\n set\n ? apiEndpoints.SET_ALL_DENOMINATION_GIFT\n : apiEndpoints.UNSET_ALL_DENOMINATION_GIFT,\n data,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(actions.setGiftDenominationSuccess(result.data));\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\nexport const setUnsetAllCatalogDenominationAction =\n (props, set, rewardType = 'gift card') =>\n async (dispatch) => {\n const data = props;\n try {\n if (set) {\n if (rewardType === 'donations') {\n dispatch(showInfoMessage('Turning all donations on...'));\n } else {\n dispatch(showInfoMessage('Turning all cards on...'));\n }\n } else if (!set) {\n if (rewardType === 'donations') {\n dispatch(showInfoMessage('Turning all donations off...'));\n } else {\n dispatch(showInfoMessage('Turning all cards off...'));\n }\n }\n const res = await axios.post(\n apiEndpoints.SET_ALL_CATALOG_GIFT,\n { data },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const employer = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n if (set) {\n if (rewardType === 'donations') {\n dispatch(showSuccessMessage('All donations turned on'));\n } else {\n dispatch(showSuccessMessage('All cards turned on'));\n }\n } else if (!set) {\n if (rewardType === 'donations') {\n dispatch(showSuccessMessage('All donations turned off'));\n } else {\n dispatch(showSuccessMessage('All cards turned off'));\n }\n }\n\n dispatch(actions.setGiftDenominationSuccess(employer.rewards.tango));\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\nexport const toggleGitfCardAction = (props) => {\n const { brandKey, isActive, denominations, rewardType, countries } = props;\n return async (dispatch) => {\n const data = {\n brandKey,\n isActive,\n denominations,\n rewardType,\n countries,\n };\n try {\n const res = await axios.post(\n apiEndpoints.TOGGLE_GIFT_CARD,\n data,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(\n actions.toggleGiftCardSuccess(brandKey, isActive, denominations),\n );\n } else {\n }\n } catch (error) {\n const message = adminProcessError(error, dispatch, actions);\n if (message) {\n dispatch(showErrorMessage(message));\n }\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case UPDATE_CATATLOG_REQUEST_STATUS: {\n return { ...state, catalogRequestStatus: action.status };\n }\n case GET_GIFT_CATALOG_SUCCESS: {\n const giftCardsArray = action.payload.giftCards;\n const donationsArray = action.payload.donations;\n const denominationArray = action.payload.denominations;\n // let { denominations, giftCards, donations } = action.payload;\n const giftCards = {};\n const donations = {};\n const denominations = {};\n giftCardsArray.forEach((card) => {\n if (!giftCards[card.brandKey]) {\n giftCards[card.brandKey] = card;\n }\n });\n donationsArray.forEach((card) => {\n if (!donations[card.brandKey]) {\n donations[card.brandKey] = card;\n }\n });\n denominationArray.forEach((denom) => {\n if (!denominations[denom.brandKey]) {\n denominations[denom.brandKey] = denom;\n }\n });\n return {\n ...state,\n giftCards: { ...state.giftCards, ...giftCards },\n donations: { ...state.donations, ...donations },\n denominations: { ...state.denominations, ...denominations },\n };\n }\n case GET_GIFT_CARDS_COUNTRIES_SUCCESS: {\n return { ...state, giftCardCountries: action.countries };\n }\n case GET_GIFT_CARD_CURRENCY_CODE_SUCCESS: {\n const exsistingCurrecyCodes = state.giftCardCurrencyCodes || [];\n action.currencyCodes.forEach((currencyCode) => {\n if (exsistingCurrecyCodes.indexOf(currencyCode) === -1) {\n exsistingCurrecyCodes.push(currencyCode);\n }\n });\n return { ...state, giftCardCurrencyCodes: [...exsistingCurrecyCodes] };\n }\n case GET_DONATIONS_COUNTRIES_SUCCESS: {\n return { ...state, donationCountries: action.countries };\n }\n case SET_GIFT_DENOMINATION_SUCCESS: {\n const { updatedEmployerRewards } = action;\n const denominations = {};\n updatedEmployerRewards.forEach((denom) => {\n if (!denominations[denom.brandKey]) {\n denominations[denom.brandKey] = denom;\n }\n });\n return {\n ...state,\n denominations: { ...state.denominations, ...denominations },\n };\n }\n case TOGGLE_GIFT_CARD_SUCCRSS: {\n let denomination = state.denominations[action.brandKey];\n denomination = {\n ...denomination,\n isActive: action.isActive,\n denominations: action.denominations,\n };\n return {\n ...state,\n denominations: {\n ...state.denominations,\n [action.brandKey]: denomination,\n },\n };\n }\n case GET_CULTURE_REWARDS_SUCCESS: {\n const rewardsArray = action.rewards || [];\n const cultureRewards = {};\n rewardsArray.forEach((card) => {\n if (!cultureRewards[card._id]) {\n cultureRewards[card._id] = card;\n }\n });\n return {\n ...state,\n cultureRewards: { ...state.cultureRewards, ...cultureRewards },\n };\n }\n case CREATE_CUSTOM_REWARD_SUCCESS: {\n const { cultureRewards } = state;\n const { newReward } = action;\n if (!cultureRewards[newReward._id]) {\n cultureRewards[newReward._id] = newReward;\n }\n return { ...state, cultureRewards: { ...cultureRewards } };\n }\n case EDIT_CUSTOM_REWARD_SUCCESS: {\n const { cultureRewards } = state;\n const { reward } = action;\n if (!cultureRewards[reward._id]) {\n cultureRewards[reward._id] = reward;\n } else {\n cultureRewards[reward._id] = {\n ...cultureRewards[reward._id],\n ...reward,\n };\n }\n return { ...state, cultureRewards: { ...cultureRewards } };\n }\n case DELETE_CUSTOM_REWARD_SUCCESS: {\n const { cultureRewards } = state;\n return {\n ...state,\n cultureRewards: _.omit(cultureRewards, [action.reward._id]),\n };\n }\n case REWARDS_MANAGE_REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport _ from 'lodash';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nfunction CarrotIcon(props) {\n // style={{ fontSize: 73 }}\n const { active, onClick, size, url, currency } = props;\n if (url) {\n const blendMode = active ? 'normal' : 'luminosity';\n if (url.type === 'emoji') {\n const emojiType = _.get(url, ['value', 'type'], 'REGULAR');\n if (emojiType === 'REGULAR') {\n return (\n \n {String.fromCodePoint(parseInt(url.value.hexCode, 16))}\n \n );\n }\n if (emojiType === 'CUSTOM') {\n return (\n \n );\n }\n }\n return (\n \n );\n }\n\n return (\n \n Gold\n Icon for gold\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default CarrotIcon;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2 } from '../../config';\nimport { AuthHeaders } from '../shared/HeaderToken';\nimport Logger from '../../Utils/Logger';\nimport { adminActions } from '../Admin';\nimport history from '../../history';\nimport {\n showSuccessMessage,\n showInfoMessage,\n showErrorMessage,\n} from '../../Utils/flashHandler';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n ACTIVATE_REWARDS_PAYMENT: `${API_URL_WITH_V2}/employer/rewards/setup/activate`,\n DEACTIVATE_REWARDS_PAYMENT: `${API_URL_WITH_V2}/employer/rewards/setup/deactivate`,\n REWARDS_PAYMENT_DETAILS: `${API_URL_WITH_V2}/employer/rewards/setup/details`,\n REWARDS_PAYMENT_SETUP_OVERVIEW: `${API_URL_WITH_V2}/employer/rewards/setup/overview`,\n REWARDS_PAYMENT_REVIEW: `${API_URL_WITH_V2}/employer/rewards/payment/card/review`,\n TOTALS_REPORT: `${API_URL_WITH_V2}/employer/employee/report`,\n REPORTS: `${API_URL_WITH_V2}/employer/employee/rewardsReport`,\n GET_TOTAL_EARNED_CARROTS: `${API_URL_WITH_V2}/employer/rewards/setup/totalEarned`,\n CLEAR_TOTAL_EARNED_CARROTS: `${API_URL_WITH_V2}/employer/rewards/setup/clearTotalEarned`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const PROCESS_PAYMENT_SUCCESS = 'paymentSuccess';\nexport const PROCESS_PAYMENT_ERROR = 'paymentFailure';\nexport const PROCESS_PAYMENT_RESET = 'paymentReset';\nexport const REWARDS_PAYMENT_REVIEW_SUCCESS = 'rewards_payment_review_success';\nexport const REWARDS_PAYMENT_SETUP_OVERVIEW_SUCCESS =\n 'rewards_payment_setup_overview_success';\nexport const REWARDS_BALANCE_SUCCESS = 'rewards_balance_success';\nexport const STORE_REWARDS_CREDIT_CARD = 'store_rewards_credit_card';\nexport const STORE_REWARDS_ALLOWANCE_CREDIT_CARD =\n 'store_rewards_allowance_credit_card';\nexport const GOT_TOTALS_REPORT = 'got_totals_report';\nexport const GOT_REWARDS_REPORT = 'GOT_REWARDS_REPORT';\nexport const GOT_TOTAL_EARNED_CARROTS = 'got_total_earned_carrots';\nexport const REQUEST_START_FRESH_SUCCESS = 'request_start_fresh_success';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst paymentSuccess = () => ({\n type: PROCESS_PAYMENT_SUCCESS,\n});\n\nconst paymentFailure = (error) => ({\n type: PROCESS_PAYMENT_ERROR,\n message: error.message,\n});\n\nconst paymentReset = () => ({\n type: PROCESS_PAYMENT_RESET,\n});\nconst rewardsPaymentsReviewSuccess = (paymentsReview) => ({\n type: REWARDS_PAYMENT_REVIEW_SUCCESS,\n paymentsReview,\n});\nconst gotTotalsReportSuccess = (report) => ({\n type: GOT_TOTALS_REPORT,\n report,\n});\n\nconst gotRewardsReportSuccess = (reports) => ({\n type: GOT_REWARDS_REPORT,\n reports,\n});\n// const storeRewardsCreditCard = (props) => {\n// const { billingAddress, creditCard, brand } = props;\n// return {\n// type: STORE_REWARDS_CREDIT_CARD,\n// billingAddress,\n// creditCard,\n// brand,\n// };\n// };\nconst storeRewardsAllowanceCreditCard = (props) => {\n const { allowanceInfo } = props;\n return {\n type: STORE_REWARDS_ALLOWANCE_CREDIT_CARD,\n allowanceInfo,\n };\n};\n\nconst gotPaymentSetupOverview = (overviewData) => ({\n type: REWARDS_PAYMENT_SETUP_OVERVIEW_SUCCESS,\n overviewData,\n});\n\nconst gotTotalEarnedCarrots = (totalCarrotsEarned) => ({\n type: GOT_TOTAL_EARNED_CARROTS,\n totalCarrotsEarned,\n});\n\nconst requestStartFreshSuccess = (success) => ({\n type: REQUEST_START_FRESH_SUCCESS,\n success,\n});\n\nexport const rewardsActions = {\n paymentSuccess,\n paymentFailure,\n paymentReset,\n gotPaymentSetupOverview,\n rewardsPaymentsReviewSuccess,\n // storeRewardsCreditCard,\n storeRewardsAllowanceCreditCard,\n gotTotalsReportSuccess,\n gotTotalEarnedCarrots,\n gotRewardsReportSuccess,\n requestStartFreshSuccess,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\n// export const proceedToReview = (props) => async (dispatch) => {\n// dispatch(rewardsActions.storeRewardsCreditCard(props));\n// history.push('/admin/billing/rewards/review');\n// };\n// export const proceedToSetAllowance = (props) => async (dispatch) => {\n// dispatch(rewardsActions.storeRewardsCreditCard(props));\n// history.push('/admin/billing/rewards/allowance');\n// };\nexport const proceedToReviewFromAllowance = (props) => async (dispatch) => {\n dispatch(rewardsActions.storeRewardsAllowanceCreditCard(props));\n history.push('/billing/rewards/review');\n};\nexport const proceedToHandleCurrentCarrotsFromAllowance =\n (props) => async (dispatch) => {\n dispatch(rewardsActions.storeRewardsAllowanceCreditCard(props));\n history.push('/billing/rewards/gold');\n };\n\nexport const activateRewardsPayment = (props) => async (dispatch) => {\n try {\n Logger(props);\n dispatch(showInfoMessage('Turning on Paid Allowance...'));\n\n const res = await axios.post(\n apiEndpoints.ACTIVATE_REWARDS_PAYMENT,\n props,\n AuthHeaders(),\n );\n\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('Paid allowance has been turned on.'));\n const { employer } = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n // history.push('/admin/billing/rewards');\n } else {\n // dispatch(actions.emailExists());\n }\n } catch (error) {\n dispatch(\n showErrorMessage(\n 'Whoops, looks like we’re experiencing network issues -- Try again.',\n ),\n );\n }\n};\nexport const deactivateRewardsPayment = (props) => async (dispatch) => {\n try {\n Logger(props);\n dispatch(showInfoMessage('Turning off paid allowance...'));\n\n const res = await axios.post(\n apiEndpoints.DEACTIVATE_REWARDS_PAYMENT,\n props,\n AuthHeaders(),\n );\n\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showInfoMessage('Paid allowance has been turned off.'));\n const { employer } = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n // history.push('/admin/billing/rewards');\n } else {\n // dispatch(actions.emailExists());\n }\n } catch (error) {\n dispatch(\n showErrorMessage(\n 'Whoops, looks like we’re experiencing network issues -- Try again.',\n ),\n );\n }\n};\nexport const getRewardsPaymentDetails =\n () =>\n // const {isActive} = props;\n async (dispatch) => {\n try {\n const res = await axios.get(\n apiEndpoints.REWARDS_PAYMENT_DETAILS,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(adminActions.gotPaymentDetails(result.data));\n }\n } catch (error) {\n return;\n }\n };\nexport const getRewardsSetupOverview =\n (expectedDefaultAllowance = null) =>\n // const {isActive} = props;\n async (dispatch) => {\n let url = apiEndpoints.REWARDS_PAYMENT_SETUP_OVERVIEW;\n if (expectedDefaultAllowance) {\n url = `${apiEndpoints.REWARDS_PAYMENT_SETUP_OVERVIEW}?expectedRegularAllowance=${expectedDefaultAllowance}`;\n }\n try {\n const res = await axios.get(url, AuthHeaders());\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(rewardsActions.gotPaymentSetupOverview(result.data));\n }\n } catch (error) {\n return;\n }\n };\n\n// export const processRewardsCreditCard = (props, isUpdate = false) => async (dispatch) => {\n// if (props.error) {\n// // dispatch(actions.paymentFailure(props.error));\n// return;\n// }\n// try {\n// Logger(props);\n// dispatch(showInfoMessage('Saving rewards payment...'));\n// let res;\n// if (isUpdate) {\n// Logger('calling update');\n// res = await axios.put(\n// apiEndpoints.UPLOAD_REWARDS_PAYMENT,\n// props,\n// AuthHeaders(),\n// );\n// } else {\n// res = await axios.post(\n// apiEndpoints.UPLOAD_REWARDS_PAYMENT,\n// props,\n// AuthHeaders(),\n// );\n// }\n\n// const result = res.data;\n// Logger(result);\n// if (result.success) {\n// dispatch(showSuccessMessage('Payment method has been updated'));\n// const { employer } = result.data;\n// dispatch(adminActions.gotMyEmployer(employer));\n// history.push('/admin/billing/rewards');\n// } else {\n// // dispatch(actions.emailExists());\n// }\n// } catch (error) {\n// dispatch(showErrorMessage('Whoops, looks like we’re experiencing network issues -- Try again.'));\n// /* Handle the error response */\n// const responseData = error.response.data;\n// Logger(responseData);\n// if (responseData) {\n// // const msg = processErrorResponse(responseData);\n// dispatch(rewardsActions.paymentFailure(error));\n// if (responseData.code === 100) {\n\n// } else {\n// // @vijay\n// // dispatch the failure with error msg, which will be converted to string\n// }\n// } else {\n// // @vijay\n// // dispatch the failure with msg as server error\n// }\n// }\n// };\n// export const toggleRewardsCard = (props) => {\n// const { isActive } = props;\n// return async (dispatch) => {\n// try {\n// if (!isActive) {\n// dispatch(showInfoMessage('Turning off payment...'));\n// } else {\n// dispatch(showInfoMessage('Turning on payment...'));\n// }\n// const res = await axios.post(\n// apiEndpoints.TOGGLE_REWARDS_PAYMENT,\n// props,\n// AuthHeaders(),\n// );\n// const result = res.data;\n// Logger(result);\n// if (result.success) {\n// if (!isActive) {\n// dispatch(getRewardsBalance());\n// dispatch(showSuccessMessage('Card and payment for rewards has been turned off'));\n// } else {\n// dispatch(showSuccessMessage('Card and payment for rewards has been turned on'));\n// }\n// const { employer } = result.data;\n// dispatch(adminActions.gotMyEmployer(employer));\n// }\n// } catch (error) {\n\n// }\n// };\n// };\nexport const getRewardsTotalsReportAction = (props) => {\n const { startDate, endDate } = props;\n // const {isActive} = props;\n return async (dispatch) => {\n dispatch(showInfoMessage('Fetching total reports...'));\n try {\n const res = await axios.get(\n `${apiEndpoints.TOTALS_REPORT}?startDate=${startDate}&endDate=${endDate}`,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('Got the reports'));\n dispatch(rewardsActions.gotTotalsReportSuccess(result.data));\n }\n } catch (error) {\n return;\n }\n };\n};\n\nexport const getRewardsReportAction = () => {\n // const { startDate, endDate } = props;\n // const {isActive} = props;\n return async (dispatch) => {\n dispatch(showInfoMessage('Fetching Rewards Report...'));\n try {\n const res = await axios.get(apiEndpoints.REPORTS, AuthHeaders());\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('Got the reports'));\n dispatch(rewardsActions.gotRewardsReportSuccess(result.data));\n }\n } catch (error) {\n return;\n }\n };\n};\n\n// export const getRewardsBalance = () =>\n// // const {isActive} = props;\n// async (dispatch) => {\n// try {\n// const res = await axios.get(\n// apiEndpoints.REWARDS_BALANCE,\n// AuthHeaders(),\n// );\n// const result = res.data;\n// Logger(result);\n// if (result.success) {\n// const { account } = result.data;\n// }\n// } catch (error) {\n\n// }\n// };\nexport const getRewardsPaymentReview = () => async (dispatch) => {\n try {\n const res = await axios.get(\n apiEndpoints.REWARDS_PAYMENT_REVIEW,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n const paymentsReview = {\n estPrePaymentNextMonth: result.data.estPrePaymentNextMonth,\n firstMonthPayment: result.data.firstMonthPayment,\n monthlyBalance: result.data.monthlyBalance,\n numberOfEmployees: result.data.numberOfEmployees,\n };\n dispatch(rewardsActions.rewardsPaymentsReviewSuccess(paymentsReview));\n }\n } catch (error) {\n return;\n }\n};\nexport const getTotalEarnedCarrots = () => async (dispatch) => {\n try {\n const res = await axios.get(\n apiEndpoints.GET_TOTAL_EARNED_CARROTS,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(rewardsActions.gotTotalEarnedCarrots(result.data.totalEarned));\n // dispatch(rewardsActions.gotTotalEarnedCarrots(1000));\n }\n } catch (error) {\n return;\n }\n};\nexport const requestStartFresh = (props) => async (dispatch) => {\n try {\n dispatch(showInfoMessage('Clearing earned carrots for all users...'));\n const res = await axios.post(\n apiEndpoints.CLEAR_TOTAL_EARNED_CARROTS,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(rewardsActions.requestStartFreshSuccess('success'));\n dispatch(showSuccessMessage('Cleared all carrots'));\n }\n } catch (error) {\n return;\n }\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case PROCESS_PAYMENT_SUCCESS:\n return { ...state, payment_status: true, error: '' };\n case PROCESS_PAYMENT_ERROR:\n return {\n ...state,\n payment_status: false,\n error: action.message || 'Card Error',\n };\n case PROCESS_PAYMENT_RESET:\n return { ...state, payment_status: false, error: '' };\n case REWARDS_PAYMENT_REVIEW_SUCCESS:\n return { ...state, paymentsReview: action.paymentsReview };\n case GOT_TOTALS_REPORT:\n return { ...state, totalsReport: action.report };\n case GOT_REWARDS_REPORT:\n return { ...state, reports: action.reports };\n case STORE_REWARDS_CREDIT_CARD:\n return {\n ...state,\n billingAddress: action.billingAddress,\n creditCard: action.creditCard,\n brand: action.brand,\n };\n case STORE_REWARDS_ALLOWANCE_CREDIT_CARD:\n return { ...state, allowanceInfo: action.allowanceInfo };\n case GOT_TOTAL_EARNED_CARROTS: {\n // asvk hack to handle resetCarrots\n const existingTotalCarrotsEarned = state.totalCarrotsEarned;\n if (existingTotalCarrotsEarned > 0) {\n if (action.totalCarrotsEarned === 0) {\n return { ...state };\n }\n }\n return { ...state, totalCarrotsEarned: action.totalCarrotsEarned };\n }\n case REWARDS_PAYMENT_SETUP_OVERVIEW_SUCCESS:\n return { ...state, overviewData: action.overviewData };\n case REQUEST_START_FRESH_SUCCESS:\n return { ...state, startFreshRequestStatus: action.success };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport _ from 'lodash';\nimport { API_URL_WITH_V2, API_URL_WITH_V3, SOURCE } from '../../config';\nimport { adminProcessError } from '../Admin';\nimport Logger from '../../Utils/Logger';\nimport { AuthHeaders } from '../shared/HeaderToken';\nimport { showSuccessMessage, showInfoMessage } from '../../Utils/flashHandler';\nimport { addSourceToURL } from '../../Utils/api';\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n INVITE_USERS: `${API_URL_WITH_V2}/employer/employee/invite`,\n INVITE_USERS_V3: `${API_URL_WITH_V3}/assembly/members/invite`,\n INVITE_USERS_EDIT_V3: `${API_URL_WITH_V3}/assembly/members/invite/edit`,\n INVITE_USERS_CREATE_V3: `${API_URL_WITH_V3}/assembly/members/invite/create`,\n INVITE_USERS_EMAILS: `${API_URL_WITH_V2}/employer/employee/invite/emails`,\n APPROVE_INVITED_USERS: `${API_URL_WITH_V3}/assembly/members/invite/approve`,\n DELETE_INVITED_USERS: `${API_URL_WITH_V3}/assembly/members/invite/reject`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const ADD_INVITED_USERS_SUCCESS = 'add_invited_users_success';\nexport const GET_INVITED_USERS_SUCCESS = 'get_invited_users_success';\nexport const UPDATE_INVITED_USER_SUCCESS = 'update_invited_users_success';\nexport const UPDATE_INVITED_USERS_SUCCESS = 'update_bulk_invited_users_success';\nexport const DELETE_INVITED_USER_SUCCESS = 'delete_invited_users_success';\nexport const USER_REQUEST_FAILED = 'user_request_failed';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst addInvitedUsersSuccess = (users) => ({\n type: ADD_INVITED_USERS_SUCCESS,\n users,\n});\n\nconst getInvitedUsersSuccess = (users) => ({\n type: GET_INVITED_USERS_SUCCESS,\n users,\n});\nconst updateInvitedUserSuccess = (user) => ({\n type: UPDATE_INVITED_USER_SUCCESS,\n user,\n});\n\nconst updateInvitedUsersSuccess = (invites) => ({\n type: UPDATE_INVITED_USERS_SUCCESS,\n invites,\n});\n\nconst deleteInvitedUserSuccess = (userId) => ({\n type: DELETE_INVITED_USER_SUCCESS,\n userId,\n});\nconst requestFailed = (errorMessage) => ({\n type: USER_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const actions = {\n getInvitedUsersSuccess,\n updateInvitedUserSuccess,\n addInvitedUsersSuccess,\n deleteInvitedUserSuccess,\n updateInvitedUsersSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getInviteUsersAction = (cb) => {\n Logger('getInviteUsersAction', false);\n return async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.INVITE_USERS_V3, AuthHeaders());\n const result = res.data;\n\n Logger('getInvitedUsersSuccess');\n Logger(result);\n if (result) {\n cb(true);\n dispatch(actions.getInvitedUsersSuccess(result.data));\n } else {\n cb(true);\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const uploadInviteUserAction = (props) => {\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Inviting user(s)...'));\n const res = await axios.post(\n addSourceToURL(apiEndpoints.INVITE_USERS_CREATE_V3, SOURCE),\n { data: props },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result && result.addedMembers.length > 0) {\n dispatch(showSuccessMessage('User(s) has been invited'));\n dispatch(actions.addInvitedUsersSuccess(result.addedMembers));\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const updateInvitedUsersAction = (props) => {\n const data = props;\n Logger(props);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Updating users...'));\n const res = await axios.post(\n apiEndpoints.INVITE_USERS_EDIT_V3, //eslint-disable-line\n {\n data,\n },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result && result.errors.length === 0) {\n dispatch(showSuccessMessage('Users has been updated'));\n dispatch(actions.updateInvitedUsersSuccess(result.updatedData));\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const approveQueuedInvitedUsersAction = (props) => {\n const user = props;\n\n let submitJob = false;\n if (user.length > 10) {\n submitJob = true;\n }\n const data = {\n userInviteIds: user,\n submitJob,\n };\n Logger(props);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Approving invites...'));\n const res = await axios.post(\n `${apiEndpoints.APPROVE_INVITED_USERS}`, //eslint-disable-line\n data,\n AuthHeaders(),\n );\n const result = res.data.status;\n Logger(res);\n if (result === 'QUEUED') {\n dispatch(showSuccessMessage('Invite(s) will get approved soon!'));\n } else {\n dispatch(showSuccessMessage('Invite(s) has been approved!'));\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const deleteQueuedInvitedUsersAction = (props) => {\n const data = {\n memberIds: props,\n };\n Logger(props);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Deleting invites...'));\n const res = await axios.post(\n `${apiEndpoints.DELETE_INVITED_USERS}`,\n data,\n AuthHeaders(),\n );\n const result = res.data.status;\n Logger(result);\n dispatch(getInviteUsersAction());\n dispatch(showSuccessMessage('User invite(s) has been deleted!'));\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const remindInviteUserAction = (props) => {\n const user = props;\n Logger(`remindInviteUserAction ${user}`, true);\n Logger(user, true);\n const name = `${user.profile.firstName} ${user.profile.lastName}`;\n\n return async (dispatch) => {\n try {\n const res = await axios.get(\n `${apiEndpoints.INVITE_USERS_V3}/${user.memberId}/sendreminder`,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n dispatch(showSuccessMessage(`We have sent an email to ${name}`));\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const approveInviteUserAction = (props, cb, overideCb) => {\n const userId = props;\n Logger(`approveInviteUserAction ${userId}`, true);\n // const name = `${user.firstName} ${user.lastName}`;\n\n return async (dispatch) => {\n try {\n const res = await axios.post(\n apiEndpoints.APPROVE_INVITED_USERS,\n {\n userInviteIds: [userId],\n submitJob: false,\n },\n AuthHeaders(),\n );\n const result = res.data;\n const { invites } = result;\n const { memberId, profile, memberState, stateUpdatedBy } = invites[0];\n const { lastName, firstName } = profile;\n const approvedUserDetails = {\n firstName,\n lastName,\n _id: memberId,\n };\n Logger(result);\n if (memberState === 'ACTIVE') {\n // dispatch(actions.updateInvitedUserSuccess(approvedUserDetails));\n cb(true, approvedUserDetails);\n } else if (memberState === 'DEACTIVATED') {\n overideCb(approvedUserDetails, stateUpdatedBy);\n }\n // if (result.success) {\n // const { userInvite, status } = result.data;\n // if (status === 'ERROR_APPROVING_INVITE') {\n // const { stateUpdatedBy } = result.data;\n // overideCb(userInvite, stateUpdatedBy);\n // } else {\n // dispatch(actions.updateInvitedUserSuccess(approvedUserDetails));\n // cb(true, approvedUserDetails);\n // }\n // } else {\n // }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const approveOverrideInviteUserAction = (props, cb) => {\n const userId = props;\n Logger(`approveInviteUserAction ${userId}`, true);\n // const name = `${user.firstName} ${user.lastName}`;\n\n return async (dispatch) => {\n try {\n const res = await axios.post(\n `${apiEndpoints.INVITE_USERS}/${userId}/approve`,\n {\n forceOverride: true,\n },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n const { userInvite } = result.data;\n dispatch(actions.updateInvitedUserSuccess(userInvite));\n cb(true);\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport const denyInviteUserAction = (props, cb) => {\n const user = props;\n Logger(`denyInviteUserAction ${user}`, true);\n // const name = `${user.firstName} ${user.lastName}`;\n\n return async (dispatch) => {\n try {\n const res = await axios.post(\n `${apiEndpoints.DELETE_INVITED_USERS}`,\n { memberIds: [user] },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result) {\n // dispatch(actions.updateInvitedUserSuccess(result.data.userInvite));\n cb(true);\n } else {\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case ADD_INVITED_USERS_SUCCESS: {\n const users = state.users ? state.users : [];\n return {\n ...state,\n users: [...users, ...action.users],\n };\n }\n case GET_INVITED_USERS_SUCCESS:\n return { ...state, users: action.users };\n case UPDATE_INVITED_USER_SUCCESS: {\n const stateUsers = _.get(state, 'users', []);\n return {\n ...state,\n users: stateUsers.map((user) => {\n if (user._id === action.user._id) {\n return {\n ...user,\n ...action.user,\n };\n }\n return user;\n }),\n };\n }\n\n case UPDATE_INVITED_USERS_SUCCESS: {\n const udpatedUsers = action.invites;\n const stateUsers = _.get(state, 'users', []);\n const users = stateUsers.map((user) => {\n const updatedUser = udpatedUsers.find(\n (u) => user.memberId === u.memberId,\n );\n if (updatedUser) {\n return { ...updatedUser };\n }\n return user;\n });\n return { ...state, users };\n }\n case DELETE_INVITED_USER_SUCCESS:\n return {\n ...state,\n users: state.users.filter((user) => user._id !== action.userId),\n };\n case USER_REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport ThemeV2 from '../../theme';\n\nconst styles = {\n modalCloseButton: {\n position: 'absolute',\n top: 15,\n right: 15,\n cursor: 'pointer',\n padding: '5px',\n '& svg': {\n '& path': {\n fill: ThemeV2.palette.lightGray1,\n transition: '0.3s ease',\n },\n },\n '&:hover': {\n '& svg': {\n '& path': {\n fill: ThemeV2.palette.darkGray3,\n },\n },\n },\n },\n};\n\nclass CloseButton extends Component {\n render() {\n const { classes, onClick, ...rest } = this.props;\n return (\n
\n \n \n \n
\n );\n }\n}\n\nexport default withStyles(styles)(CloseButton);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport default (hash) => Object.keys(hash || {}).map((key) => hash[key]);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2 } from '../../../config';\nimport { AuthHeaders } from '../../shared/HeaderToken';\nimport { adminProcessError, adminActions } from '../../Admin';\nimport Logger from '../../../Utils/Logger';\nimport {\n showSuccessMessage,\n showInfoMessage,\n} from '../../../Utils/flashHandler';\n\nconst apiEndpoints = {\n BIRTHDAY: `${API_URL_WITH_V2}/employer/rewards/birthday`,\n BIRTHDAY_DEACTIVATE: `${API_URL_WITH_V2}/employer/rewards/birthday/deactivate`,\n ANNIVERSARY: `${API_URL_WITH_V2}/employer/rewards/anniversary`,\n ANNIVERSARY_DEACTIVATE: `${API_URL_WITH_V2}/employer/rewards/anniversary/deactivate`,\n};\n\nexport const ACTIVATION_STATUS = {\n BLANK: 'blank',\n ACTIVATING: 'activating',\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const FETCH_BIRTHDAY_SUCCESS = 'FETCH_BIRTHDAY_SUCCESS';\nexport const ACTIVATE_BIRTHDAY_SUCCESS = 'ACTIVATE_BIRTHDAY_SUCCESS';\nexport const ACTIVATE_ANNIVERSARY_SUCCESS = 'ACTIVATE_ANNIVERSARY_SUCCESS';\nexport const ANNIVERSARY_REQUEST_FAILED = 'ANNIVERSARY_REQUEST_FAILED';\nexport const ANNIVERSARY_ACTIVIATION_STATUS = 'ANNIVERSARY_ACTIVIATION_STATUS';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nconst fetchBirthdaySuccess = (birthdayAllowance) => ({\n type: FETCH_BIRTHDAY_SUCCESS,\n birthdayAllowance,\n});\n\nconst activateBithdaySuccess = () => ({\n type: ACTIVATE_BIRTHDAY_SUCCESS,\n});\n\nconst activateAnniversarySuccess = (reward) => ({\n type: ACTIVATE_ANNIVERSARY_SUCCESS,\n reward,\n});\n\nconst updateActivationStatus = (status) => ({\n type: ANNIVERSARY_ACTIVIATION_STATUS,\n status,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: ANNIVERSARY_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const anniversaryActions = {\n fetchBirthdaySuccess,\n activateBithdaySuccess,\n activateAnniversarySuccess,\n updateActivationStatus,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\nexport const fetchBirthday = () => async (dispatch) => {\n Logger('fetchBirthday');\n try {\n const res = await axios.get(apiEndpoints.BIRTHDAY, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const { employer } = result.data;\n dispatch(\n anniversaryActions.fetchBirthdaySuccess(\n employer.birthdayAllowance || null,\n ),\n );\n }\n } catch (error) {\n adminProcessError(error, dispatch, anniversaryActions);\n }\n};\n\nexport const activateBirthday =\n (props, isUpdate = false) =>\n async (dispatch) => {\n Logger(props);\n try {\n const message = isUpdate\n ? 'Updating birthday allowance...'\n : 'Activating birthday allowance...';\n dispatch(showInfoMessage(message));\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.ACTIVATING),\n );\n const res = await axios.post(apiEndpoints.BIRTHDAY, props, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const { employer } = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n // dispatch(anniversaryActions.fetchBirthdaySuccess(employer.birthdayAllowance || null));\n // dispatch(fetchBirthday());\n const successMessage = isUpdate\n ? 'Birthday allowance updated.'\n : 'Birthday allowance activated.';\n dispatch(showSuccessMessage(successMessage));\n }\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n } catch (error) {\n adminProcessError(error, dispatch, anniversaryActions);\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n }\n };\n\nexport const deactivateBirthday = () => async (dispatch) => {\n Logger('deactivateBirthday');\n try {\n dispatch(showInfoMessage('Deactivating birthday allowance...'));\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.ACTIVATING),\n );\n const res = await axios.post(\n apiEndpoints.BIRTHDAY_DEACTIVATE,\n {},\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n if (result.success) {\n const { employer } = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n dispatch(\n anniversaryActions.fetchBirthdaySuccess(\n employer.birthdayAllowance || null,\n ),\n );\n dispatch(showSuccessMessage('Birthday allowance has been deactivated.'));\n }\n } catch (error) {\n adminProcessError(error, dispatch, anniversaryActions);\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n }\n};\n\nexport const activateAnniversary =\n (props, isUpdate = false) =>\n async (dispatch) => {\n Logger(props);\n try {\n const message = isUpdate\n ? 'Updating anniversary allowance...'\n : 'Activating anniversary allowance...';\n dispatch(showInfoMessage(message));\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.ACTIVATING),\n );\n const res = await axios.post(\n apiEndpoints.ANNIVERSARY,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n const { employer } = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n const successMessage = isUpdate\n ? 'Anniversary allowance updated.'\n : 'Anniversary allowance activated.';\n dispatch(showSuccessMessage(successMessage));\n }\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n } catch (error) {\n adminProcessError(error, dispatch, anniversaryActions);\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n }\n };\n\nexport const deactivateAnniversary = () => async (dispatch) => {\n Logger('deactivateAnniversary');\n try {\n dispatch(showInfoMessage('Deactivating anniversary allowance...'));\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.ACTIVATING),\n );\n const res = await axios.post(\n apiEndpoints.ANNIVERSARY_DEACTIVATE,\n {},\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, true);\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n if (result.success) {\n const { employer } = result.data;\n dispatch(adminActions.gotMyEmployer(employer));\n dispatch(\n showSuccessMessage('Anniversary allowance has been deactivated.'),\n );\n }\n } catch (error) {\n adminProcessError(error, dispatch, anniversaryActions);\n dispatch(\n anniversaryActions.updateActivationStatus(ACTIVATION_STATUS.BLANK),\n );\n }\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (\n state = { activationStatus: ACTIVATION_STATUS.BLANK },\n action,\n) => {\n switch (action.type) {\n case FETCH_BIRTHDAY_SUCCESS:\n return { ...state, birthday: action.birthdayAllowance };\n case ACTIVATE_BIRTHDAY_SUCCESS:\n return { ...state };\n case ANNIVERSARY_ACTIVIATION_STATUS:\n return { ...state, activationStatus: action.status };\n default:\n return state;\n }\n};\n","import React, { useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport BasicModalTemplate from '../../templates/BasicModalTemplate';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport RadioGroup, { RadioOptionProps } from '../../molecules/RadioGroup';\nimport {\n selectTierHeading,\n selectTierSubHeadingHeader,\n selectTierSubHeading,\n selectTierPrimaryButtonText,\n upgradePlanIntegrationInfo,\n} from '../../../Utils/data/planUpgradeModal';\n\nconst useStyles = makeStyles({\n heading: {\n marginBottom: '16px',\n },\n subHeading: {\n marginBottom: '24px',\n },\n integrationInfo: {\n marginBottom: '16px',\n },\n});\n\nexport interface PlanUpgradeSelectTierModalProps {\n heading: string;\n onNextClick(): void;\n radioOptionsData: RadioOptionProps[];\n tier: string;\n tierNames: {\n tier1: string;\n tier2: string;\n tier3: string;\n tier4: string;\n };\n onRadioChange(value: string): void;\n onModalClose(): void;\n isButtonsLoading: boolean;\n showIntegrationSubText?: boolean;\n}\n\nconst PlanUpgradeSelectTierModal = (props: PlanUpgradeSelectTierModalProps) => {\n const classes = useStyles(props);\n const {\n heading: templateHeading,\n onNextClick,\n radioOptionsData,\n tier,\n onRadioChange,\n onModalClose,\n isButtonsLoading,\n tierNames,\n showIntegrationSubText = false,\n } = props;\n const handleRadioChange = useCallback(\n (e) => {\n const { value } = e.target;\n onRadioChange(value);\n },\n [onRadioChange],\n );\n const primaryButton = {\n text: selectTierPrimaryButtonText,\n isLoading: isButtonsLoading,\n onClick: onNextClick,\n };\n return (\n \n \n {selectTierHeading(\n tierNames.tier1,\n tierNames.tier2,\n tierNames.tier3,\n tierNames.tier4,\n )}\n \n {showIntegrationSubText && (\n
\n {upgradePlanIntegrationInfo}\n
\n )}\n
\n \n {selectTierSubHeadingHeader}\n \n \n {selectTierSubHeading(\n tierNames.tier2,\n tierNames.tier3,\n tierNames.tier4,\n )}\n \n
\n \n \n );\n};\n\nexport default PlanUpgradeSelectTierModal;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n CardNumberElement,\n CardExpiryElement,\n CardCvcElement,\n} from '@stripe/react-stripe-js';\n\nimport BasicModalTemplate from '../../templates/BasicModalTemplate';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport Button from '../../atoms/Button';\nimport InfoAlert from '../../molecules/InfoAlert';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { CARD_OPTIONS } from './styles';\nimport Input from '../../molecules/Input';\nimport {\n addPaymentSubHeading,\n addPaymentSubHeadingHeader,\n addPaymentHeading,\n addPaymentSecondaryButtonText,\n addPaymentPrimaryButtonText,\n upgradeReviewInputPlaceholders,\n} from '../../../Utils/data/planUpgradeModal';\n\nconst useStyles = makeStyles({\n heading: {\n marginBottom: '16px',\n },\n subHeading: {\n marginBottom: '24px',\n },\n errorInfoAlert: {\n width: 'auto',\n marginBottom: '16px',\n },\n expirationFieldRow: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n },\n promoCodeField: {\n display: 'flex',\n width: '100%',\n marginBottom: '-16px !important',\n '& >span': {\n width: '100%',\n },\n '& Button': {\n marginLeft: '16px',\n },\n },\n input: {\n fontFamily: 'Roboto, Menlo, monospace',\n fontWeight: 'normal',\n fontSize: '16px',\n border: `1px solid ${ThemeV2.palette.gray5}`,\n color: ThemeV2.palette.darkText,\n borderRadius: '3px',\n marginBottom: '16px',\n width: 'auto',\n '& ::placeholder': {\n fontFamily: 'Roboto, Menlo, monospace',\n fontWeight: 'normal',\n fontSize: '16px',\n color: ThemeV2.palette.gray6,\n opacity: '1',\n },\n },\n cardInput: {\n padding: '11px',\n '&.StripeElement--focus': {\n boxShadow: '0px 0px 4px rgba(24, 144, 255, 0.5)',\n borderColor: ThemeV2.palette.geekBlue5,\n },\n '&.StripeElement--invalid': {\n borderColor: ThemeV2.palette.red6,\n },\n },\n cardExpiryInput: {\n width: '50%',\n marginRight: '16px',\n },\n cardCVCInput: {\n width: '50%',\n },\n});\n\nexport interface PlanUpgradeAddPaymentModalProps {\n heading: string;\n onNextClick(): void;\n onNevermindClick(): void;\n onModalClose(): void;\n error: string | null;\n setError(error: string | null): void;\n name?: string;\n setName(name: string): void;\n promoCode?: string;\n setPromoCode(promoCode: string): void;\n promoCodeError: boolean;\n promoCodeHelperText?: string;\n onApplyClick(): void;\n isButtonsLoading: boolean;\n}\n\nconst PlanUpgradeAddPaymentModal = (props: PlanUpgradeAddPaymentModalProps) => {\n const classes = useStyles(props);\n const {\n heading: templateHeading,\n onNextClick,\n onNevermindClick,\n onModalClose,\n error,\n setError,\n name,\n setName,\n promoCode,\n setPromoCode,\n promoCodeError,\n promoCodeHelperText,\n onApplyClick,\n isButtonsLoading,\n } = props;\n\n const primaryButton = {\n text: addPaymentPrimaryButtonText,\n isLoading: isButtonsLoading,\n onClick: onNextClick,\n };\n const secondaryButton = {\n text: addPaymentSecondaryButtonText,\n disabled: isButtonsLoading,\n onClick: onNevermindClick,\n };\n return (\n \n \n {addPaymentHeading}\n \n
\n \n {addPaymentSubHeadingHeader}\n \n \n {addPaymentSubHeading}\n \n
\n {error && (\n setError(null),\n onCloseKeyPress: () => setError(null),\n }}\n />\n )}\n {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n }\n ) =>\n setName(event.target.value)\n }\n className={classes.input}\n />\n \n
\n \n \n
\n {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n }\n
\n \n ) =>\n setPromoCode(event.target.value)\n }\n error={promoCodeError}\n helperText={promoCodeHelperText}\n className={classes.input}\n />\n \n \n
\n \n );\n};\n\nexport default PlanUpgradeAddPaymentModal;\n","import React, { useCallback, useState } from 'react';\nimport { Token } from '@stripe/stripe-js';\nimport { loadStripe } from '@stripe/stripe-js/pure';\nimport {\n CardNumberElement,\n Elements,\n useStripe,\n useElements,\n} from '@stripe/react-stripe-js';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { STRIPE_PUBLISHABLE } from '../../config';\nimport {\n requiredName,\n genericAddCardError,\n requiredPromoCode,\n} from '../../Utils/data/planUpgradeModal/errorMessages';\nimport { applyPromoCodeAction } from '../../modules/Checkout';\nimport PlanUpgradeAddPaymentModal from '../../atomic/organism/PlanUpgradeAddPaymentModal';\n\ninterface PlanUpgradeAddPaymentModalContainerProps {\n heading: string;\n onNextClick({\n token,\n name,\n promoCode,\n }: {\n token: Token;\n name: string;\n promoCode?: string;\n }): void;\n onNevermindClick(): void;\n onModalClose(): void;\n}\n\nconst Container = (props: PlanUpgradeAddPaymentModalContainerProps) => {\n const {\n heading: templateHeading,\n onNextClick,\n onNevermindClick,\n onModalClose,\n } = props;\n const stripe = useStripe();\n const elements = useElements();\n const dispatch = useDispatch();\n const { promoCodeError, promoCodeSuccess } = useSelector((state) => ({\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n promoCodeError: state.checkout.promoCodeError,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n promoCodeSuccess: state.checkout.promoCodeSuccess,\n }));\n const [name, setName] = useState('');\n const [promoCode, setPromoCode] = useState('');\n const [error, setError] = useState(null);\n const [isAddPaymentLoading, setAddPaymentLoading] = useState(false);\n const getStripeToken = useCallback(\n async (callback: (token: Token) => void) => {\n if (stripe && elements) {\n const cardElement = elements.getElement(CardNumberElement);\n if (cardElement) {\n setAddPaymentLoading(true);\n const { error: createTokenError, token } = await stripe.createToken(\n cardElement,\n );\n setAddPaymentLoading(false);\n if (createTokenError) {\n const { message } = createTokenError;\n setError(message || genericAddCardError);\n } else if (token) {\n callback(token);\n }\n }\n }\n },\n [elements, stripe],\n );\n\n const handleApplyClick = useCallback(() => {\n setError(null);\n if (promoCode !== '') {\n dispatch(applyPromoCodeAction(promoCode));\n } else {\n setError(requiredPromoCode);\n }\n }, [dispatch, promoCode]);\n\n const handleNextClick = useCallback(async () => {\n setError(null);\n if (!name) {\n setError(requiredName);\n return;\n }\n if (promoCodeSuccess) {\n getStripeToken((token) => {\n onNextClick({ token, name, promoCode });\n });\n } else {\n getStripeToken((token) => {\n onNextClick({ token, name });\n });\n }\n }, [name, promoCodeSuccess, getStripeToken, onNextClick, promoCode]);\n\n return (\n \n );\n};\n\nconst PlanUpgradeAddPaymentModalContainer = (\n props: PlanUpgradeAddPaymentModalContainerProps,\n) => {\n const [stripePromise] = useState(loadStripe(STRIPE_PUBLISHABLE));\n return (\n \n \n \n );\n};\n\nexport default PlanUpgradeAddPaymentModalContainer;\n","export const requiredName = 'Name is Required';\nexport const requiredPromoCode = 'Please enter Promo Code';\nexport const genericAddCardError = 'Error adding credit card';\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport BasicModalTemplate from '../../templates/BasicModalTemplate';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport {\n upgradeReviewPrimaryButtonText,\n upgradeReviewSecondaryButtonText,\n upgradeReviewHeading,\n upgradeReviewSubHeadingHeader,\n getUpgradeReviewSubHeading,\n upgradeReviewPlanHeading,\n getUpgradeReviewCardLast4DigitsDetail,\n getUpgradeReviewTeamMembersDetail,\n} from '../../../Utils/data/planUpgradeModal';\n\nconst useStyles = makeStyles({\n heading: {\n marginBottom: '16px',\n },\n subHeading: {\n marginBottom: '24px',\n },\n listTitle: {\n color: ThemeV2.palette.darkText,\n },\n ul: {\n paddingLeft: '16px',\n },\n li: {\n marginBottom: '0px',\n '& .div': {\n color: ThemeV2.palette.darkText,\n },\n },\n});\n\nexport interface PlanUpgradeReviewModalProps {\n heading: string;\n onNextClick(): void;\n onNevermindClick(): void;\n onModalClose(): void;\n isButtonsLoading: boolean;\n newPlanName: string;\n renewalDate: string;\n price: string;\n cardLast4Digits: string;\n teamMembersString: string;\n}\n\nconst PlanUpgradeReviewModal = (props: PlanUpgradeReviewModalProps) => {\n const classes = useStyles(props);\n const {\n heading: templateHeading,\n onNextClick,\n onNevermindClick,\n onModalClose,\n isButtonsLoading,\n newPlanName,\n renewalDate,\n price,\n cardLast4Digits,\n teamMembersString,\n } = props;\n const primaryButton = {\n text: upgradeReviewPrimaryButtonText,\n isLoading: isButtonsLoading,\n onClick: onNextClick,\n };\n const secondaryButton = {\n text: upgradeReviewSecondaryButtonText,\n disabled: isButtonsLoading,\n onClick: onNevermindClick,\n };\n return (\n \n \n {upgradeReviewHeading}\n \n
\n \n {upgradeReviewSubHeadingHeader}\n \n \n {getUpgradeReviewSubHeading({\n newPlanName,\n renewalDate,\n price,\n })}\n \n
\n \n {upgradeReviewPlanHeading}\n \n
    \n
  • \n \n {getUpgradeReviewCardLast4DigitsDetail(cardLast4Digits)}\n \n
  • \n
  • \n \n {getUpgradeReviewTeamMembersDetail(teamMembersString)}\n \n
  • \n
\n \n );\n};\n\nexport default PlanUpgradeReviewModal;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport moment from 'moment';\nimport { Token } from '@stripe/stripe-js';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport useFetch from '../../hooks/useFetch';\nimport {\n SWITCH_ACCOUNT_PREVIEW,\n SWITCH_ACCOUNT,\n} from '../../hooks/useFetch/endpoints';\nimport {\n ApiResponseSuccess,\n ApiResponseError,\n} from '../../interfaces/identityManager/common';\nimport PlanUpgradeSelectTierModal from '../../atomic/organism/PlanUpgradeSelectTierModal';\nimport PlanUpgradeAddPaymentModalContainer from '../PlanUpgradeAddPaymentModalContainer';\nimport {\n templateHeading,\n tiersRadioOptions,\n} from '../../Utils/data/planUpgradeModal';\nimport PlanUpgradeReviewModal from '../../atomic/organism/PlanUpgradeReviewModal';\nimport Modal from '../../atomic/atoms/Modal';\nimport LoadingPulse from '../../screens/shared/LoadingPulse';\nimport { getCurrentPlanRequest } from '../../modules/admin/billing/account';\nimport { getAllPlans } from '../../modules/admin/billing/account/selector';\nimport { showErrorMessage } from '../../Utils/flashHandler';\n\ninterface PlanUpgradeModalContainerProps {\n onModalClose(): void;\n showIntegrationSubText?: boolean;\n}\n\ninterface PlanUpgradeModalCardDetails {\n selectedTier: string;\n token: Token;\n name: string;\n promoCode: string;\n}\n\ninterface PreviewPlanUpgrade {\n newPlanName: string;\n activeEmployeeCount: number;\n renewalDate: string;\n price: string;\n teamMembersString: string;\n}\n\nconst PlanUpgradeModalContainer = (props: PlanUpgradeModalContainerProps) => {\n const { onModalClose, showIntegrationSubText = false } = props;\n const dispatch = useDispatch();\n const availablePlans = useSelector(getAllPlans);\n const tiersRadioOptionsData = tiersRadioOptions(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n availablePlans.tier4,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n availablePlans.tier3,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n availablePlans.tier2,\n );\n const tierNames = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tier1: availablePlans.tier1.name,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tier2: availablePlans.tier2.name,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tier3: availablePlans.tier3.name,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tier4: availablePlans.tier4.name,\n };\n const defaultTier = tiersRadioOptionsData[0].value;\n const [selectedTier, setSelectedTier] = useState(defaultTier);\n const [planUpgradeDetails, setPlanUpgradeDetails] =\n useState | null>(null);\n const [previewPlanUpgrade, setPreviewPlanUpgrade] =\n useState(null);\n const [isReviewButtonsLoading, setIsReviewButtonsLoading] =\n useState(false);\n\n const cardLast4Digits = planUpgradeDetails?.token?.card?.last4 || '';\n\n const handleError = useCallback(\n (error: ApiResponseError) => {\n const { message } = error;\n dispatch(showErrorMessage(message));\n },\n [dispatch],\n );\n\n const onGetSwitchAccountPreview = useCallback(\n (response: ApiResponseSuccess) => {\n const newPlanName = response?.data?.data?.preview?.plan?.name || '';\n const activeEmployeeCount =\n response?.data?.data?.preview?.activeEmployeeCount || 0;\n const renewalDate = moment().add(1, 'month').format('MMMM D, YYYY');\n const currency = '$';\n const price =\n currency +\n response?.data?.data?.preview?.stripePreview?.subscriptionCost;\n const teamMembersString = `${activeEmployeeCount} team member${\n activeEmployeeCount !== 1 ? 's' : ''\n }`;\n setPreviewPlanUpgrade({\n newPlanName,\n activeEmployeeCount,\n renewalDate,\n price,\n teamMembersString,\n });\n },\n [],\n );\n\n const { makeRequest: getSwitchAccountPreview } = useFetch({\n apiEndpoint: SWITCH_ACCOUNT_PREVIEW,\n onSuccess: onGetSwitchAccountPreview,\n onFailure: handleError,\n });\n\n useEffect(() => {\n getSwitchAccountPreview({ data: { planUniqueId: selectedTier } });\n }, [getSwitchAccountPreview, selectedTier]);\n\n const handleSelectTierNextClick = useCallback(() => {\n setPlanUpgradeDetails({ ...planUpgradeDetails, selectedTier });\n }, [planUpgradeDetails, selectedTier]);\n\n const handleAddPaymentNextClick = useCallback(\n ({ token, name, promoCode }) => {\n setPlanUpgradeDetails({\n ...planUpgradeDetails,\n selectedTier,\n token,\n name,\n promoCode,\n });\n },\n [planUpgradeDetails, selectedTier],\n );\n\n const handleAddPaymentNevermindClick = useCallback(() => {\n setPlanUpgradeDetails({ ...planUpgradeDetails, selectedTier: undefined });\n }, [planUpgradeDetails]);\n\n const onSwitchAccountSuccess = useCallback(() => {\n dispatch(getCurrentPlanRequest());\n onModalClose();\n setIsReviewButtonsLoading(false);\n }, [dispatch, onModalClose]);\n\n const onSwitchAccountFailure = useCallback(\n (error: ApiResponseError) => {\n setIsReviewButtonsLoading(false);\n handleError(error);\n },\n [handleError],\n );\n\n const { makeRequest: switchAccount } = useFetch({\n apiEndpoint: SWITCH_ACCOUNT,\n onSuccess: onSwitchAccountSuccess,\n onFailure: onSwitchAccountFailure,\n });\n\n const handleReviewNextClick = useCallback(() => {\n if (planUpgradeDetails) {\n const { promoCode, token } = planUpgradeDetails;\n setIsReviewButtonsLoading(true);\n switchAccount({\n data: {\n planUniqueId: selectedTier,\n coupon: promoCode,\n token,\n },\n });\n }\n }, [planUpgradeDetails, selectedTier, switchAccount]);\n\n const handleReviewNevermindClick = useCallback(() => {\n setPlanUpgradeDetails({\n selectedTier,\n });\n }, [selectedTier]);\n\n if (!planUpgradeDetails?.selectedTier) {\n return (\n \n );\n }\n if (!planUpgradeDetails?.token) {\n return (\n \n );\n }\n if (previewPlanUpgrade) {\n return (\n {} : onModalClose}\n newPlanName={previewPlanUpgrade.newPlanName}\n renewalDate={previewPlanUpgrade.renewalDate}\n price={previewPlanUpgrade.price}\n cardLast4Digits={cardLast4Digits}\n teamMembersString={previewPlanUpgrade.teamMembersString}\n />\n );\n }\n return (\n {}}>\n \n \n );\n};\n\nexport default PlanUpgradeModalContainer;\n","export const INTEGRATION_DATA_KIND = {\n COMPANY: 'Company',\n TEAM: 'Team',\n EMPLOYEE: 'Employee',\n};\n\nexport const PAGINATED_INTEGRATION_DATA_ITEMS_LIMIT = 50;\n","import ThemeV2 from '../../componentsV2/theme';\n\nexport const mapHexCodeToEmoticon = (value: string) => {\n if (!value) {\n throw new Error('invalid arguments');\n }\n\n if (value.indexOf('-') > 0) {\n return String.fromCodePoint(\n ...value.split('-').map((item) => +`0x${item}`),\n );\n }\n\n return String.fromCodePoint(+`0x${value}`);\n};\n\nexport const mapColorToPalette = (value: string) => {\n if (!value) {\n throw new Error('invalid arguments');\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Theme object structure is not consistent\n const color = ThemeV2.palette[value];\n return color || ThemeV2.palette.blue2;\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2 } from '../../../config';\nimport { AuthHeaders } from '../../shared/HeaderToken';\nimport { adminProcessError } from '../../Admin';\nimport Logger from '../../../Utils/Logger';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n USERS_PARTICIPATION: `${API_URL_WITH_V2}/employer/employee/participations`,\n USERS_EARNING: `${API_URL_WITH_V2}/employer/employee/earnings`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const GET_USERS_PARTICIPATION_SUCCESS =\n 'get_users_participation_success';\nexport const GET_USERS_EARNING_SUCCESS = 'get_users_earning_success';\nexport const USER_REPORTS_REQUEST_FAILED = 'user_reports_request_failed';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst getUsersParticipationSuccess = (report) => ({\n type: GET_USERS_PARTICIPATION_SUCCESS,\n report,\n});\nconst getUsersEarningSuccess = (report) => ({\n type: GET_USERS_EARNING_SUCCESS,\n report,\n});\nconst requestFailed = (errorMessage) => ({\n type: USER_REPORTS_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const actions = {\n getUsersParticipationSuccess,\n getUsersEarningSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getUsersParticipationAction = (cb) => async (dispatch) => {\n try {\n const res = await axios.get(\n apiEndpoints.USERS_PARTICIPATION,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n cb();\n dispatch(actions.getUsersParticipationSuccess(result.data));\n } else {\n cb();\n // dispatch(actions.emailExists());\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n};\n\nexport const getUsersEarningsAction = (cb) => async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.USERS_EARNING, AuthHeaders());\n const result = res.data;\n Logger(result);\n if (result.success) {\n cb();\n dispatch(actions.getUsersEarningSuccess(result.data));\n } else {\n cb();\n // dispatch(actions.emailExists());\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case GET_USERS_PARTICIPATION_SUCCESS:\n return { ...state, participation: action.report };\n case GET_USERS_EARNING_SUCCESS:\n return { ...state, earnings: action.report };\n case USER_REPORTS_REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport history from '../../history';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../../containers/helpers/ErrorHelper';\nimport Logger from '../../Utils/Logger';\nimport { API_URL_WITH_V2 } from '../../config';\nimport { AuthHeaders } from '../shared/HeaderToken';\nimport { showSuccessMessage, showInfoMessage } from '../../Utils/flashHandler';\n\nexport const CANCEL_SUBSCRIPTION_RESPONSE_STATUSES = {\n CANCELED: 'canceled',\n CANCEL_FAILED: 'cancel_fail',\n NO_STATUS: 'no_status',\n};\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n SUBSCRIPTION_INFO: `${API_URL_WITH_V2}/employer/subscription/details`,\n CANCEL_SUBSCRIPTION: `${API_URL_WITH_V2}/employer/subscription/cancel`,\n INVOICES: `${API_URL_WITH_V2}/employer/invoices`,\n};\n\nexport const billingProcessError = (error = {}, dispatch, actions) => {\n Logger('processError');\n Logger(error.response);\n Logger(error);\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(actions.requestFailed(ErrorMessages.serverError));\n break;\n case 401: // Not authorised\n window.location.href = `${APP_URL}home`;\n break;\n case 403: // Forbidden\n history.push('/404');\n break;\n case 404: // Page not found\n dispatch(actions.requestFailed(ErrorMessages.serverError));\n break;\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n dispatch(actions.requestFailed(msg));\n }\n break;\n default:\n dispatch(actions.requestFailed(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const BILLING_REQUEST_FAILED = 'billing_request_failed';\nexport const CANCEL_SUBSCRIPTION_SUCCESS = 'cancel_subscription_success';\nexport const UPDATE_SUBSCRIPTION_CANCEL_RESPONSE =\n 'update_subscription_cancel_response';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst cancelSubscriptionSuccess = () => ({\n type: CANCEL_SUBSCRIPTION_SUCCESS,\n});\nconst updateSubscriptionCancelResponse = (status) => ({\n type: UPDATE_SUBSCRIPTION_CANCEL_RESPONSE,\n status,\n});\nconst requestFailed = (errorMessage) => ({\n type: BILLING_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const billingActions = {\n cancelSubscriptionSuccess,\n updateSubscriptionCancelResponse,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\nexport const cancelSubscription = (props) => {\n Logger('cancelSubscription', false);\n return async (dispatch) => {\n try {\n dispatch(showInfoMessage('Cancelling your subscription...'));\n const res = await axios.post(\n apiEndpoints.CANCEL_SUBSCRIPTION,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(showSuccessMessage('Your subscription has been cancelled'));\n dispatch(\n billingActions.updateSubscriptionCancelResponse(\n CANCEL_SUBSCRIPTION_RESPONSE_STATUSES.CANCELED,\n ),\n );\n dispatch(billingActions.cancelSubscriptionSuccess());\n }\n } catch (error) {\n billingProcessError(error, dispatch, billingActions);\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case BILLING_REQUEST_FAILED:\n return { ...state, error: action.error };\n case UPDATE_SUBSCRIPTION_CANCEL_RESPONSE:\n return { ...state, subscriptionCancelResponse: action.status };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { useState, useRef, useCallback } from 'react';\n\nconst useImageUploader = ({\n aspectRatio,\n maxWidth,\n maxHeight,\n minHeight,\n minWidth,\n fileSizeLimit,\n onError,\n onImageEditingDone,\n}) => {\n const getInitialCrop = useCallback(\n () => ({\n unit: '%',\n aspect: aspectRatio || undefined,\n width: 90,\n height: 90,\n x: 5,\n y: 5,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n const imageRef = useRef();\n const [fileName, setFileName] = useState('');\n const [src, setSrc] = useState();\n const [scaledMaxHeight, setScaledMaxHeight] = useState();\n const [scaledMaxWidth, setScaledMaxWidth] = useState();\n const [scaledMinHeight, setScaledMinHeight] = useState();\n const [scaledMinWidth, setScaledMinWidth] = useState();\n const [cropModalOpen, setModalOpen] = useState(false);\n const [crop, setCrop] = useState(getInitialCrop());\n\n const removeRef = useCallback(() => {\n imageRef.current = undefined;\n }, []);\n const onSelectFile = useCallback(\n (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const reader = new FileReader();\n const file = e.target.files[0];\n if (file.name) {\n setFileName(file.name);\n }\n if (file.size > fileSizeLimit) {\n if (onError) {\n onError(\n 'Sorry, this image is too big! Please try a smaller image.',\n );\n }\n removeRef();\n return;\n }\n reader.addEventListener('load', () => {\n const image = new Image();\n image.src = reader.result;\n image.onload = () => {\n if (image.height < minHeight || image.width < minWidth) {\n if (onError) {\n onError(\n `Sorry, please upload a ${minWidth}x${minHeight} minimum image or greater`,\n );\n }\n removeRef();\n return;\n }\n setSrc(reader.result);\n setModalOpen(true);\n setCrop(getInitialCrop());\n };\n });\n reader.readAsDataURL(file);\n }\n },\n [fileSizeLimit, getInitialCrop, minHeight, minWidth, onError, removeRef],\n );\n\n const onImageLoaded = useCallback(\n (image) => {\n const { naturalWidth, naturalHeight, clientHeight, clientWidth } = image;\n let maxWidthRatio;\n let minWidthRatio;\n let minHeightRatio;\n let maxHeightRatio;\n if (maxWidth) {\n maxWidthRatio = maxWidth / naturalWidth;\n setScaledMaxWidth(maxWidthRatio * clientWidth);\n }\n if (minWidth) {\n minWidthRatio = minWidth / naturalWidth;\n setScaledMinWidth(minWidthRatio * clientWidth);\n }\n if (maxHeight) {\n maxHeightRatio = maxHeight / naturalHeight;\n setScaledMaxHeight(maxHeightRatio * clientHeight);\n }\n if (minHeight) {\n minHeightRatio = minHeight / naturalHeight;\n setScaledMinHeight(minHeightRatio * clientHeight);\n }\n const initialCrop = { ...getInitialCrop() };\n let updatedHeightPercentage = initialCrop.height;\n if (maxHeightRatio && initialCrop.height > maxHeightRatio * 100) {\n updatedHeightPercentage = maxHeightRatio * 100;\n } else if (minHeightRatio && initialCrop.height < minHeightRatio * 100) {\n updatedHeightPercentage = minHeightRatio * 100;\n }\n let updatedWidthPercentage = initialCrop.width;\n if (maxWidthRatio && initialCrop.width > maxWidthRatio * 100) {\n updatedWidthPercentage = maxWidthRatio * 100;\n } else if (minWidthRatio && initialCrop.width < minWidthRatio * 100) {\n updatedWidthPercentage = minWidthRatio * 100;\n }\n\n if (\n updatedWidthPercentage === initialCrop.width &&\n updatedHeightPercentage === initialCrop.height\n ) {\n if (naturalWidth > naturalHeight) {\n updatedWidthPercentage *= naturalHeight / naturalWidth;\n } else {\n updatedHeightPercentage *= naturalWidth / naturalHeight;\n }\n }\n\n if (aspectRatio) {\n if (aspectRatio > 1) {\n updatedHeightPercentage /= aspectRatio;\n } else if (aspectRatio < 1) {\n updatedWidthPercentage *= aspectRatio;\n }\n }\n\n setCrop({\n ...initialCrop,\n height: updatedHeightPercentage,\n width: updatedWidthPercentage,\n y: (100 - updatedHeightPercentage) / 2,\n x: (100 - updatedWidthPercentage) / 2,\n });\n imageRef.current = image;\n return false;\n },\n [aspectRatio, getInitialCrop, maxHeight, maxWidth, minHeight, minWidth],\n );\n\n const onInputClick = useCallback((event) => {\n // eslint-disable-next-line no-param-reassign\n event.target.value = '';\n return false;\n }, []);\n\n const onCropChange = (imgCrop) => {\n setCrop(imgCrop);\n };\n\n const getCroppedImg = (image, imgCrop) => {\n const modifiedCrop = { ...imgCrop };\n if (modifiedCrop.unit === '%') {\n modifiedCrop.width = (imgCrop.width * image.clientWidth) / 100;\n modifiedCrop.height = (imgCrop.height * image.clientHeight) / 100;\n modifiedCrop.x = (imgCrop.x * image.clientWidth) / 100;\n modifiedCrop.y = (imgCrop.y * image.clientHeight) / 100;\n }\n const canvas = document.createElement('canvas');\n const scaleX = image.naturalWidth / image.width;\n const scaleY = image.naturalHeight / image.height;\n const originWidth = modifiedCrop.width * scaleX;\n const originHeight = modifiedCrop.height * scaleY;\n\n canvas.width = originWidth;\n canvas.height = originHeight;\n const ctx = canvas.getContext('2d');\n\n ctx.drawImage(\n image,\n modifiedCrop.x * scaleX,\n modifiedCrop.y * scaleY,\n modifiedCrop.width * scaleX,\n modifiedCrop.height * scaleY,\n 0,\n 0,\n originWidth,\n originHeight,\n );\n\n return canvas.toDataURL();\n };\n\n const onDone = () => {\n if (imageRef && crop.width && crop.height) {\n const img = getCroppedImg(imageRef.current, crop);\n onImageEditingDone(img, fileName);\n setModalOpen(false);\n removeRef();\n }\n };\n\n const onCancel = useCallback(() => {\n setModalOpen(false);\n setSrc();\n }, []);\n\n return {\n src,\n crop,\n fileName,\n scaledMaxHeight,\n scaledMaxWidth,\n scaledMinHeight,\n scaledMinWidth,\n cropModalOpen,\n onCancel,\n onDone,\n onCropChange,\n onSelectFile,\n onImageLoaded,\n onInputClick,\n };\n};\n\nexport default useImageUploader;\n","import styled from 'styled-components';\nimport Modal from '../../atoms/Modal';\nimport Heading from '../../atoms/Heading';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport IconButton from '../../atoms/IconButton_V2';\nimport Button from '../../atoms/Button';\nimport { device } from '../../../constants/layout';\n\nexport const StyledModal = styled(Modal)`\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 545px;\n min-height: 576px;\n max-height: 100vh;\n\n @media ${device.laptop} {\n max-height: 90vh;\n }\n`;\n\nexport const ModalHeader = styled.div`\n display: flex;\n justify-content: center;\n padding: 16px;\n border-bottom: 1px solid ${ThemeV2.palette.gray4};\n`;\n\nexport const StyledHeading = styled(Heading)`\n margin: 0px auto;\n`;\n\nexport const StyledIconButton = styled(IconButton)``;\n\nexport const ModalContent = styled.div`\n padding: 32px 36px;\n overflow-y: auto;\n`;\n\nexport const ModalFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 16px;\n border-top: 1px solid ${ThemeV2.palette.gray4};\n margin-top: auto;\n`;\n\nexport const StyledButton = styled(Button)`\n &:first-child {\n margin-right: 12px;\n }\n`;\n","import React, { memo } from 'react';\nimport 'react-image-crop/dist/ReactCrop.css';\nimport {\n IMAGE_CROPPER_MODAL_CANCEL_TEXT,\n IMAGE_CROPPER_MODAL_HEADING,\n IMAGE_CROPPER_MODAL_SUBMIT_TEXT,\n} from '../../../languages/en/rewards';\nimport { ImageCropperModalProps } from './interface';\nimport {\n ModalContent,\n ModalFooter,\n ModalHeader,\n StyledButton,\n StyledHeading,\n StyledIconButton,\n StyledModal,\n} from './styles';\n\nconst ImageCropperModal = (props: ImageCropperModalProps) => {\n const { isModalOpen, handleModalClose, onSubmitClick, children, disabled } =\n props;\n return (\n \n \n \n {IMAGE_CROPPER_MODAL_HEADING}\n \n \n \n {children}\n \n \n {IMAGE_CROPPER_MODAL_CANCEL_TEXT}\n \n \n {IMAGE_CROPPER_MODAL_SUBMIT_TEXT}\n \n \n \n );\n};\n\nconst MemoizedImageCropperModal = memo(ImageCropperModal);\nMemoizedImageCropperModal.displayName = 'ImageCropperModal';\nexport default MemoizedImageCropperModal;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { number, node, func, shape, string, bool } from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ReactCrop from 'react-image-crop';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nimport 'react-image-crop/dist/ReactCrop.css';\n\nimport ImageCropperModal from '../ImageCropperModal_V2';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n width: 'fit-content',\n\n '&.create-culture-reward-image-uploader': {\n width: 'auto',\n marginBottom: '8px',\n },\n },\n selectPictureContainer: {\n position: 'relative',\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n },\n selectPictureOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n display: 'flex',\n 'align-items': 'center',\n 'justify-content': 'center',\n top: 0,\n left: 0,\n 'background-color': 'rgba(0, 0, 0, 0.5)',\n opacity: 0,\n '&:hover': {\n opacity: 1,\n },\n },\n selectPictureImage: {\n width: '100%',\n height: '100%',\n },\n selectPictureInput: {\n display: 'none',\n },\n});\n\nconst DisplayImageUploader = ({\n onSelectFile,\n onInputClick,\n src,\n cropModalOpen,\n onCancel,\n crop,\n onImageLoaded,\n onDone,\n onCropChange,\n scaledMinHeight,\n scaledMaxHeight,\n scaledMinWidth,\n scaledMaxWidth,\n classes: classNames,\n children,\n overlayIcon,\n}) => {\n const classes = useStyles({ classes: classNames });\n\n return (\n
\n \n \n {children}\n {overlayIcon && (\n
\n \n
\n )}\n \n {src && (\n \n \n \n )}\n
\n );\n};\n\nDisplayImageUploader.propTypes = {\n classes: shape({}),\n children: node.isRequired,\n onSelectFile: func.isRequired,\n onInputClick: func.isRequired,\n cropModalOpen: bool.isRequired,\n src: string,\n onCancel: func.isRequired,\n onImageLoaded: func.isRequired,\n onDone: func.isRequired,\n onCropChange: func.isRequired,\n scaledMinHeight: number,\n scaledMaxHeight: number,\n scaledMinWidth: number,\n scaledMaxWidth: number,\n crop: shape({\n aspect: number,\n x: number,\n y: number,\n width: number,\n height: number,\n }).isRequired,\n overlayIcon: string,\n};\n\nDisplayImageUploader.defaultProps = {\n classes: {},\n src: '',\n scaledMinHeight: null,\n scaledMaxHeight: null,\n scaledMinWidth: null,\n scaledMaxWidth: null,\n overlayIcon: null,\n};\n\nexport default DisplayImageUploader;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { number, node, func, shape, string } from 'prop-types';\nimport useImageUploader from './useImageUploader';\nimport DisplayImageUploader from './index.presentational';\nimport 'react-image-crop/dist/ReactCrop.css';\n\nconst ImageUploader = ({\n aspectRatio,\n classes,\n children,\n limits: {\n MIN_DIMENSIONS: { WIDTH: minWidth, HEIGHT: minHeight } = {},\n MAX_DIMENSIONS: { WIDTH: maxWidth, HEIGHT: maxHeight } = {},\n FILE_SIZE_LIMIT: fileSizeLimit,\n },\n onError,\n onImageEditingDone,\n overlayIcon,\n}) => {\n const returnedHookValues = useImageUploader({\n aspectRatio,\n maxWidth,\n maxHeight,\n minHeight,\n minWidth,\n fileSizeLimit,\n onError,\n onImageEditingDone,\n });\n\n return (\n \n {children}\n \n );\n};\n\nImageUploader.propTypes = {\n classes: shape({}),\n children: node.isRequired,\n onImageEditingDone: func.isRequired,\n aspectRatio: number,\n limits: shape({\n MIN_DIMENSIONS: shape({ WIDTH: number, HEIGHT: number }),\n MAX_DIMENSIONS: shape({ WIDTH: number, HEIGHT: number }),\n FILE_SIZE_LIMIT: number,\n }),\n onError: func,\n overlayIcon: string,\n};\n\nImageUploader.defaultProps = {\n classes: {},\n aspectRatio: null,\n onError: null,\n limits: {\n MIN_DIMENSIONS: {},\n MAX_DIMENSIONS: {},\n FILE_SIZE_LIMIT: Infinity,\n },\n overlayIcon: '',\n};\n\nexport default ImageUploader;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n '@keyframes loader-animation': {\n '0%': { transform: 'rotate(0deg)' },\n '100%': { transform: 'rotate(360deg)' },\n },\n '@keyframes loader-inner': {\n '0%': { transform: 'rotate(0deg)' },\n '100% ': { transform: 'rotate(220deg)' },\n },\n '@keyframes loader-inner-2': {\n '0%': { transform: 'rotate(-140deg)' },\n '50% ': { transform: 'rotate(-160deg)' },\n '100%': { transform: 'rotate(140deg) ' },\n },\n loader: {\n display: 'block',\n height: (props: { size: number }) =>\n props.size ? `${props.size}px` : '32px',\n width: (props: { size: number }) =>\n props.size ? `${props.size}px` : '32px',\n animation: '$loader-animation 4.8s linear infinite',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n '& span': {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n bottom: '0',\n right: '0',\n margin: 'auto',\n height: (props: { size: number }) =>\n props.size ? `${props.size}px` : '32px',\n width: (props: { size: number }) =>\n props.size ? `${props.size}px` : '32px',\n clip: (props: { size: number }) =>\n props.size\n ? `rect(0, ${props.size}px, ${props.size}px, ${props.size / 2}px)`\n : 'rect(0, 32px, 32px, 16px)',\n animation: '$loader-inner 1.2s linear infinite',\n '&:after': {\n content: \"''\",\n position: 'absolute',\n top: '0',\n left: '0',\n bottom: '0',\n right: ' 0',\n margin: 'auto',\n height: (props: { size: number }) =>\n props.size ? `${props.size}px` : '32px',\n width: (props: { size: number }) =>\n props.size ? `${props.size}px` : '32px',\n clip: (props: { size: number }) =>\n props.size\n ? `rect(0, ${props.size}px, ${props.size}px, ${props.size / 2}px)`\n : 'rect(0, 32px, 32px, 16px)',\n border: (props: { color: string; stroke: number }) =>\n props.color\n ? `${props.stroke ? `${props.stroke}px` : '3px'} solid ${\n props.color\n }`\n : `${props.stroke ? `${props.stroke}px` : '3px'} solid ${\n ThemeV2.palette.gray1\n }`,\n borderRadius: ' 50%',\n boxSizing: 'border-box',\n animation: '$loader-inner-2 1.2s ease-in infinite',\n },\n },\n },\n});\n\nexport interface LoadingCircleProps {\n color?: string;\n size: number;\n stroke?: number;\n}\n\nconst LoadingCircle = (props: LoadingCircleProps) => {\n const { size = 32 } = props;\n const classes = useStyles({ size });\n return (\n
\n \n
\n );\n};\n\nexport default LoadingCircle;\n","import { format } from 'date-fns';\nimport _ from 'lodash';\n\nimport { getWeekDetails, hasAllWeekDays, isSameDay } from '..';\nimport { SelectedCustomRecurrenceTypes } from '../../../../atomic/organism/CustomRecurrence/types';\n// eslint-disable-next-line max-len\nimport { FlowFrequencyOptions } from '../../../../controllers/flowsBuilder/FlowsBuilderTriggerController/ScheduleDateTimeController/types';\nimport {\n ANNUALLY_ON,\n BIWEEKLY_ON,\n DAILY,\n EVERY_WEEKDAY,\n MONTHLY_ON_THE,\n ONLY_ONCE,\n QUARTERLY_ON_THE,\n WEEKLY_ON,\n} from '../../../../languages/en/flows/builder';\nimport { CUSTOM } from '../../../../languages/en/singleWords';\nimport { capitalizeFirstLetter } from '../../../text';\n\n// needed to form the flowFrequency options\n/* if the weekdays has been selected through custom option then we need that to form the flowFrequency options */\nexport const getDayNameFromNumber = (dayInNumber: number) => {\n switch (dayInNumber) {\n case 0:\n return 'Monday';\n case 1:\n return 'Tuesday';\n case 2:\n return 'Wednesday';\n case 3:\n return 'Thursday';\n case 4:\n return 'Friday';\n case 5:\n return 'Saturday';\n default:\n return 'Sunday';\n }\n};\n\n// this is to build the frequency options\nexport const hasWeekDays = (selectedDays: number[]) => {\n const weekDays = [0, 1, 2, 3, 4];\n return _.isEqual(weekDays, selectedDays);\n};\n\n// to get the week count like first,second, etc,.\nexport const getWeekCountInWords = (weekNumber: number) => {\n switch (weekNumber) {\n case 1:\n return 'first';\n case 2:\n return 'second';\n case 3:\n return 'third';\n default:\n return 'fourth';\n }\n};\n\n// to get the frequency options\nexport const getFlowFrequencyOptions = (\n date: Date | undefined,\n selectedCustomRecurrenceTypes: SelectedCustomRecurrenceTypes | undefined,\n) => {\n if (date) {\n const day = format(date, 'EEEE');\n const dayNumber = format(date, 'd');\n const monthAndDate = format(date, 'MMMM d');\n const weekDetails = getWeekDetails(date);\n\n const array = [\n {\n title: EVERY_WEEKDAY,\n id: FlowFrequencyOptions.EVERY_WEEKDAY,\n },\n {\n title: DAILY,\n id: FlowFrequencyOptions.DAILY,\n },\n {\n title: `${WEEKLY_ON} ${day}`,\n id: FlowFrequencyOptions.WEEKLY,\n },\n {\n title: `${BIWEEKLY_ON} ${day}`,\n id: FlowFrequencyOptions.BIWEEKLY,\n },\n ];\n\n if (weekDetails) {\n switch (weekDetails.weekNumber) {\n case 1: {\n array.splice(4, 0, {\n title: `${MONTHLY_ON_THE} first ${day}`,\n id: FlowFrequencyOptions.MONTHLY,\n });\n array.splice(5, 0, {\n title: `${QUARTERLY_ON_THE} first ${day}`,\n id: FlowFrequencyOptions.QUARTERLY,\n });\n break;\n }\n case 2: {\n array.splice(4, 0, {\n title: `${MONTHLY_ON_THE} second ${day}`,\n id: FlowFrequencyOptions.MONTHLY,\n });\n array.splice(5, 0, {\n title: `${QUARTERLY_ON_THE} second ${day}`,\n id: FlowFrequencyOptions.QUARTERLY,\n });\n break;\n }\n case 3: {\n array.splice(4, 0, {\n title: `${MONTHLY_ON_THE} third ${day}`,\n id: FlowFrequencyOptions.MONTHLY,\n });\n array.splice(5, 0, {\n title: `${QUARTERLY_ON_THE} third ${day}`,\n id: FlowFrequencyOptions.QUARTERLY,\n });\n break;\n }\n case 4: {\n array.splice(4, 0, {\n title: `${MONTHLY_ON_THE} fourth ${day}`,\n id: FlowFrequencyOptions.MONTHLY,\n });\n array.splice(weekDetails.isLastWeek ? 6 : 5, 0, {\n title: `${QUARTERLY_ON_THE} fourth ${day}`,\n id: FlowFrequencyOptions.QUARTERLY,\n });\n break;\n }\n default:\n break;\n }\n if (weekDetails.isLastWeek) {\n array.splice(weekDetails.weekNumber === 4 ? 5 : 4, 0, {\n title: `${MONTHLY_ON_THE} last ${day}`,\n id: FlowFrequencyOptions.MONTHLY_LAST,\n });\n array.splice(weekDetails.weekNumber === 4 ? 7 : 5, 0, {\n title: `${QUARTERLY_ON_THE} last ${day}`,\n id: FlowFrequencyOptions.QUARTERLY_LAST,\n });\n }\n }\n\n array.push(\n {\n title: `${ANNUALLY_ON} ${monthAndDate}`,\n id: FlowFrequencyOptions.ANNUALLY,\n },\n {\n title: ONLY_ONCE,\n id: FlowFrequencyOptions.ONCE,\n },\n {\n title: `${capitalizeFirstLetter(CUSTOM)}...`,\n id: FlowFrequencyOptions.CUSTOM,\n },\n );\n\n if (selectedCustomRecurrenceTypes !== undefined) {\n switch (selectedCustomRecurrenceTypes.repeatEvery) {\n case 'days': {\n if (selectedCustomRecurrenceTypes.repeatEveryCount !== 1) {\n array.splice(array.length - 1, 0, {\n title: `Every ${selectedCustomRecurrenceTypes.repeatEveryCount} days`,\n id: FlowFrequencyOptions.REPEAT_DAYS,\n });\n }\n break;\n }\n case 'weeks': {\n const dayNames = selectedCustomRecurrenceTypes.selectedDayIds.map(\n (val) => getDayNameFromNumber(val),\n );\n const includeWeekDays = hasWeekDays(\n selectedCustomRecurrenceTypes.selectedDayIds,\n );\n const includeAllDays = hasAllWeekDays(\n selectedCustomRecurrenceTypes.selectedDayIds,\n );\n const isTheDaySame = isSameDay(\n date,\n selectedCustomRecurrenceTypes.selectedDayIds[0],\n );\n if (includeWeekDays || includeAllDays) {\n if (includeAllDays) {\n if (selectedCustomRecurrenceTypes.repeatEveryCount === 1) {\n array.splice(array.length - 1, 0, {\n title: 'Weekly on all days',\n id: FlowFrequencyOptions.REPEAT_ALL_DAYS,\n });\n } else {\n array.splice(array.length - 1, 0, {\n title: `Every ${selectedCustomRecurrenceTypes.repeatEveryCount} weeks on all days`,\n id: FlowFrequencyOptions.REPEAT_ALL_DAYS,\n });\n }\n } else if (includeWeekDays) {\n if (selectedCustomRecurrenceTypes.repeatEveryCount > 1) {\n array.splice(array.length - 1, 0, {\n title: `Every ${selectedCustomRecurrenceTypes.repeatEveryCount} weeks on weekdays`,\n id: FlowFrequencyOptions.REPEAT_WEEK_DAYS,\n });\n }\n }\n } else if (\n selectedCustomRecurrenceTypes.repeatEveryCount === 1 &&\n (dayNames.length > 1 ||\n (selectedCustomRecurrenceTypes.selectedDayIds.length === 1 &&\n isTheDaySame === false))\n ) {\n array.splice(array.length - 1, 0, {\n title: `Every week on ${dayNames.join()}`,\n id: FlowFrequencyOptions.REPEAT_WEEKS,\n });\n } else if (\n selectedCustomRecurrenceTypes.repeatEveryCount > 1 &&\n dayNames.length > 0\n ) {\n array.splice(array.length - 1, 0, {\n title: `Every ${\n selectedCustomRecurrenceTypes.repeatEveryCount\n } weeks on ${dayNames.join()}`,\n id: FlowFrequencyOptions.REPEAT_WEEKS,\n });\n }\n break;\n }\n case 'years': {\n if (selectedCustomRecurrenceTypes.repeatEveryCount !== 1) {\n array.splice(array.length - 1, 0, {\n title: `Every ${selectedCustomRecurrenceTypes.repeatEveryCount} years on ${monthAndDate}`,\n id: FlowFrequencyOptions.REPEAT_YEARS,\n });\n }\n break;\n }\n default: {\n if (selectedCustomRecurrenceTypes.repeatEveryCount === 1) {\n if (\n selectedCustomRecurrenceTypes.repeatOnMonth === 'repeatMonthly'\n ) {\n /* every month on the day 16 */\n array.splice(array.length - 1, 0, {\n title: `Every month on the day ${dayNumber}`,\n id: FlowFrequencyOptions.REPEAT_MONTHS,\n });\n }\n } else if (selectedCustomRecurrenceTypes.repeatEveryCount > 1) {\n if (\n selectedCustomRecurrenceTypes.repeatOnMonth ===\n 'repeatMonthlyOn' &&\n weekDetails &&\n selectedCustomRecurrenceTypes.repeatEveryCount !== 3\n ) {\n /* every 2 months on the last/third TUE */\n array.splice(array.length - 1, 0, {\n title: `Every ${\n selectedCustomRecurrenceTypes.repeatEveryCount\n } months on the ${\n weekDetails.isLastWeek\n ? 'last'\n : getWeekCountInWords(weekDetails.weekNumber)\n } ${day}`,\n id: FlowFrequencyOptions.REPEAT_MONTHS,\n });\n } else if (\n selectedCustomRecurrenceTypes.repeatOnMonth === 'repeatMonthly'\n ) {\n /* every 2 months on the day 16 */\n array.splice(array.length - 1, 0, {\n title: `Every ${selectedCustomRecurrenceTypes.repeatEveryCount} months on the day ${dayNumber}`,\n id: FlowFrequencyOptions.REPEAT_MONTHS,\n });\n }\n }\n break;\n }\n }\n }\n return array;\n }\n return [];\n};\n","import React, { useCallback, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Image from '../../atoms/Image';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Body from '../../atoms/Body';\nimport { PropsClasses } from '../../../interfaces/ClassesProps';\nimport Avatar from '../../atoms/Avatar';\nimport { AvatarProps } from '../../atoms/Avatar/interfaces';\n\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '8px',\n borderRadius: '2px',\n cursor: 'pointer',\n transition: 'all .3s',\n backgroundColor: ThemeV2.palette.white,\n '&:hover': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n '&:hover $listDisplayText': {\n backgroundColor: ThemeV2.palette.geekBlue3,\n },\n },\n listDisplayText: {\n backgroundColor: ThemeV2.palette.geekBlue1,\n borderRadius: '2px',\n padding: '0 4px',\n margin: '0 8px 0 4px',\n transition: 'all .3s',\n },\n listOption: {\n transition: 'all .3s',\n '&:hover': {\n backgroundColor: ThemeV2.palette.geekBlue1,\n },\n },\n listThumbnail: {\n borderRadius: '100%',\n },\n listSvgWrapper: {\n display: 'flex',\n width: '24px',\n height: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: ThemeV2.palette.geekBlue6,\n borderRadius: '100%',\n },\n});\n\nexport interface DDListItemProps {\n displayText: string;\n id?: string;\n secondaryText?: string;\n img?: string;\n hideImage?: boolean;\n classes?: PropsClasses;\n avatar?: AvatarProps;\n}\n\nconst DropdownListItem = (props: DDListItemProps) => {\n const classes = useStyles(props);\n const { displayText, img, secondaryText, hideImage, avatar } = props;\n const [image, setImage] = useState(img);\n\n const handleImageError = useCallback(() => {\n setImage(undefined);\n }, []);\n\n const renderImg = useCallback(() => {\n if (image !== undefined && image !== '') {\n return (\n \n );\n }\n if (avatar) {\n return ;\n }\n return (\n
\n \n
\n );\n }, [\n classes.listSvgWrapper,\n classes.listThumbnail,\n image,\n displayText,\n handleImageError,\n avatar,\n ]);\n\n if (hideImage) {\n return (\n
\n \n {displayText}\n \n
\n );\n }\n\n return (\n
\n {renderImg()}\n \n {displayText}\n \n {secondaryText !== undefined && (\n \n {secondaryText}\n \n )}\n
\n );\n};\n\nexport default DropdownListItem;\n","// eslint-disable-next-line import/prefer-default-export\nexport const IDENTITY_SSO_REDIRECT_DEFAULT =\n 'Please DO NOT press Back or Reload this Page. Please wait...';\n\nexport const INVALID_COMPANY_NAME_ERROR =\n 'Sorry, company name cannot contain http or https';\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nexport default () => (\n \n \n \n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { signOutAction } from './Session';\nimport { API_URL_WITH_V2 } from '../config';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../containers/helpers/ErrorHelper';\nimport { AuthHeaders } from './shared/HeaderToken';\nimport Logger from '../Utils/Logger';\nimport { deserializeNotification } from './utils/serialize';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n NOTIFICATION: `${API_URL_WITH_V2}/user/notification`,\n READ_NOTIFICATIONS: `${API_URL_WITH_V2}/user/notification/markread`,\n};\n\nconst processError = (error = {}, dispatch) => {\n Logger('processError');\n Logger(error.response);\n Logger(error);\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(notificationActions.requestFailed(ErrorMessages.serverError));\n break;\n case 401: // Not authorised\n // (Log out user)\n dispatch(signOutAction());\n break;\n case 403: // Forbidden\n // redirect to home\n break;\n case 404: // Page not found\n dispatch(notificationActions.requestFailed(ErrorMessages.serverError));\n break;\n // mostly my error\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n dispatch(notificationActions.requestFailed(msg));\n }\n break;\n default:\n dispatch(notificationActions.requestFailed(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const GET_NOTIFICATIONS_SUCCESS = 'get_notifications_success';\nexport const UPDATE_NOTIFICATIONS_COUNT = 'update_notifications_count';\nexport const REQUEST_FAILED = 'notifications_request_failed';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst getNotificationsSuccess = (notifications) => ({\n type: GET_NOTIFICATIONS_SUCCESS,\n notifications,\n});\nconst updateNotificationsCount = (count) => ({\n type: UPDATE_NOTIFICATIONS_COUNT,\n count,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const notificationActions = {\n getNotificationsSuccess,\n updateNotificationsCount,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\nexport const getNotificationsAction = (props) => async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.NOTIFICATION, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(\n notificationActions.getNotificationsSuccess(result.data.notifications),\n );\n dispatch(\n notificationActions.updateNotificationsCount(\n result.data.notificationCount,\n ),\n );\n } else {\n // dispatch(actions.emailExists());\n // history.push('/employer-onboarding');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n};\nexport const updateNotificationsReadAction = (props) => async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.READ_NOTIFICATIONS, AuthHeaders());\n const result = res.data;\n Logger(result, true);\n if (result.success) {\n dispatch(notificationActions.updateNotificationsCount(0));\n } else {\n // dispatch(actions.emailExists());\n // history.push('/employer-onboarding');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n};\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case GET_NOTIFICATIONS_SUCCESS: {\n let notifications = action.notifications || [];\n notifications = notifications.map((notification) =>\n deserializeNotification(notification),\n );\n return { ...state, notifications, error: null };\n }\n case UPDATE_NOTIFICATIONS_COUNT:\n return { ...state, count: action.count };\n case REQUEST_FAILED:\n return { ...state, error: action.errorMessage };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2 } from '../../../config';\nimport { AuthHeaders } from '../../shared/HeaderToken';\nimport { adminProcessError } from '../../Admin';\nimport Logger from '../../../Utils/Logger';\nimport { REMOVE_FEED_POST_SUCCESS } from '../../home/Feed';\nimport { deserializePost } from '../../utils/serialize';\n// import { showSuccessMessage, showInfoMessage } from '../../../Utils/flashHandler';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n ACTIVITY: `${API_URL_WITH_V2}/employer/employee/activity`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const GET_ACTIVITY_SUCCESS = 'GET_ACTIVITY_SUCCESS';\nexport const ACTIVITY_REQUEST_FAILED = 'ACTIVITY_REQUEST_FAILED';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst getUsersActivitySuccess = (posts) => ({\n type: GET_ACTIVITY_SUCCESS,\n posts,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: ACTIVITY_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const actions = {\n getUsersActivitySuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getActivityAction = (cb) => {\n Logger('getActivityAction', false);\n return async (dispatch) => {\n try {\n const res = await axios.get(apiEndpoints.ACTIVITY, AuthHeaders());\n const result = res.data;\n Logger(result);\n if (result.success) {\n cb();\n dispatch(actions.getUsersActivitySuccess(result.data));\n } else {\n cb();\n // dispatch(actions.emailExists());\n }\n } catch (error) {\n adminProcessError(error, dispatch, actions);\n }\n };\n};\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case GET_ACTIVITY_SUCCESS: {\n const posts = state.posts || {};\n const incomingPosts = action.posts;\n incomingPosts.forEach((element) => {\n posts[element._id] = deserializePost(element);\n });\n return { ...state, posts: { ...posts }, error: null };\n }\n case REMOVE_FEED_POST_SUCCESS: {\n const posts = state.posts || {};\n let deletedPost = posts[action.feedId];\n if (deletedPost) {\n deletedPost = deserializePost({ ...deletedPost, isDeleted: true });\n return { ...state, posts: { ...posts, [action.feedId]: deletedPost } };\n }\n return state;\n }\n default:\n return state;\n }\n};\n","import moment from 'moment';\nimport routesList from '../../../aV2/routes/routesList';\nimport { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\n\nexport const DATA_IN_PROGRESS = 'Data in progress';\nexport const PEOPLE = 'People';\nexport const RECOGNITION = 'Recognition';\nexport const ANALYTICS_UPGRADE_PLAN_HEADING = 'Upgrade for Assembly Insights';\nexport const ANALYTICS_UPGRADE_PLAN_TEXT =\n 'See insights of how people are using the :assemblyName Assembly';\nexport const ANALYTICS_UPGRADE_PLAN_BUTTON_TEXT = 'Upgrade for Insights';\nexport const ANALYTICS_UPGRADE_PLAN_LINK_TEXT = 'See example data below';\n\nexport const PREVIOUS_COMPARISON_STRING = 'vs previous 30 days';\nexport const CORE_VALUES = 'Core Values';\nexport const BADGES = 'Badges';\nexport const LAST_7_DAYS = 'Last 7 days';\nexport const LAST_14_DAYS = 'Last 14 days';\nexport const LAST_30_DAYS = 'Last 30 days';\nexport const THIS_MONTH = 'This month';\nexport const THIS_QUARTER = 'This quarter';\nexport const THIS_YEAR = 'This year';\nexport const WEEKLY_VIEW = 'Weekly View';\nexport const MONTHLY_VIEW = 'Monthly View';\nexport const LAST_WEEK = 'Last Week';\nexport const LAST_TWO_WEEKS = 'Last 2 Weeks';\nexport const LAST_FOUR_WEEKS = 'Last 4 Weeks';\nexport const LAST_THREE_MONTHS = 'Last 3 Months';\nexport const LAST_SIX_MONTHS = 'Last 6 Months';\nexport const LAST_TWELVE_MONTHS = 'Last 12 Months';\nexport const MONTH_TO_DATE = 'Month-to-date';\nexport const QUARTER_TO_DATE = 'Quarter-to-date';\nexport const YEAR_TO_DATE = 'Year-to-date';\nexport const ALL_TIME = 'All-time';\n\nexport const weeklyTimelineDropdownItems = [\n {\n id: 1,\n value: LAST_WEEK,\n },\n {\n id: 2,\n value: LAST_TWO_WEEKS,\n },\n {\n id: 3,\n value: LAST_FOUR_WEEKS,\n },\n {\n id: 4,\n value: LAST_THREE_MONTHS,\n },\n {\n id: 5,\n value: LAST_SIX_MONTHS,\n },\n {\n id: 6,\n value: LAST_TWELVE_MONTHS,\n },\n {\n id: 7,\n value: MONTH_TO_DATE,\n },\n {\n id: 8,\n value: QUARTER_TO_DATE,\n },\n {\n id: 9,\n value: YEAR_TO_DATE,\n },\n {\n id: 10,\n value: ALL_TIME,\n },\n];\n\nexport const valueDropdownItems = [\n {\n id: 1,\n value: CORE_VALUES,\n name: 'coreValues',\n },\n {\n id: 2,\n value: BADGES,\n name: 'badges',\n },\n];\n\nexport const viewDropdownItems = [\n {\n id: 1,\n value: WEEKLY_VIEW,\n name: 'weekly',\n },\n {\n id: 2,\n value: MONTHLY_VIEW,\n name: 'monthly',\n },\n];\n\nexport const PEOPLE_SUMMARY_TEMPLATE = [\n {\n key: 'invited',\n headerText: 'Invited',\n subText: 'Invite more people',\n subTextLink: routesList.ADMIN_USER_INVITE,\n headerTooltip: `The total number of employees ever invited to your Assembly –\n this includes requests, queued, and invited members.`,\n },\n {\n key: 'active',\n headerText: 'Members',\n subText: 'of invites accepted',\n headerTooltip:\n 'All members with a currently active account in your Assembly.',\n },\n {\n key: 'monthlyActive',\n headerText: 'Monthly Active',\n subText: 'of members',\n headerTooltip:\n 'All the members who have used your Assembly in the last month.',\n },\n {\n key: 'powerUsers',\n headerText: 'Power users',\n subText: 'of monthly active',\n headerTooltip:\n 'All members who have been active 4 or more times in the last month.',\n },\n];\nexport const RECOGNITION_SUMMARY_TEMPLATE = [\n {\n key: 'given',\n headerText: 'Recognition Given',\n subText: 'gave',\n headerTooltip: `If a member recognizes another or a group, it's counted here uniquely`,\n },\n {\n key: 'received',\n headerText: 'Recognition Received',\n subText: 'received',\n headerTooltip: `If a member receives recognition, it's counted here in aggregate`,\n },\n {\n key: 'comments',\n headerText: 'Comments',\n subText: 'commented',\n headerTooltip: `If a member comments on a post, it's counted here in aggregate`,\n },\n {\n key: 'reactions',\n headerText: 'Reactions',\n subText: 'added reactions',\n headerTooltip: `If a member reacts on a post, it's counted here in aggregate`,\n },\n];\nexport const PROFILE_INFORMATION_TEMPLATE = [\n {\n key: 'birthday',\n headerText: 'Birthday Adds',\n },\n {\n key: 'anniversary',\n headerText: 'Anniversary Adds',\n },\n {\n key: 'departments',\n headerText: 'Department Adds',\n },\n {\n key: 'profileImages',\n headerText: 'Profile Image Adds',\n },\n];\nexport const PEOPLE_SUMMARY_INFO_HEADER =\n 'How many people are in the :assemblyName Assembly?';\nexport const PEOPLE_SUMMARY_INFO_SUB_HEADER =\n 'Keep track of how your team is using Assembly.';\nexport const PROFILE_INFO_HEADER = 'Profile information';\nexport const PROFILE_INFO_SUB_HEADER =\n 'See how many people on your team have completed their profiles. The more you add, the more there is to celebrate!';\nexport const RECOGNITION_SUMMARY_INFO_HEADER =\n 'What’s happening on the :assemblyName Assembly?';\nexport const RECOGNITION_SUMMARY_INFO_SUB_HEADER =\n 'Showing your Assembly’s activity data for the last 30 days.';\nexport const PEOPLE_SUMMARY_GRAPH_HEADER = 'People over time on Assembly';\nexport const PEOPLE_SUMMARY_GRAPH_SUB_HEADER =\n 'Track how your team is using Assembly over time. Filter by week, month, year, or a custom time period.';\nexport const RECOGNITION_SUMMARY_GRAPH_HEADER =\n 'Recognition over time on :assemblyName Assembly';\nexport const RECOGNITION_SUMMARY_GRAPH_SUB_HEADER =\n 'Track your team’s recognition and engagement over time. Filter by week, month, year, or a custom time period.';\nexport const CORE_VALUES_BADGES_GRAPH_HEADER =\n 'Core values & badges over time on :assemblyName Assembly';\nexport const CORE_VALUES_BADGES_GRAPH_SUB_HEADER =\n 'See which values and traits your team exemplifies in their work and recognition.';\nexport const ANALYTICS_GRAPH_ERROR_HEADER = 'Whoops, something went wrong.';\nexport const ANALYTICS_GRAPH_ERROR_SUBHEADER = 'Please reload the page.';\nexport const ANALYTICS_GRAPH_LOADING_SUBHEADER = 'Just a second...';\nexport const ANALYTICS_GRAPH_LOADING_TEXT = 'We’re fetching your data';\nexport const ANALYTICS_GRAPH_PLACEHOLDER_IMAGE_ALT_TEXT =\n 'analytics-graph-placeholder';\nexport const ANALYTICS_GRAPH_LINES_DISABLED_HEADING =\n 'You turned off all data points';\nexport const ANALYTICS_GRAPH_LINES_DISABLED_TEXT =\n 'Turn back on data points above to see your data.';\nexport const ANALYTICS_GRAPH_NO_DATA_HEADING =\n 'You don’t have enough data, yet';\nexport const ANALYTICS_GRAPH_NO_DATA_TEXT =\n 'When there is enough data to show, you will see it here';\n\nexport const convertNumberToPercentage = (num: number, decimalPoint = 0) =>\n parseFloat((num * 100).toFixed(decimalPoint));\n\nexport const calculateValues = (\n {\n total,\n percentage,\n previous,\n engagementRank = BenchmarkStatus.NEED_A_BOOST,\n } = {\n total: 0,\n percentage: 0,\n previous: 0,\n },\n { headerText, subText, subTextLink, headerTooltip } = {\n headerText: '',\n subText: '',\n subTextLink: '',\n headerTooltip: '',\n },\n error = false,\n circularProgress = false,\n) => {\n if (circularProgress) {\n return {\n headerText: `${total} ${headerText}`,\n dataNumber: convertNumberToPercentage(percentage, 0),\n percentChange: '--',\n comparisonString: '',\n subText: '',\n engagementRank,\n };\n }\n return {\n dataNumber: total,\n headerText,\n subTextLink: subTextLink || undefined,\n percentChange: error\n ? '--'\n : convertNumberToPercentage(previous, 1).toString(),\n comparisonString: PREVIOUS_COMPARISON_STRING,\n subText: subTextLink\n ? subText\n : `${\n error ? '--' : convertNumberToPercentage(percentage, 1)\n }% ${subText}`,\n headerTooltip,\n engagementRank,\n };\n};\n\nexport const serializeGraphData = (\n graphData:\n | {\n data: { lines: { label: string; data: { x: number; y: number }[] }[] };\n }\n | undefined,\n) => {\n if (!graphData?.data?.lines) {\n return null;\n }\n const {\n data: { lines },\n } = graphData;\n return lines.map(({ label, data }) => ({\n id: label,\n data: data.map(({ x, y }, index) => ({\n x: x.toString(),\n y,\n isLastTimeDurationData: data.length === index + 1,\n })),\n }));\n};\n\nexport const getTimeStamps = (\n selectedTimelineId: number,\n selectedViewId: number,\n assemblyCreatedAt?: string,\n): [number, number] => {\n let fromTime = moment(new Date()).utc();\n const toTime = moment(new Date()).utc();\n switch (selectedTimelineId) {\n case 1: {\n break;\n }\n case 2: {\n fromTime.date(fromTime.date() - 7);\n break;\n }\n case 3: {\n fromTime.date(fromTime.date() - 21);\n break;\n }\n case 4: {\n fromTime.date(1);\n fromTime.month(fromTime.month() - 2);\n break;\n }\n case 5: {\n fromTime.date(1);\n fromTime.month(fromTime.month() - 5);\n break;\n }\n case 6: {\n fromTime.date(1);\n fromTime.month(fromTime.month() - 11);\n break;\n }\n case 7: {\n fromTime.date(1);\n break;\n }\n case 8: {\n fromTime.month((fromTime.quarter() - 1) * 3);\n fromTime.date(1);\n break;\n }\n case 9: {\n fromTime.date(1);\n fromTime.month(0);\n break;\n }\n case 10: {\n if (assemblyCreatedAt) {\n fromTime = moment(assemblyCreatedAt);\n }\n break;\n }\n default: {\n break;\n }\n }\n if (selectedTimelineId !== 10 && selectedViewId === 1) {\n fromTime.day(0);\n }\n return [parseInt(fromTime.format('x'), 10), parseInt(toTime.format('x'), 10)];\n};\n\nexport const BENCHMARK_INFO_MODAL_TITLE = 'Tips for engagement';\nexport const BENCHMARK_INFO_MODAL_BODY_TITLE =\n 'How to boost engagement in Assembly:';\nexport const BENCHMARK_INFO_MODAL_FOOTER_BUTTON_TEXT = 'Got it!';\n\nexport const BENCHMARK_INFO_MODAL_LIST_1_HEADING = 'Lead by example';\nexport const BENCHMARK_INFO_MODAL_LIST_1_TEXT =\n 'Make sure your admins and managers are giving timely, high quality recognition to a broad group of your employees.';\nexport const BENCHMARK_INFO_MODAL_LIST_1_LINK = 'Give Recognition';\n\nexport const BENCHMARK_INFO_MODAL_LIST_2_HEADING =\n 'Promote and give meaningful recognition';\nexport const BENCHMARK_INFO_MODAL_LIST_2_TEXT =\n 'We recommend following the RISE formula (Regular, Immediate, Specific, Encouraging). Learn more on our blog!';\nexport const BENCHMARK_INFO_MODAL_LIST_2_LINK = 'View blog post';\n\nexport const BENCHMARK_INFO_MODAL_LIST_3_HEADING =\n 'If you allow peer-to-peer recognition: check in with your team';\nexport const BENCHMARK_INFO_MODAL_LIST_3_TEXT =\n // eslint-disable-next-line max-len\n 'Encourage them to recognize each other. Prompt your team to think of something great a co-worker did this week, and have them post about it.';\nexport const BENCHMARK_INFO_MODAL_LIST_3_LINK = 'Give Recognition';\n\nexport const BENCHMARK_INFO_MODAL_LIST_4_HEADING =\n 'Book a call with an Account Manager';\nexport const BENCHMARK_INFO_MODAL_LIST_4_TEXT =\n // eslint-disable-next-line max-len\n 'Assembly has dedicated Account Managers, who are experts on making sure you build a robust culture of recognition. Chat about specifics, set up a workshop, and more.';\nexport const BENCHMARK_INFO_MODAL_LIST_4_LINK = 'Book a call';\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport useRequest from '../../../../hooks/useRequest/useRequest';\nimport {\n ANALYTICS_PEOPLE_SUMMARY,\n ANALYTICS_RECOGNITION_SUMMARY,\n ANALYTICS_PROFILE_INFORMATION,\n ANALYTICS_PEOPLE_GRAPH_DATA,\n ANALYTICS_RECOGNITION_GRAPH_DATA,\n ANALYTICS_CORE_VALUES_GRAPH_DATA,\n ANALYTICS_BADGES_GRAPH_DATA,\n ANALYTICS_OVERALL_ENGAGEMENT,\n} from '../../../../constants/endpoints';\nimport {\n PEOPLE_SUMMARY_TEMPLATE,\n RECOGNITION_SUMMARY_TEMPLATE,\n PROFILE_INFORMATION_TEMPLATE,\n serializeGraphData,\n calculateValues,\n} from '../../../../Utils/data/analytics/common';\nimport { checkAdminAnalyticsAccess } from '../../../../modules/admin/billing/account/selector';\nimport { employerSelector } from '../../../../modules/admin/selector';\n\nconst useAdminInsightsModel = () => {\n const adminAnalyticsAccess = useSelector(checkAdminAnalyticsAccess);\n const employer = useSelector(employerSelector);\n const [currentCompanyName, assemblyCreatedAt] = useMemo(\n () => [employer?.name, employer?.createdAt],\n [employer],\n );\n const {\n fireRequest: makeOverallEngagementRequest,\n response: overallEngagementResponse,\n isLoading: overallEngagementRequestLoading,\n error: overallEngagementError,\n } = useRequest(ANALYTICS_OVERALL_ENGAGEMENT, {\n initialLoadingState: true,\n });\n const {\n fireRequest: makePeopleSummaryRequest,\n response: peopleSummaryResponse,\n isLoading: peopleSummaryRequestLoading,\n error: peopleSummaryError,\n } = useRequest(ANALYTICS_PEOPLE_SUMMARY, {\n initialLoadingState: true,\n });\n const {\n fireRequest: makeRecognitionSummaryRequest,\n response: recognitionSummaryResponse,\n isLoading: recognitionSummaryRequestLoading,\n error: recognitionSummaryError,\n } = useRequest(ANALYTICS_RECOGNITION_SUMMARY, {\n initialLoadingState: true,\n });\n const {\n fireRequest: makeProfileInfoRequest,\n response: profileInfoResponse,\n isLoading: profileInfoRequestLoading,\n error: profileInfoError,\n } = useRequest(ANALYTICS_PROFILE_INFORMATION, {\n initialLoadingState: true,\n });\n const {\n fireRequest: makePeopleDataRequest,\n response: peopleDataResponse,\n error: peopleDataError,\n } = useRequest(ANALYTICS_PEOPLE_GRAPH_DATA, {\n initialLoadingState: true,\n resetResponseOnRequest: true,\n });\n const {\n fireRequest: makeRecognitionDataRequest,\n response: recognitionDataResponse,\n error: recognitionDataError,\n } = useRequest(ANALYTICS_RECOGNITION_GRAPH_DATA, {\n initialLoadingState: true,\n resetResponseOnRequest: true,\n });\n const {\n fireRequest: makeCoreValuesDataRequest,\n response: coreValuesDataResponse,\n error: coreValuesDataError,\n } = useRequest(ANALYTICS_CORE_VALUES_GRAPH_DATA, {\n resetResponseOnRequest: true,\n });\n const {\n fireRequest: makeBadgesDataRequest,\n response: badgesDataResponse,\n error: badgesDataError,\n } = useRequest(ANALYTICS_BADGES_GRAPH_DATA, {\n resetResponseOnRequest: true,\n });\n\n const badgesGraphData = useMemo(\n () => serializeGraphData(badgesDataResponse),\n [badgesDataResponse],\n );\n const coreValuesGraphData = useMemo(\n () => serializeGraphData(coreValuesDataResponse),\n [coreValuesDataResponse],\n );\n const recognitionGraphData = useMemo(\n () => serializeGraphData(recognitionDataResponse),\n [recognitionDataResponse],\n );\n const peopleGraphData = useMemo(\n () => serializeGraphData(peopleDataResponse),\n [peopleDataResponse],\n );\n const profileInfoData = useMemo(() => {\n return PROFILE_INFORMATION_TEMPLATE.map((item) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { data } = profileInfoResponse || {};\n const responseItem = data?.[item.key];\n const error = Boolean(profileInfoError);\n return {\n isLoading: profileInfoRequestLoading,\n error,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ...calculateValues(responseItem, item, error, true),\n };\n });\n }, [profileInfoError, profileInfoRequestLoading, profileInfoResponse]);\n const recognitionSummaryData = useMemo(() => {\n return RECOGNITION_SUMMARY_TEMPLATE.map((item) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { data } = recognitionSummaryResponse || {};\n const responseItem = data?.[item.key];\n const error = Boolean(recognitionSummaryError);\n return {\n isLoading: recognitionSummaryRequestLoading,\n error,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ...calculateValues(responseItem, item, error),\n };\n });\n }, [\n recognitionSummaryError,\n recognitionSummaryRequestLoading,\n recognitionSummaryResponse,\n ]);\n const peopleSummaryData = useMemo(() => {\n return PEOPLE_SUMMARY_TEMPLATE.map((item) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { data } = peopleSummaryResponse || {};\n const responseItem = data?.[item.key];\n const error = Boolean(peopleSummaryError);\n return {\n isLoading: peopleSummaryRequestLoading,\n error,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ...calculateValues(responseItem, item, error),\n };\n });\n }, [peopleSummaryError, peopleSummaryRequestLoading, peopleSummaryResponse]);\n\n const overallEngagementStatus = useMemo(() => {\n if (!overallEngagementResponse) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return overallEngagementResponse?.data?.engagementRank;\n }, [overallEngagementResponse]);\n\n const returnValues = useMemo(\n () => ({\n actions: {\n makePeopleSummaryRequest,\n makeRecognitionSummaryRequest,\n makeProfileInfoRequest,\n makePeopleDataRequest,\n makeRecognitionDataRequest,\n makeCoreValuesDataRequest,\n makeBadgesDataRequest,\n makeOverallEngagementRequest,\n },\n data: {\n peopleSummaryData,\n recognitionSummaryData,\n profileInfoData,\n peopleGraphData,\n recognitionGraphData,\n coreValuesGraphData,\n badgesGraphData,\n adminAnalyticsAccess,\n currentCompanyName,\n assemblyCreatedAt,\n overallEngagementStatus,\n },\n metadata: {\n peopleDataError,\n recognitionDataError,\n coreValuesDataError,\n badgesDataError,\n overallEngagementRequestLoading,\n overallEngagementError,\n },\n }),\n [\n makePeopleSummaryRequest,\n makeRecognitionSummaryRequest,\n makeProfileInfoRequest,\n makePeopleDataRequest,\n makeRecognitionDataRequest,\n makeCoreValuesDataRequest,\n makeBadgesDataRequest,\n makeOverallEngagementRequest,\n peopleSummaryData,\n recognitionSummaryData,\n profileInfoData,\n peopleGraphData,\n recognitionGraphData,\n coreValuesGraphData,\n badgesGraphData,\n adminAnalyticsAccess,\n currentCompanyName,\n assemblyCreatedAt,\n overallEngagementStatus,\n peopleDataError,\n recognitionDataError,\n coreValuesDataError,\n badgesDataError,\n overallEngagementRequestLoading,\n overallEngagementError,\n ],\n );\n return returnValues;\n};\n\nexport default useAdminInsightsModel;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport useToggle from '../../../../hooks/useToggle';\nimport {\n viewDropdownItems as viewDropdownArray,\n valueDropdownItems as valueDropdownArray,\n weeklyTimelineDropdownItems as weeklyTimelineDropdownArray,\n getTimeStamps,\n} from '../../../../Utils/data/analytics/common';\nimport {\n DropdownItem,\n GraphDataType,\n MakeGraphDataRequest,\n MakeInfoDataRequest,\n} from './interfaces';\n\ninterface ReceivedActions {\n makePeopleSummaryRequest: MakeInfoDataRequest;\n makeRecognitionSummaryRequest: MakeInfoDataRequest;\n makeProfileInfoRequest: MakeInfoDataRequest;\n makePeopleDataRequest: MakeGraphDataRequest;\n makeRecognitionDataRequest: MakeGraphDataRequest;\n makeCoreValuesDataRequest: MakeGraphDataRequest;\n makeBadgesDataRequest: MakeGraphDataRequest;\n makeOverallEngagementRequest: MakeInfoDataRequest;\n}\n\nconst usePageLogic = (\n {\n makePeopleSummaryRequest,\n makeRecognitionSummaryRequest,\n makeProfileInfoRequest,\n makePeopleDataRequest,\n makeRecognitionDataRequest,\n makeCoreValuesDataRequest,\n makeBadgesDataRequest,\n makeOverallEngagementRequest,\n }: ReceivedActions,\n adminAnalyticsAccess: boolean,\n coreValuesGraphData: GraphDataType[] | null,\n badgesGraphData: GraphDataType[] | null,\n coreValuesDataError?: Error,\n badgesDataError?: Error,\n assemblyId?: string,\n isSuperAdmin?: boolean,\n assemblyCreatedAt?: string,\n) => {\n const [\n weeklyTimelineItems,\n monthlyTimelineItems,\n valueDropdownItems,\n viewDropdownItems,\n ]: [DropdownItem[], DropdownItem[], DropdownItem[], DropdownItem[]] = useMemo(\n () =>\n adminAnalyticsAccess || isSuperAdmin\n ? [\n weeklyTimelineDropdownArray,\n weeklyTimelineDropdownArray.map((i) => ({\n ...i,\n disabled: i.id <= 3,\n })),\n valueDropdownArray,\n viewDropdownArray,\n ]\n : [\n weeklyTimelineDropdownArray.map((i) => ({ ...i, disabled: true })),\n weeklyTimelineDropdownArray.map((i) => ({ ...i, disabled: true })),\n valueDropdownArray.map((i) => ({ ...i, disabled: true })).reverse(),\n viewDropdownArray.map((i) => ({ ...i, disabled: true })),\n ],\n [adminAnalyticsAccess, isSuperAdmin],\n );\n\n const [selectedValue, setSelectedValue] = useState(valueDropdownItems[0]);\n const [selectedValueTimeline, setSelectedValueTimeline] = useState(\n weeklyTimelineItems[2],\n );\n const [selectedPeopleTimeline, setSelectedPeopleTimeline] = useState(\n weeklyTimelineItems[2],\n );\n const [selectedRecognitionTimeline, setSelectedRecognitionTimeline] =\n useState(weeklyTimelineItems[2]);\n const [isUpgradeModalOpen, setUpgradeModalOpen] = useState(false);\n const [peopleView, setPeopleView] = useState(viewDropdownItems[0]);\n const [recognitionView, setRecognitionView] = useState(viewDropdownItems[0]);\n const [valueView, setValueView] = useState(viewDropdownItems[0]);\n const {\n models: { toggleValue: showBookCallModal },\n operations: { setToggleValue: toggleBookCallModal },\n } = useToggle();\n const {\n models: { toggleValue: showTipsModal },\n operations: { setToggleValue: toggleTipsModal },\n } = useToggle();\n\n const onViewDropdownChange = useCallback(\n (type: string, optionId: number) => {\n let currentlyActiveItem;\n let setValue;\n let currentTimeline;\n let setTimeline;\n if (type === 'people') {\n currentlyActiveItem = peopleView;\n setValue = setPeopleView;\n setTimeline = setSelectedPeopleTimeline;\n currentTimeline = selectedPeopleTimeline;\n } else if (type === 'recognition') {\n currentlyActiveItem = recognitionView;\n setValue = setRecognitionView;\n setTimeline = setSelectedRecognitionTimeline;\n currentTimeline = selectedRecognitionTimeline;\n } else {\n currentlyActiveItem = valueView;\n setValue = setValueView;\n setTimeline = setSelectedValueTimeline;\n currentTimeline = selectedValueTimeline;\n }\n if (currentlyActiveItem.id !== optionId) {\n const selectedItem = viewDropdownItems.find((i) => i.id === optionId);\n if (selectedItem) {\n setValue(selectedItem);\n }\n if (selectedItem?.id === 2 && currentTimeline.id <= 3) {\n setTimeline(monthlyTimelineItems[3]);\n }\n }\n },\n [\n monthlyTimelineItems,\n peopleView,\n recognitionView,\n selectedPeopleTimeline,\n selectedRecognitionTimeline,\n selectedValueTimeline,\n valueView,\n viewDropdownItems,\n ],\n );\n\n const onTimelineDropdownChange = useCallback(\n (type: string, optionId: number) => {\n let currentlyActiveItem;\n let setValue;\n if (type === 'people') {\n currentlyActiveItem = selectedPeopleTimeline;\n setValue = setSelectedPeopleTimeline;\n } else if (type === 'recognition') {\n currentlyActiveItem = selectedRecognitionTimeline;\n setValue = setSelectedRecognitionTimeline;\n } else {\n currentlyActiveItem = selectedValueTimeline;\n setValue = setSelectedValueTimeline;\n }\n if (currentlyActiveItem.id !== optionId) {\n const selectedItem = weeklyTimelineItems.find((i) => i.id === optionId);\n if (selectedItem) {\n setValue(selectedItem);\n }\n }\n },\n [\n selectedPeopleTimeline,\n selectedRecognitionTimeline,\n selectedValueTimeline,\n weeklyTimelineItems,\n ],\n );\n\n const toggleUpgradeModalOpen = useCallback(() => {\n setUpgradeModalOpen(!isUpgradeModalOpen);\n }, [isUpgradeModalOpen]);\n\n const onValueDropdownChange = useCallback(\n (optionId: number) => {\n if (selectedValue.id !== optionId) {\n const selectedItem = valueDropdownItems.find((i) => i.id === optionId);\n if (selectedItem) {\n setSelectedValue(selectedItem);\n }\n }\n },\n [selectedValue, valueDropdownItems],\n );\n const getBadgesGraphData = useCallback(() => {\n const { name: grouping } = valueView;\n const [from, to] = getTimeStamps(\n selectedValueTimeline.id,\n valueView.id,\n assemblyCreatedAt,\n );\n makeBadgesDataRequest({\n params: {\n to,\n from,\n grouping,\n ...(assemblyId ? { assemblyId } : {}),\n },\n });\n }, [\n assemblyCreatedAt,\n assemblyId,\n makeBadgesDataRequest,\n selectedValueTimeline,\n valueView,\n ]);\n const getCoreValuesGraphData = useCallback(() => {\n const { name: grouping } = valueView;\n const [from, to] = getTimeStamps(\n selectedValueTimeline.id,\n valueView.id,\n assemblyCreatedAt,\n );\n makeCoreValuesDataRequest({\n params: {\n to,\n from,\n grouping,\n ...(assemblyId ? { assemblyId } : {}),\n },\n });\n }, [\n assemblyCreatedAt,\n assemblyId,\n makeCoreValuesDataRequest,\n selectedValueTimeline,\n valueView,\n ]);\n const getPeopleGraphData = useCallback(() => {\n const { name: grouping } = peopleView;\n const [from, to] = getTimeStamps(\n selectedPeopleTimeline.id,\n peopleView.id,\n assemblyCreatedAt,\n );\n makePeopleDataRequest({\n params: {\n to,\n from,\n grouping,\n ...(assemblyId ? { assemblyId } : {}),\n },\n });\n }, [\n assemblyCreatedAt,\n assemblyId,\n makePeopleDataRequest,\n peopleView,\n selectedPeopleTimeline,\n ]);\n const getRecognitionGraphData = useCallback(() => {\n const { name: grouping } = recognitionView;\n const [from, to] = getTimeStamps(\n selectedRecognitionTimeline.id,\n recognitionView.id,\n assemblyCreatedAt,\n );\n makeRecognitionDataRequest({\n params: {\n to,\n from,\n grouping,\n ...(assemblyId ? { assemblyId } : {}),\n },\n });\n }, [\n assemblyCreatedAt,\n assemblyId,\n makeRecognitionDataRequest,\n recognitionView,\n selectedRecognitionTimeline,\n ]);\n\n const [selectedChartData, selectedChartError] = useMemo(\n () =>\n selectedValue.id === 1\n ? [coreValuesGraphData, coreValuesDataError]\n : [badgesGraphData, badgesDataError],\n [\n badgesDataError,\n badgesGraphData,\n coreValuesDataError,\n coreValuesGraphData,\n selectedValue,\n ],\n );\n\n useEffect(() => {\n getPeopleGraphData();\n }, [getPeopleGraphData]);\n\n useEffect(() => {\n getRecognitionGraphData();\n }, [getRecognitionGraphData]);\n\n useEffect(() => {\n if (assemblyId) {\n makePeopleSummaryRequest({ params: { assemblyId } });\n makeRecognitionSummaryRequest({ params: { assemblyId } });\n makeProfileInfoRequest({ params: { assemblyId } });\n makeOverallEngagementRequest({ params: { assemblyId } });\n } else {\n makePeopleSummaryRequest();\n makeRecognitionSummaryRequest();\n makeProfileInfoRequest();\n makeOverallEngagementRequest();\n }\n }, [\n assemblyId,\n makeOverallEngagementRequest,\n makePeopleSummaryRequest,\n makeProfileInfoRequest,\n makeRecognitionSummaryRequest,\n ]);\n useEffect(() => {\n if (selectedValue.id === valueDropdownArray[0].id) {\n getCoreValuesGraphData();\n } else {\n getBadgesGraphData();\n }\n }, [\n getCoreValuesGraphData,\n getBadgesGraphData,\n selectedValue,\n valueDropdownItems,\n ]);\n\n const returnValues = useMemo(\n () => ({\n operations: {\n onValueDropdownChange,\n toggleUpgradeModalOpen,\n onViewDropdownChange,\n onTimelineDropdownChange,\n toggleBookCallModal,\n toggleTipsModal,\n },\n models: {\n selectedValueId: selectedValue.id,\n selectedValueTimelineId: selectedValueTimeline.id,\n selectedPeopleTimelineId: selectedPeopleTimeline.id,\n selectedRecognitionTimelineId: selectedRecognitionTimeline.id,\n isUpgradeModalOpen,\n selectedChartData,\n selectedChartError,\n selectedPeopleViewId: peopleView.id,\n selectedRecognitionViewId: recognitionView.id,\n selectedValueViewId: valueView.id,\n weeklyTimelineItems,\n monthlyTimelineItems,\n viewDropdownItems,\n valueDropdownItems,\n showBookCallModal,\n showTipsModal,\n },\n }),\n [\n showBookCallModal,\n toggleBookCallModal,\n viewDropdownItems,\n valueDropdownItems,\n onValueDropdownChange,\n toggleUpgradeModalOpen,\n onViewDropdownChange,\n onTimelineDropdownChange,\n selectedValue,\n selectedValueTimeline,\n selectedPeopleTimeline,\n selectedRecognitionTimeline,\n isUpgradeModalOpen,\n selectedChartData,\n selectedChartError,\n peopleView,\n recognitionView,\n valueView,\n weeklyTimelineItems,\n monthlyTimelineItems,\n toggleTipsModal,\n showTipsModal,\n ],\n );\n return returnValues;\n};\n\nexport default usePageLogic;\n","export default __webpack_public_path__ + \"static/media/analytics-graph-no-data-image.060becda.svg\";","import React, { useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { BaseCSSProperties } from '@material-ui/core/styles/withStyles';\nimport Image from '../../atoms/Image';\nimport Heading from '../../atoms/Heading';\nimport Button from '../../atoms/Button';\nimport Body from '../../atoms/Body';\nimport BannerImage from '../../../img/analytics/analytics-graph-no-data-image.svg';\nimport {\n ANALYTICS_UPGRADE_PLAN_BUTTON_TEXT,\n ANALYTICS_UPGRADE_PLAN_HEADING,\n ANALYTICS_UPGRADE_PLAN_LINK_TEXT,\n ANALYTICS_UPGRADE_PLAN_TEXT,\n} from '../../../Utils/data/analytics/common';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n width: '100%',\n textAlign: 'center',\n },\n innerWrapper: {\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n '& img': {\n height: '300px',\n width: '400px',\n margin: '0 auto',\n },\n marginBottom: '64px',\n },\n heading: {\n marginTop: '0px',\n marginBottom: '8px',\n },\n upgradeText: { margin: '0px auto 24px auto' },\n upgradeButton: {\n margin: '0 auto 8px auto',\n },\n});\n\ninterface StyleProps {\n root: BaseCSSProperties;\n innerWrapper: BaseCSSProperties;\n bannerImage: BaseCSSProperties;\n heading: BaseCSSProperties;\n upgradeText: BaseCSSProperties;\n upgradeButton: BaseCSSProperties;\n}\n\nexport type PropsClasses = Record;\nexport interface AnalyticsUpgradeFreePlanProps {\n isFreePlan?: boolean;\n onUpgradeClick: () => void;\n classes?: StyleProps;\n assemblyName: string;\n}\n\nconst AnalyticsUpgradeFreePlan = (props: AnalyticsUpgradeFreePlanProps) => {\n const { isFreePlan, onUpgradeClick, assemblyName } = props;\n const classes = useStyles(props);\n const UPGRADE_TEXT = useMemo(\n () =>\n ANALYTICS_UPGRADE_PLAN_TEXT.replace(':assemblyName', assemblyName || ''),\n [assemblyName],\n );\n if (isFreePlan) {\n return (\n
\n
\n \"banner-free-plan-upgrade\"\n \n {ANALYTICS_UPGRADE_PLAN_HEADING}\n \n \n {UPGRADE_TEXT}\n \n \n {ANALYTICS_UPGRADE_PLAN_BUTTON_TEXT}\n \n {ANALYTICS_UPGRADE_PLAN_LINK_TEXT}\n
\n
\n );\n }\n return null;\n};\n\nexport default AnalyticsUpgradeFreePlan;\n","export default __webpack_public_path__ + \"static/media/analytics-graph-all-toggle-off-image.7b02a897.svg\";","export default __webpack_public_path__ + \"static/media/error.0bec0267.svg\";","import { DatumValue } from '@nivo/line';\nimport moment from 'moment';\n\nexport const generateAxisLeftValues = (\n chartData:\n | {\n id: string;\n color: string;\n data: {\n x: string;\n y: number;\n }[];\n }[]\n | null,\n) => {\n const allYValues: Array = [];\n chartData?.forEach((point) => {\n point.data.forEach((yValues) => {\n allYValues.push(yValues.y);\n });\n });\n\n const highestValue = Math.max(...allYValues);\n const yAxisValues: Array = [];\n const maxValueLimit = Math.ceil(highestValue / 10) * 10;\n for (let i = 0; i <= 10; i += 1) {\n yAxisValues.push((maxValueLimit / 10) * i);\n }\n\n return yAxisValues;\n};\n\nexport const getDateFormattedString = (\n time: DatumValue,\n timeDuration?: string,\n) => {\n const date = moment.utc(\n (typeof time === 'string' && parseInt(time, 10)) || time,\n );\n if (timeDuration === 'monthly') {\n return date.format('MMM YYYY');\n }\n const startMonth = date.format('MMM');\n const startDate = date.format('DD');\n date.add(6, 'days');\n const endMonth = date.format('MMM');\n const endDate = date.format('DD');\n return `${startMonth} ${startDate}-${\n startMonth === endMonth ? endDate : `${endMonth} ${endDate}`\n }`;\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n ComputedDatum,\n DatumValue,\n Point,\n ResponsiveLine,\n Datum,\n} from '@nivo/line';\nimport Image from '../../atoms/Image';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport AnalyticsNoDataImage from '../../../img/analytics/analytics-graph-no-data-image.svg';\nimport AnalyticsGraphAllToggleOff from '../../../img/analytics/analytics-graph-all-toggle-off-image.svg';\nimport AnalyticsGraphErrorImage from '../../../img/error.svg';\nimport {\n ANALYTICS_GRAPH_LINES_DISABLED_HEADING,\n ANALYTICS_GRAPH_LINES_DISABLED_TEXT,\n ANALYTICS_GRAPH_NO_DATA_HEADING,\n ANALYTICS_GRAPH_NO_DATA_TEXT,\n ANALYTICS_GRAPH_PLACEHOLDER_IMAGE_ALT_TEXT,\n ANALYTICS_GRAPH_ERROR_HEADER,\n ANALYTICS_GRAPH_ERROR_SUBHEADER,\n DATA_IN_PROGRESS,\n} from '../../../Utils/data/analytics/common';\nimport {\n generateAxisLeftValues,\n getDateFormattedString,\n} from '../../../Utils/adminAnalytics/methods';\nimport IconInfo from '../IconInfo';\n\nconst styleById = {\n dashed: {\n strokeDasharray: '6, 3',\n strokeWidth: 3,\n opacity: 0.4,\n },\n default: {\n strokeWidth: 3,\n },\n};\n\ninterface Series {\n id: string | number;\n color?: string;\n data: ComputedDatum[];\n}\n\nconst DashedLine = ({\n series,\n lineGenerator,\n xScale,\n yScale,\n}: {\n series: Series[];\n lineGenerator: (data: Datum[]) => string;\n xScale: (value: string | number | Date) => number;\n yScale: (value: string | number | Date) => number;\n}) => {\n return series.map(({ id, data, color }) => (\n \n ({\n x: xScale(d.data.x || ''),\n y: yScale(d.data.y || ''),\n })),\n )}\n fill=\"none\"\n stroke={color}\n style={styleById.dashed}\n />\n ({\n x: xScale(d.data.x || ''),\n y: yScale(d.data.y || ''),\n })),\n )}\n fill=\"none\"\n stroke={color}\n style={styleById.default}\n />\n \n ));\n};\n\nconst useTooltipStyles = makeStyles({\n tooltip: {\n background: ThemeV2.palette.gray1,\n borderRadius: '4px',\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n padding: '8px 12px',\n width: 'auto',\n maxWidth: '212px',\n },\n date: {\n fontSize: '12px',\n lineHeight: '20px',\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontStyle: 'normal',\n color: ThemeV2.palette.gray7,\n },\n chartItems: {\n paddingLeft: '0px',\n listStyle: 'none',\n margin: '4px 0px 0px 0px',\n },\n chartItem: {\n display: 'flex',\n alignItems: 'center',\n padding: '4px 0px',\n borderBottom: `1px solid ${ThemeV2.palette.gray4}`,\n '&:last-child': {\n borderBottom: 'none',\n },\n },\n chartItemText: {\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontWeight: ThemeV2.typography.fontWeightRegular,\n fontSize: '12px',\n lineHeight: '20px',\n fontStyle: 'normal',\n color: ThemeV2.palette.gray8,\n margin: '0px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n chartItemNumberIndicator: {\n margin: '0px 0px 0px auto',\n paddingLeft: '8px',\n fontFamily: ThemeV2.typography.adminFontFamily,\n fontWeight: ThemeV2.typography.fontWeightBold,\n fontSize: '12px',\n lineHeight: '20px',\n fontStyle: 'normal',\n },\n});\n\nconst useStyles = makeStyles({\n root: (props: { height: string; width: string }) => ({\n position: 'relative',\n height: props.height,\n width: props.width,\n zIndex: 0,\n }),\n graphPlaceholder: {\n position: 'absolute',\n top: '0px',\n left: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 'calc(100% - 24px)',\n width: '100%',\n background: ThemeV2.palette.gray1,\n zIndex: 1,\n },\n innerWrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n placeholderImage: {\n marginBottom: '32px',\n },\n placeholderText: {\n color: ThemeV2.palette.gray10,\n '&:last-child': {\n marginTop: '4px',\n },\n },\n});\n\nexport interface DataFormat {\n x: string;\n y: number;\n isLastTimeDurationData?: boolean;\n}\n\nexport interface LinearGraphProps {\n chartData: { id: string; color: string; data: DataFormat[] }[] | null;\n linesDisabled?: boolean;\n width: string;\n height: string;\n className?: string;\n error?: boolean;\n timeDuration?: string;\n}\n\nconst chartStyling = {\n margin: { top: 12, right: 48, bottom: 80, left: 48 },\n theme: {\n axis: {\n ticks: {\n text: {\n fill: ThemeV2.palette.gray9,\n fontSize: '12px',\n lineHeight: '20px',\n fontFamily: ThemeV2.typography.adminFontFamily,\n },\n },\n },\n grid: {\n line: {\n stroke: ThemeV2.palette.gray4,\n },\n },\n },\n};\nexport interface ChartTooltipProps {\n slice: {\n id: DatumValue;\n height: number;\n width: number;\n x0: number;\n x: number;\n y0: number;\n y: number;\n points: Point[];\n };\n timeDuration?: string;\n}\n\nexport const ChartTooltip = ({ slice, timeDuration }: ChartTooltipProps) => {\n const classes = useTooltipStyles();\n const formattedString = useMemo(\n () => getDateFormattedString(slice.points[0].data.x, timeDuration),\n [slice, timeDuration],\n );\n return (\n
\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n {slice.points[0].data?.isLastTimeDurationData && (\n \n {DATA_IN_PROGRESS}\n \n )}\n {formattedString}\n
    \n {slice.points\n .sort(\n (a, b) =>\n parseInt(b.data.y.toString(), 10) -\n parseInt(a.data.y.toString(), 10),\n )\n .map((point) => (\n
  • \n {point.serieId}\n \n {point.data.y}\n \n
  • \n ))}\n
\n
\n );\n};\n\nconst LinearGraph = (props: LinearGraphProps) => {\n const classes = useStyles(props);\n const {\n chartData,\n linesDisabled,\n className: parentClassName,\n error,\n timeDuration,\n } = props;\n const styles = `${classes.root} ${parentClassName}`;\n\n const dataLength = useMemo(\n () => (chartData && chartData[0] && chartData[0]?.data?.length) || 0,\n [chartData],\n );\n const SliceTooltip = useCallback(\n ({ slice }) => ,\n [timeDuration],\n );\n const noChartData = dataLength === 0;\n const isPlaceholderActive = error || linesDisabled || noChartData;\n\n const renderPlaceholderContent = useCallback(() => {\n let imageSrc;\n let placeholderHeader;\n let placeholderSubHeader;\n if (error) {\n imageSrc = AnalyticsGraphErrorImage;\n placeholderHeader = ANALYTICS_GRAPH_ERROR_HEADER;\n placeholderSubHeader = ANALYTICS_GRAPH_ERROR_SUBHEADER;\n } else if (linesDisabled) {\n imageSrc = AnalyticsGraphAllToggleOff;\n placeholderHeader = ANALYTICS_GRAPH_LINES_DISABLED_HEADING;\n placeholderSubHeader = ANALYTICS_GRAPH_LINES_DISABLED_TEXT;\n } else {\n imageSrc = AnalyticsNoDataImage;\n placeholderHeader = ANALYTICS_GRAPH_NO_DATA_HEADING;\n placeholderSubHeader = ANALYTICS_GRAPH_NO_DATA_TEXT;\n }\n return (\n <>\n \n \n {placeholderHeader}\n \n \n {placeholderSubHeader}\n \n \n );\n }, [classes, error, linesDisabled]);\n\n const axisLeftValues = useMemo(\n () => generateAxisLeftValues(chartData),\n [chartData],\n );\n\n const xAxisTickValues = useMemo(() => {\n if (!chartData || dataLength <= 0) {\n return [];\n }\n\n const xAxisData = chartData && chartData[0].data.map((i) => i.x);\n if (dataLength < 10) {\n return xAxisData;\n }\n const showOneTickForValues = Math.ceil(dataLength / 12);\n return xAxisData.filter((val, index) => index % showOneTickForValues === 0);\n }, [chartData, dataLength]);\n\n const xAxisFormat = useCallback(\n (d: DatumValue) => getDateFormattedString(d, timeDuration),\n [timeDuration],\n );\n\n return (\n
\n {isPlaceholderActive ? (\n
\n
\n {renderPlaceholderContent()}\n
\n
\n ) : (\n chartColor.color}\n lineWidth={4}\n enablePoints={Boolean(\n chartData && chartData[0].data && chartData[0].data.length === 1,\n )}\n axisBottom={{\n tickSize: 0,\n tickPadding: 12,\n format: xAxisFormat,\n tickValues: xAxisTickValues,\n }}\n yScale={{\n type: 'linear',\n min: axisLeftValues[0],\n max: axisLeftValues[axisLeftValues.length - 1],\n stacked: false,\n reverse: false,\n }}\n axisLeft={{\n tickSize: 0,\n tickPadding: 16,\n tickValues: axisLeftValues,\n }}\n enableGridY={false}\n enableSlices=\"x\"\n enableCrosshair\n isInteractive\n sliceTooltip={SliceTooltip}\n layers={['axes', 'grid', DashedLine, 'slices', 'crosshair', 'points']}\n />\n )}\n
\n );\n};\n\nexport default LinearGraph;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Clickable from '../../atoms/Clickable';\nimport Body from '../../atoms/Body';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: ({\n color: { backgroundColor, text },\n isActive,\n }: {\n color: { backgroundColor: string; text: string };\n isActive?: boolean;\n }) => ({\n display: 'flex',\n alignItems: 'center',\n height: '32px',\n padding: '4px 16px',\n borderRadius: '2px',\n transition: '0.2s ease all',\n '& div:first-of-type': {\n color: isActive ? text : ThemeV2.palette.gray6,\n },\n '& svg > path:last-of-type': {\n fill: isActive ? text : ThemeV2.palette.gray6,\n },\n '&:hover': {\n background: backgroundColor,\n '& div:first-of-type': {\n color: text,\n },\n '& svg > path:last-of-type': {\n fill: text,\n },\n },\n }),\n iconWrapper: {\n display: 'flex',\n alignItems: 'center',\n },\n toggleText: {\n marginRight: '12px',\n },\n});\n\nexport interface ChartToggleProps {\n id: string;\n text: string;\n color: { backgroundColor: string; text: string };\n onClick: (toggleId: string) => void;\n isActive?: boolean;\n className?: string;\n}\n\nconst ChartToggle = (props: ChartToggleProps) => {\n const { text, id, isActive, onClick, className: parentClassName } = props;\n const [mouseEntered, setMouseEntered] = useState(false);\n const toggleIcon = useMemo(() => {\n if (isActive) {\n return mouseEntered ? 'minus-rounded' : 'check-rounded';\n }\n return 'union-rounded';\n }, [isActive, mouseEntered]);\n const classes = useStyles(props);\n const styles = `${classes.root} ${\n !isActive && 'toggleOff'\n } ${parentClassName}`;\n\n const handleMouseEnter = useCallback(() => {\n setMouseEntered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setMouseEntered(false);\n }, []);\n\n const handleOnClick = useCallback(() => {\n onClick(id);\n }, [id, onClick]);\n\n return (\n \n \n {text}\n \n
\n \n
\n \n );\n};\n\nexport default ChartToggle;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ChartToggle from '../../molecules/ChartToggle';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginBottom: '8px',\n },\n chartToggle: {\n marginBottom: '4px',\n marginRight: '8px',\n },\n});\n\nexport interface ChartToggleGroupProps {\n toggleItems: Array<{\n id: string;\n backgroundColor: string;\n color: string;\n isActive: boolean;\n }>;\n toggleOnClick: (toggleId: string) => void;\n className?: string;\n}\n\nconst ChartToggleGroup = (props: ChartToggleGroupProps) => {\n const { toggleItems, toggleOnClick, className: parentClassName } = props;\n const classes = useStyles(props);\n const styles = `${classes.root} ${parentClassName}`;\n return (\n
\n {toggleItems.map((toggleItem) => (\n \n ))}\n
\n );\n};\n\nexport default ChartToggleGroup;\n","import ThemeV2 from '../../componentsV2/theme';\n\nexport const colors = [\n { backgroundColor: ThemeV2.palette.blue1, color: ThemeV2.palette.blue7 },\n { backgroundColor: ThemeV2.palette.red1, color: ThemeV2.palette.dustRed7 },\n { backgroundColor: ThemeV2.palette.gold1, color: ThemeV2.palette.gold7 },\n { backgroundColor: ThemeV2.palette.green1, color: ThemeV2.palette.green7 },\n { backgroundColor: ThemeV2.palette.cyan1, color: ThemeV2.palette.cyan7 },\n { backgroundColor: ThemeV2.palette.purple1, color: ThemeV2.palette.purple7 },\n { backgroundColor: ThemeV2.palette.blue1, color: ThemeV2.palette.blue4 },\n { backgroundColor: ThemeV2.palette.red1, color: ThemeV2.palette.dustRed4 },\n { backgroundColor: ThemeV2.palette.gold1, color: ThemeV2.palette.gold4 },\n { backgroundColor: ThemeV2.palette.green1, color: ThemeV2.palette.green4 },\n { backgroundColor: ThemeV2.palette.cyan1, color: ThemeV2.palette.cyan4 },\n { backgroundColor: ThemeV2.palette.purple1, color: ThemeV2.palette.purple4 },\n { backgroundColor: ThemeV2.palette.blue1, color: ThemeV2.palette.blue9 },\n { backgroundColor: ThemeV2.palette.red1, color: ThemeV2.palette.dustRed9 },\n { backgroundColor: ThemeV2.palette.gold1, color: ThemeV2.palette.gold9 },\n { backgroundColor: ThemeV2.palette.green1, color: ThemeV2.palette.green9 },\n { backgroundColor: ThemeV2.palette.cyan1, color: ThemeV2.palette.cyan9 },\n { backgroundColor: ThemeV2.palette.purple1, color: ThemeV2.palette.purple9 },\n];\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport LinearGraph, { DataFormat } from '../../molecules/LinearGraph';\nimport LoadingPulse from '../../atoms/LoadingPulse';\nimport ChartToggleGroup from '../../organism/ChartToggleGroup';\nimport { colors } from '../../../Utils/analytics/common';\nimport {\n ANALYTICS_GRAPH_LOADING_SUBHEADER,\n ANALYTICS_GRAPH_LOADING_TEXT,\n} from '../../../Utils/data/analytics/common';\nimport Body from '../../atoms/Body';\n\nexport interface InputChartDataFormat {\n id: string;\n data: DataFormat[];\n}\n\nexport interface LinearGraphTemplateProps {\n chartData: InputChartDataFormat[] | undefined | null;\n chartHeight: string;\n chartWidth?: string;\n chartError?: boolean;\n chartName?: string;\n timeDuration?: string;\n}\n\nconst useStyles = makeStyles({\n loadingContainer: (props: { chartHeight: string; chartWidth?: string }) => ({\n height: props.chartHeight,\n width: props.chartWidth || 'initial',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n }),\n});\n\nconst LinearGraphTemplate = (props: LinearGraphTemplateProps) => {\n const classes = useStyles(props);\n const { chartData, chartHeight, chartWidth, chartError, timeDuration } =\n props;\n const initializeLocalState = useCallback(\n (dataFromProps: InputChartDataFormat[] | undefined | null) =>\n dataFromProps\n ? new Map(\n dataFromProps.map((item, index) => [\n item.id,\n {\n isActive: true,\n backgroundColor: colors[index % colors.length].backgroundColor,\n color: colors[index % colors.length].color,\n },\n ]),\n )\n : undefined,\n [],\n );\n const [itemLocalState, setItemLocalState] = useState(\n initializeLocalState(chartData),\n );\n useEffect(() => {\n setItemLocalState(initializeLocalState(chartData));\n }, [chartData, initializeLocalState]);\n const toggleData = useMemo(\n () =>\n itemLocalState && chartData\n ? chartData.map(({ id }) => ({\n id,\n color: itemLocalState.get(id)?.color || '',\n backgroundColor: itemLocalState.get(id)?.backgroundColor || '',\n isActive: Boolean(itemLocalState.get(id)?.isActive),\n }))\n : null,\n [chartData, itemLocalState],\n );\n const graphData = useMemo(\n () =>\n itemLocalState && chartData\n ? chartData.reduce(\n (\n acc: { id: string; color: string; data: DataFormat[] }[],\n { id, data },\n ) => {\n const localItem = itemLocalState?.get(id);\n if (localItem?.isActive) {\n acc.push({ id, data, color: localItem.color });\n }\n return acc;\n },\n [],\n )\n : null,\n [chartData, itemLocalState],\n );\n const isLinesDisabled = useMemo(\n () => graphData?.length === 0 && chartData?.length !== 0,\n [chartData, graphData],\n );\n const toggleOnClick = useCallback(\n (id) => {\n if (itemLocalState) {\n const {\n color = '',\n backgroundColor = '',\n isActive = true,\n } = itemLocalState.get(id) || {};\n setItemLocalState(\n new Map(\n itemLocalState.set(id, {\n color,\n backgroundColor,\n isActive: !isActive,\n }),\n ),\n );\n }\n },\n [itemLocalState],\n );\n\n if (!chartError && !(chartData && toggleData && graphData)) {\n return (\n
\n \n {ANALYTICS_GRAPH_LOADING_SUBHEADER}\n {ANALYTICS_GRAPH_LOADING_TEXT}\n
\n );\n }\n\n return (\n
\n {toggleData && (\n \n )}\n \n
\n );\n};\n\nexport default LinearGraphTemplate;\n","import React, { useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport ContentLoader from 'react-content-loader';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Heading from '../../atoms/Heading';\nimport Link from '../../atoms/Link';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Tooltip from '../../atoms/ToolTip';\nimport BenchmarkStatusIcon from '../BenchmarkStatusIcon';\nimport { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: '24px',\n },\n header: {\n color: ThemeV2.palette.gray9,\n },\n dataNumber: {\n height: '64px',\n lineHeight: '64px',\n fontSize: '56px',\n marginTop: '4px',\n marginBottom: '8px',\n },\n dataPercentage: {\n color: ThemeV2.palette.gray9,\n width: 'fit-content',\n marginRight: '8px',\n },\n timeComparisonText: {\n color: ThemeV2.palette.gray7,\n marginLeft: '4px',\n },\n link: {\n fontSize: '16px',\n lineHeight: '24px',\n },\n headerContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n tooltipContainer: {\n marginLeft: '8px',\n marginTop: '4px',\n },\n});\ninterface InfoDataType {\n headerText: string;\n dataNumber: number;\n percentChange: string;\n subText: string;\n subTextLink?: string;\n comparisonString: string;\n isLoading?: boolean;\n error?: boolean;\n headerTooltip?: string;\n engagementRank: BenchmarkStatus;\n}\n\ninterface HighlightAnalyticsNumberProps {\n infoData: InfoDataType;\n onShowTipsClick?: () => void;\n}\n\nconst HighlightAnalyticsNumber = ({\n infoData: {\n headerText,\n dataNumber,\n percentChange,\n subText,\n subTextLink,\n comparisonString,\n error,\n isLoading,\n headerTooltip,\n engagementRank,\n },\n onShowTipsClick,\n}: HighlightAnalyticsNumberProps) => {\n const classes = useStyles();\n const getChangeDetails = useMemo(() => {\n if (error) {\n return {\n changeValue: `${percentChange}%`,\n color: 'gray9',\n };\n }\n const number = parseFloat(percentChange);\n // CONVERTING STRINGS TO NUMBERS\n if (number > 0) {\n return {\n color: 'polarGreen7',\n changeValue: `+${number}%`,\n };\n }\n if (number < 0) {\n return {\n color: 'red6',\n changeValue: `${number}%`,\n };\n }\n return {\n color: 'gray9',\n changeValue: `${percentChange}%`,\n };\n }, [error, percentChange]);\n\n return (\n
\n {isLoading ? (\n \n \n \n \n \n \n \n ) : (\n <>\n
\n \n {headerText}\n \n {headerTooltip && (\n \n
\n \n
\n
\n )}\n
\n \n {error ? (\n \n ) : (\n dataNumber\n )}\n \n {subTextLink ? (\n \n {subText}\n \n ) : (\n
\n \n {subText}\n \n \n
\n )}\n
\n \n {getChangeDetails.changeValue}\n \n \n {` ${comparisonString}`}\n \n
\n \n )}\n
\n );\n};\n\nexport default HighlightAnalyticsNumber;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport ContentLoader from 'react-content-loader';\nimport Body from '../../atoms/Body';\nimport CircularProgress from '../CircularProgress';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n padding: '24px',\n },\n header: {\n color: ThemeV2.palette.gray9,\n },\n circleContainer: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: '16px',\n },\n});\n\ninterface PercentageIndicatorProps {\n infoData: InfoDataType;\n}\n\nexport interface InfoDataType {\n dataNumber: number;\n headerText: string;\n isLoading: boolean;\n error: boolean;\n engagementRank: BenchmarkStatus;\n}\n\nconst PercentageIndicator = ({\n infoData: { headerText, dataNumber, isLoading, error, engagementRank },\n}: PercentageIndicatorProps) => {\n const classes = useStyles();\n return (\n
\n {isLoading ? (\n \n \n \n \n ) : (\n <>\n \n {headerText || ''}\n \n
\n {error ? (\n \n ) : (\n \n )}\n
\n \n )}\n
\n );\n};\n\nexport default PercentageIndicator;\n","import React, { useMemo } from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport HighlightAnalyticsNumber from '../../molecules/HightlightAnalyticsNumber';\nimport PercantageIndicator from '../../molecules/PercentageIndicator';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Heading from '../../atoms/Heading';\nimport { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\n\ninterface PanelProps {\n isPercentageIndicators?: boolean;\n data: {\n headerText: string;\n dataNumber: number;\n percentChange: string;\n subText: string;\n subTextLink?: string;\n comparisonString: string;\n isLoading: boolean;\n error: boolean;\n headerTooltip?: string;\n engagementRank: BenchmarkStatus;\n }[];\n header?: string;\n statusUpdate: string;\n subHeader: string;\n numberOfItems?: number;\n onShowTipsClick?: () => void;\n}\n\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n },\n headerContainer: {\n marginBottom: '16px',\n },\n header: {\n margin: 0,\n marginBottom: '16px',\n },\n panelContainer: {\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n '& > div:not(:first-of-type)': {\n borderLeft: `1px solid ${ThemeV2.palette.gray4}`,\n },\n },\n});\n\nconst AnalyticsInfoPanel = ({\n isPercentageIndicators,\n data,\n header,\n statusUpdate,\n subHeader,\n numberOfItems = 4,\n onShowTipsClick,\n}: PanelProps) => {\n const classes = useStyles();\n const panelData = useMemo(\n () => data || new Array(numberOfItems).fill({}),\n [data, numberOfItems],\n );\n return (\n
\n
\n {header && (\n \n {header}\n \n )}\n {subHeader}\n \n {statusUpdate}\n \n
\n
\n {isPercentageIndicators\n ? panelData.map(\n ({\n dataNumber,\n error,\n isLoading,\n headerText,\n engagementRank,\n }) => (\n \n ),\n )\n : panelData.map((dataItem) => (\n \n ))}\n
\n
\n );\n};\n\nexport default AnalyticsInfoPanel;\n","import styled from 'styled-components';\nimport Modal from '../../atoms/Modal';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport LinkItem from '../../atoms/LinkItem';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const BenchMarkInfoModalRoot = styled(Modal)`\n width: 100%;\n max-width: 564px;\n`;\nBenchMarkInfoModalRoot.displayName = 'BenchMarkInfoModalRoot';\n\nexport const BenchMarkInfoModalHeader = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 16px;\n border-bottom: 1px solid ${ThemeV2.palette.gray4};\n`;\nBenchMarkInfoModalHeader.displayName = 'BenchMarkInfoModalHeader';\n\nexport const BenchMarkInfoModalBody = styled.div`\n padding: 32px;\n overflow-y: auto;\n max-height: 480px;\n`;\nBenchMarkInfoModalBody.displayName = 'BenchMarkInfoModalBody';\n\nexport const BenchMarkInfoModalTitle = styled(Heading)`\n color: ${ThemeV2.palette.gray9};\n margin: 0px auto;\n`;\nBenchMarkInfoModalTitle.displayName = 'BenchMarkInfoModalTitle';\n\nexport const BenchMarkInfoModalBodyHeading = styled(Body)`\n color: ${ThemeV2.palette.gray10};\n margin-top: 24px;\n`;\nBenchMarkInfoModalBodyHeading.displayName = 'BenchMarkInfoModalBodyHeading';\n\nexport const BenchMarkInfoModalBodyText = styled(Body)`\n color: ${ThemeV2.palette.gray8};\n`;\nBenchMarkInfoModalBodyText.displayName = 'BenchMarkInfoModalBodyText';\n\nexport const BenchMarkInfoModalBodyLink = styled(LinkItem)`\n color: ${ThemeV2.palette.geekBlue6};\n margin-top: 12px;\n &:hover {\n color: ${ThemeV2.palette.geekBlue5};\n }\n &:focus {\n color: ${ThemeV2.palette.geekBlue7};\n }\n`;\nBenchMarkInfoModalBodyLink.displayName = 'BenchMarkInfoModalBodyLink';\n\nexport const BenchMarkInfoModalFooter = styled.div`\n padding: 16px;\n border-top: 1px solid ${ThemeV2.palette.gray4};\n`;\nBenchMarkInfoModalFooter.displayName = 'BenchMarkInfoModalFooter';\n","import React, { useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport Button from '../../atoms/Button';\nimport IconButton from '../../atoms/IconButton_V2';\nimport { BenchMarkInfoModalProps } from './interface';\nimport {\n BenchMarkInfoModalRoot,\n BenchMarkInfoModalHeader,\n BenchMarkInfoModalBody,\n BenchMarkInfoModalTitle,\n BenchMarkInfoModalBodyHeading,\n BenchMarkInfoModalBodyText,\n BenchMarkInfoModalBodyLink,\n BenchMarkInfoModalFooter,\n} from './styles';\nimport {\n BENCHMARK_INFO_MODAL_BODY_TITLE,\n BENCHMARK_INFO_MODAL_LIST_1_HEADING,\n BENCHMARK_INFO_MODAL_LIST_1_LINK,\n BENCHMARK_INFO_MODAL_LIST_1_TEXT,\n BENCHMARK_INFO_MODAL_LIST_2_HEADING,\n BENCHMARK_INFO_MODAL_LIST_2_LINK,\n BENCHMARK_INFO_MODAL_LIST_2_TEXT,\n BENCHMARK_INFO_MODAL_LIST_3_HEADING,\n BENCHMARK_INFO_MODAL_LIST_3_LINK,\n BENCHMARK_INFO_MODAL_LIST_3_TEXT,\n BENCHMARK_INFO_MODAL_LIST_4_HEADING,\n BENCHMARK_INFO_MODAL_LIST_4_LINK,\n BENCHMARK_INFO_MODAL_LIST_4_TEXT,\n BENCHMARK_INFO_MODAL_TITLE,\n BENCHMARK_INFO_MODAL_FOOTER_BUTTON_TEXT,\n} from '../../../Utils/data/analytics/common';\nimport routesList from '../../../aV2/routes/routesList';\n\nconst BenchMarkInfoModal = (props: BenchMarkInfoModalProps) => {\n const { isOpen, onModalClose, onBookACallClick } = props;\n const { push } = useHistory();\n const handleGiveRecognitionClick = useCallback(() => {\n push(routesList.HOME);\n window.scrollTo(0, 0);\n }, [push]);\n const handleViewBlogPostClick = useCallback(() => {\n window.open(\n 'https://joinassembly.com/blog/2020/10/what-makes-recognition-meaningful',\n 'blank',\n );\n }, []);\n const handleBookACallClick = useCallback(() => {\n if (onBookACallClick) {\n onBookACallClick();\n }\n }, [onBookACallClick]);\n return (\n \n \n \n {BENCHMARK_INFO_MODAL_TITLE}\n \n \n \n \n \n {BENCHMARK_INFO_MODAL_BODY_TITLE}\n \n
\n \n {BENCHMARK_INFO_MODAL_LIST_1_HEADING}\n \n \n {BENCHMARK_INFO_MODAL_LIST_1_TEXT}\n \n \n {BENCHMARK_INFO_MODAL_LIST_1_LINK}\n \n
\n
\n \n {BENCHMARK_INFO_MODAL_LIST_2_HEADING}\n \n \n {BENCHMARK_INFO_MODAL_LIST_2_TEXT}\n \n \n {BENCHMARK_INFO_MODAL_LIST_2_LINK}\n \n
\n
\n \n {BENCHMARK_INFO_MODAL_LIST_3_HEADING}\n \n \n {BENCHMARK_INFO_MODAL_LIST_3_TEXT}\n \n \n {BENCHMARK_INFO_MODAL_LIST_3_LINK}\n \n
\n
\n \n {BENCHMARK_INFO_MODAL_LIST_4_HEADING}\n \n \n {BENCHMARK_INFO_MODAL_LIST_4_TEXT}\n \n \n {BENCHMARK_INFO_MODAL_LIST_4_LINK}\n \n
\n
\n \n \n \n
\n );\n};\n\nexport default BenchMarkInfoModal;\n","import styled from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const AccordionWrapper = styled.div`\n background: ${ThemeV2.palette.gray1};\n margin: 0 24px 24px 24px;\n filter: drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.15));\n border-radius: 4px;\n`;\n\nexport const AccordionSummary = styled.div`\n position: relative;\n max-width: 100%;\n padding: 32px 56px 32px 32px;\n cursor: pointer;\n`;\n\nexport const AccordionDetails = styled.div<{\n height: string;\n isAccordionOpen: boolean;\n}>`\n max-width: 100%;\n max-height: ${({ height }) => height};\n overflow: auto;\n transition: max-height 0.4s ease-out;\n`;\n\nexport const AccordionContent = styled.div`\n padding: 32px 32px;\n border-top: 1px solid ${ThemeV2.palette.gray4};\n`;\n\nexport const SvgIconWrapper = styled.div`\n position: absolute;\n right: 32px;\n top: 32px;\n`;\n","import React, { useState, useCallback, useRef } from 'react';\n\nimport SVGIcon from '../../atoms/SVGIcon';\nimport useToggle from '../../../hooks/useToggle';\nimport { SingleAccordionProps } from './interface';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport {\n AccordionWrapper,\n AccordionSummary,\n AccordionDetails,\n AccordionContent,\n SvgIconWrapper,\n} from './styles';\n\nconst SingleAccordion = (props: SingleAccordionProps) => {\n const { summaryContent, detailsContent } = props;\n const {\n models: { toggleValue: isAccordionOpen },\n operations: { setToggleValue: toggleAccordionOpen },\n } = useToggle();\n\n const [height, setHeight] = useState('0px');\n const accordionContentRefElement = useRef(null);\n\n const handleToggleClick = useCallback(() => {\n const accordionContentHeight =\n accordionContentRefElement.current !== null\n ? `${accordionContentRefElement.current.scrollHeight}px`\n : '0px';\n toggleAccordionOpen();\n setHeight(isAccordionOpen ? '0px' : accordionContentHeight);\n }, [isAccordionOpen, toggleAccordionOpen]);\n\n return (\n \n \n {summaryContent}\n \n \n \n \n \n {detailsContent}\n \n \n );\n};\n\nexport default SingleAccordion;\n","import styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport Heading from '../../atoms/Heading';\nimport Button from '../../atoms/Button';\n\nexport const AdminAnalyticsContainer = styled.div`\n background: ${ThemeV2.palette.gray1};\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n border-radius: 2px;\n margin-right: -15px;\n margin-left: -15px;\n padding-bottom: 108px;\n`;\n\nexport const Breadcrumbs = styled.div`\n padding-top: 16px;\n padding-left: 24px;\n margin-bottom: 48px;\n`;\n\nexport const InfoTypeContainer = styled.div`\n margin: 0 24px;\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n background-color: ${ThemeV2.palette.gray1};\n padding: 32px;\n margin-bottom: 24px;\n border-radius: 4px;\n`;\n\nexport const InfoTypeHeader = styled(Heading)`\n margin: 0;\n margin-bottom: 16px;\n`;\n\nexport const GraphContainer = styled.div`\n padding: 0 16px;\n`;\n\nexport const GraphTitleContainer = styled.div`\n margin-bottom: 24px;\n`;\n\nexport const BookCallButton = styled(Button)`\n width: fit-content;\n margin-top: 8px;\n`;\n\nexport const BookCallModal = styled.div`\n min-width: 800px;\n min-height: 700px;\n & .meetings-iframe-container {\n padding: 0px 8px;\n }\n`;\n\nexport const GraphDropdownContainer = styled.div`\n margin-bottom: 24px;\n display: flex;\n justify-content: space-between;\n margin-left: -8px;\n`;\n\nexport const MultiDropdownContainer = styled.div`\n & > div {\n margin-right: 12px;\n }\n`;\n\nexport const BenchmarkContainer = styled.div`\n margin-top: 20px;\n display: flex;\n align-items: flex-start;\n`;\n\nexport const BenchmarkContentHeading = styled(Heading)`\n margin-bottom: 0;\n`;\n\nexport const BenchmarkContent = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 16px;\n`;\n\nexport const IconWrapper = styled.div<{ error?: boolean }>`\n margin-top: 6px;\n ${({ error }) =>\n error &&\n `\n background-color: ${ThemeV2.palette.gray3};\n border-radius: 100%;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n & path {\n color: ${ThemeV2.palette.gray6};\n }\n `};\n`;\n\nexport const KeyTypeContainer = styled.div`\n margin-top: 24px;\n display: flex;\n`;\n\nexport const TypeContainer = styled.div`\n width: 33.3%;\n display: flex;\n padding-right: 48px;\n & span {\n margin-right: 16px;\n }\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport ContentLoader from 'react-content-loader';\nimport { Helmet } from 'react-helmet';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport AdminBreadCrumps from '../../../screens/admin/shared/AdminBreadCrumps';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport AnalyticsUpgradeFreePlan from '../../molecules/AnalyticsUpgradeFreePlan';\nimport Dropdown from '../../atoms/Dropdown';\nimport LinearGraphTemplate from '../../templates/LinearGraphTemplate';\nimport AnalyticsInfoPanel from '../../organism/AnalyticsInfoPanel';\nimport Modal from '../../atoms/Modal';\nimport BenchMarkInfoModal from '../../molecules/BenchmarkInfoModal';\n\nimport {\n PEOPLE_SUMMARY_GRAPH_HEADER,\n PEOPLE_SUMMARY_GRAPH_SUB_HEADER,\n PEOPLE_SUMMARY_INFO_HEADER,\n PEOPLE_SUMMARY_INFO_SUB_HEADER,\n PROFILE_INFO_HEADER,\n PROFILE_INFO_SUB_HEADER,\n RECOGNITION_SUMMARY_INFO_HEADER,\n RECOGNITION_SUMMARY_INFO_SUB_HEADER,\n RECOGNITION_SUMMARY_GRAPH_HEADER,\n RECOGNITION_SUMMARY_GRAPH_SUB_HEADER,\n CORE_VALUES_BADGES_GRAPH_HEADER,\n CORE_VALUES_BADGES_GRAPH_SUB_HEADER,\n PEOPLE,\n RECOGNITION,\n} from '../../../Utils/data/analytics/common';\nimport PlanUpgradeModalContainer from '../../../containersV2/PlanUpgradeModalContainer';\nimport { DropdownItem } from '../../../controllers/admin/settings/insights/interfaces';\nimport { DataFormat } from '../../molecules/LinearGraph';\nimport SingleAccordion from '../../organism/SingleAccordion';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport Divider from '../../atoms/Divider';\nimport {\n ACCORDING_SUMMARY_HEADER,\n ACCORDING_SUMMARY_SUBHEADER,\n TOP_PERFORMER_HEADER,\n BENCHMARK_TOP_PERFORMER_COMMENT,\n BENCHMARK_DOING_GREAT_COMMENT,\n BENCHMARK_NEED_A_BOOST_COMMENT,\n BENCHMARK_NEED_A_BOOST_BUTTON,\n BENCHMARK_ERROR_COMMENT,\n BENCHMARK_ERROR_HEADER,\n BENCHMARK_KEY_HEADER,\n BENCHMARK_KEY_CONTENT,\n BENCHMARK_KEYS,\n DOING_GREAT_HEADER,\n NEED_A_BOOST_HEADER,\n BENCHMARK_TALK_WITH_MANAGER,\n} from '../../../constants/analytics/benchmark/constants';\n\nimport {\n AdminAnalyticsContainer,\n InfoTypeContainer,\n Breadcrumbs,\n GraphContainer,\n GraphDropdownContainer,\n IconWrapper,\n GraphTitleContainer,\n InfoTypeHeader,\n MultiDropdownContainer,\n BenchmarkContainer,\n KeyTypeContainer,\n BenchmarkContent,\n TypeContainer,\n BookCallButton,\n BenchmarkContentHeading,\n BookCallModal,\n} from './styles';\nimport { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\nimport IconButton from '../../atoms/IconButton_V2';\nimport { Flex } from '../../../Utils/styles/display';\n\ntype SummaryItem = {\n dataNumber: number;\n headerText: string;\n subTextLink?: string;\n percentChange: string;\n comparisonString: string;\n subText: string;\n headerTooltip?: string;\n isLoading: boolean;\n error: boolean;\n engagementRank: BenchmarkStatus;\n};\n\ninterface GraphLineData {\n id: string;\n data: DataFormat[];\n}\n\ninterface AdminAnalyticsPageProps {\n peopleSummaryData: SummaryItem[];\n selectedPeopleTimelineId: number;\n peopleGraphData: GraphLineData[] | null;\n peopleDataError?: Error;\n profileInfoData: SummaryItem[];\n recognitionSummaryData: SummaryItem[];\n selectedRecognitionTimelineId: number;\n recognitionGraphData: GraphLineData[] | null;\n recognitionDataError?: Error;\n selectedValueId: number;\n onValueDropdownChange: (optionId: number) => void;\n selectedValueTimelineId: number;\n selectedChartData: GraphLineData[] | null;\n selectedChartError?: Error;\n adminAnalyticsAccess: boolean;\n toggleUpgradeModalOpen: () => void;\n isUpgradeModalOpen: boolean;\n isSuperAdmin?: boolean;\n assemblyName?: string;\n onViewDropdownChange: (type: string, optionId: number) => void;\n onTimelineDropdownChange: (type: string, optionId: number) => void;\n selectedValueViewId: number;\n selectedPeopleViewId: number;\n selectedRecognitionViewId: number;\n monthlyTimelineDropdownItems: DropdownItem[];\n weeklyTimelineDropdownItems: DropdownItem[];\n viewDropdownItems: DropdownItem[];\n valueDropdownItems: DropdownItem[];\n overallEngagementStatus?: BenchmarkStatus;\n overallEngagementError?: Error;\n overallEngagementRequestLoading?: boolean;\n showBookCallModal: boolean;\n toggleBookCallModal: () => void;\n showTipsModal: boolean;\n toggleTipsModal: () => void;\n}\n\nconst AdminAnalyticsPage = ({\n adminAnalyticsAccess,\n peopleDataError,\n peopleSummaryData,\n peopleGraphData,\n selectedPeopleTimelineId,\n profileInfoData,\n onValueDropdownChange,\n monthlyTimelineDropdownItems,\n weeklyTimelineDropdownItems,\n selectedValueTimelineId,\n selectedChartData,\n selectedChartError,\n selectedRecognitionTimelineId,\n selectedValueId,\n recognitionSummaryData,\n recognitionGraphData,\n recognitionDataError,\n toggleUpgradeModalOpen,\n isUpgradeModalOpen,\n isSuperAdmin,\n assemblyName,\n onViewDropdownChange,\n selectedPeopleViewId,\n selectedRecognitionViewId,\n selectedValueViewId,\n onTimelineDropdownChange,\n viewDropdownItems,\n valueDropdownItems,\n overallEngagementStatus,\n overallEngagementError,\n overallEngagementRequestLoading,\n showBookCallModal,\n toggleBookCallModal,\n showTipsModal,\n toggleTipsModal,\n}: AdminAnalyticsPageProps) => {\n const handleBookCallModalClick = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n toggleBookCallModal();\n },\n [toggleBookCallModal],\n );\n const PEOPLE_SUMMARY_HEADER = useMemo(\n () =>\n PEOPLE_SUMMARY_INFO_HEADER.replace(':assemblyName', assemblyName || ''),\n [assemblyName],\n );\n const RECOGNITION_SUMMARY_HEADER = useMemo(\n () =>\n RECOGNITION_SUMMARY_INFO_HEADER.replace(\n ':assemblyName',\n assemblyName || '',\n ),\n [assemblyName],\n );\n const RECOGNITION_GRAPH_HEADER = useMemo(\n () =>\n RECOGNITION_SUMMARY_GRAPH_HEADER.replace(\n ':assemblyName',\n assemblyName || '',\n ),\n [assemblyName],\n );\n const CORE_VALUES_BADGES_HEADER = useMemo(\n () =>\n CORE_VALUES_BADGES_GRAPH_HEADER.replace(\n ':assemblyName',\n assemblyName || '',\n ),\n [assemblyName],\n );\n const [\n onPeopleViewDropdownChange,\n onRecognitionViewDropdownChange,\n onValueViewDropdownChange,\n ] = useMemo(\n () => [\n (optionId: number) => onViewDropdownChange('people', optionId),\n (optionId: number) => onViewDropdownChange('recognition', optionId),\n (optionId: number) => onViewDropdownChange('value', optionId),\n ],\n [onViewDropdownChange],\n );\n const [\n onPeopleTimelineDropdownChange,\n onRecognitionTimelineDropdownChange,\n onValueTimelineDropdownChange,\n ] = useMemo(\n () => [\n (optionId: number) => onTimelineDropdownChange('people', optionId),\n (optionId: number) => onTimelineDropdownChange('recognition', optionId),\n (optionId: number) => onTimelineDropdownChange('value', optionId),\n ],\n [onTimelineDropdownChange],\n );\n const peopleTimelineItems = useMemo(\n () =>\n selectedPeopleViewId === viewDropdownItems[0].id\n ? weeklyTimelineDropdownItems\n : monthlyTimelineDropdownItems,\n [\n monthlyTimelineDropdownItems,\n selectedPeopleViewId,\n viewDropdownItems,\n weeklyTimelineDropdownItems,\n ],\n );\n const recognitionTimelineItems = useMemo(\n () =>\n selectedRecognitionViewId === viewDropdownItems[0].id\n ? weeklyTimelineDropdownItems\n : monthlyTimelineDropdownItems,\n [\n monthlyTimelineDropdownItems,\n selectedRecognitionViewId,\n viewDropdownItems,\n weeklyTimelineDropdownItems,\n ],\n );\n const valueTimelineItems = useMemo(\n () =>\n selectedValueViewId === viewDropdownItems[0].id\n ? weeklyTimelineDropdownItems\n : monthlyTimelineDropdownItems,\n [\n monthlyTimelineDropdownItems,\n selectedValueViewId,\n viewDropdownItems,\n weeklyTimelineDropdownItems,\n ],\n );\n const [\n overallEngagementIcon,\n overallEngagementHeader,\n overallEngagementComment,\n showBookCallButton,\n ] = useMemo(() => {\n switch (overallEngagementStatus) {\n case BenchmarkStatus.TOP_PERFORMER: {\n return [\n 'benchmark-top-performer',\n TOP_PERFORMER_HEADER,\n BENCHMARK_TOP_PERFORMER_COMMENT,\n false,\n ];\n }\n case BenchmarkStatus.NEED_A_BOOST: {\n return [\n 'benchmark-need-boost',\n NEED_A_BOOST_HEADER,\n BENCHMARK_NEED_A_BOOST_COMMENT,\n true,\n ];\n }\n case BenchmarkStatus.DOING_GREAT:\n default: {\n return [\n 'benchmark-doing-great',\n DOING_GREAT_HEADER,\n BENCHMARK_DOING_GREAT_COMMENT,\n false,\n ];\n }\n }\n }, [overallEngagementStatus]);\n const AccordionSummaryContent = useCallback(() => {\n const benchmarkingError = Boolean(overallEngagementError);\n if (overallEngagementRequestLoading) {\n return (\n \n \n \n \n \n \n \n );\n }\n return (\n \n \n \n \n \n \n {benchmarkingError\n ? BENCHMARK_ERROR_HEADER\n : overallEngagementHeader}\n \n \n {benchmarkingError\n ? BENCHMARK_ERROR_COMMENT\n : overallEngagementComment}\n \n {showBookCallButton && (\n \n {BENCHMARK_NEED_A_BOOST_BUTTON}\n \n )}\n \n \n );\n }, [\n handleBookCallModalClick,\n overallEngagementComment,\n overallEngagementError,\n overallEngagementHeader,\n overallEngagementIcon,\n overallEngagementRequestLoading,\n showBookCallButton,\n ]);\n return (\n \n \n \n \n \n \n \n \n \n {BENCHMARK_TALK_WITH_MANAGER}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {ACCORDING_SUMMARY_HEADER}\n \n {ACCORDING_SUMMARY_SUBHEADER}\n \n
\n }\n detailsContent={\n
\n {BENCHMARK_KEY_HEADER}\n {BENCHMARK_KEY_CONTENT}\n \n {BENCHMARK_KEYS.map((type) => (\n \n \n
\n {type.header}\n {type.content}\n
\n
\n ))}\n
\n
\n }\n />\n \n {PEOPLE}\n \n \n \n \n {PEOPLE_SUMMARY_GRAPH_HEADER}\n \n {PEOPLE_SUMMARY_GRAPH_SUB_HEADER}\n \n \n \n \n \n \n \n \n \n \n \n \n {RECOGNITION}\n \n \n \n \n {RECOGNITION_GRAPH_HEADER}\n \n {RECOGNITION_SUMMARY_GRAPH_SUB_HEADER}\n \n \n \n \n \n \n \n \n \n \n \n {CORE_VALUES_BADGES_HEADER}\n \n {CORE_VALUES_BADGES_GRAPH_SUB_HEADER}\n \n \n \n \n \n \n \n \n \n \n \n {isUpgradeModalOpen && (\n \n )}\n \n \n );\n};\n\nexport default AdminAnalyticsPage;\n","import React from 'react';\nimport useAdminInsightsModel from './useAdminInsightsModel';\nimport useAdminInsightsLogic from './useAdminInsightsLogic';\nimport AdminAnalyticsPage from '../../../../atomic/pages/AdminAnalytics';\n\ninterface AdminInsightsPageProps {\n isSuperAdmin?: boolean;\n assemblyId?: string;\n assemblyName?: string;\n}\n\nconst AdminInsightsPageController = ({\n isSuperAdmin,\n assemblyId,\n assemblyName,\n}: AdminInsightsPageProps) => {\n const {\n actions,\n data: {\n peopleSummaryData,\n recognitionSummaryData,\n profileInfoData,\n peopleGraphData,\n recognitionGraphData,\n coreValuesGraphData,\n badgesGraphData,\n adminAnalyticsAccess,\n currentCompanyName,\n assemblyCreatedAt,\n overallEngagementStatus,\n },\n metadata: {\n badgesDataError,\n coreValuesDataError,\n recognitionDataError,\n peopleDataError,\n overallEngagementError,\n overallEngagementRequestLoading,\n },\n } = useAdminInsightsModel();\n const {\n models: {\n selectedValueId,\n selectedValueTimelineId,\n selectedPeopleTimelineId,\n selectedRecognitionTimelineId,\n isUpgradeModalOpen,\n selectedChartData,\n selectedChartError,\n selectedPeopleViewId,\n selectedRecognitionViewId,\n selectedValueViewId,\n monthlyTimelineItems,\n weeklyTimelineItems,\n valueDropdownItems,\n viewDropdownItems,\n showBookCallModal,\n showTipsModal,\n },\n operations: {\n onValueDropdownChange,\n toggleUpgradeModalOpen,\n onViewDropdownChange,\n onTimelineDropdownChange,\n toggleBookCallModal,\n toggleTipsModal,\n },\n } = useAdminInsightsLogic(\n actions,\n adminAnalyticsAccess,\n coreValuesGraphData,\n badgesGraphData,\n coreValuesDataError,\n badgesDataError,\n assemblyId,\n isSuperAdmin,\n assemblyCreatedAt,\n );\n return (\n \n );\n};\n\nexport default AdminInsightsPageController;\n","export const orderSortFilterMenuItems = [\n {\n width: '132px',\n filterPlaceholder: 'Filter by',\n menuItems: [\n {\n id: 1,\n value: 'All messages',\n },\n {\n id: 2,\n value: 'Relevant',\n },\n ],\n },\n {\n width: '96px',\n filterPlaceholder: 'Order by',\n menuItems: [\n {\n id: 1,\n value: 'Newest',\n },\n {\n id: 2,\n value: 'Oldest',\n },\n ],\n },\n];\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport { Formik } from 'formik';\nimport * as Yup from 'yup';\nimport moment from 'moment';\n\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { OptionsProps } from '../../molecules/DropdownWithMultiSelect';\nimport Button from '../../atoms/Button/index';\nimport Field from '../../molecules/Field';\n\nconst useStyles = makeStyles({\n root: {\n backgroundColor: ThemeV2.palette.gray1,\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n borderRadius: '4px',\n padding: '24px 16px',\n margin: '0',\n },\n formGroup: {\n marginBottom: '16px',\n },\n label: {\n margin: '1rem 0 .25rem',\n },\n caption: {\n margin: '.25rem 0',\n color: ThemeV2.palette.gray7,\n },\n cancelButton: {\n marginRight: '.5rem',\n },\n clearFilter: {\n color: `${ThemeV2.palette.gray8} !important`,\n marginRight: 'auto',\n },\n dropdownFooter: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '16px',\n },\n displayFlex: {\n display: 'flex',\n },\n});\n\nexport interface UseSearchDropDownValues {\n from: OptionsProps[];\n to: OptionsProps[];\n keywords: string[];\n currencyMin: number;\n currencyMax: number;\n startDate?: Date;\n endDate?: Date;\n}\n\nexport const defaultValues: UseSearchDropDownValues = {\n from: [],\n to: [],\n keywords: [],\n currencyMin: 0,\n currencyMax: 0,\n};\n\nexport interface SearchDropdownProps {\n formValues: UseSearchDropDownValues;\n onAutoCompleteInputChange: (\n event: React.ChangeEvent,\n ) => void;\n onSearchClick: (values: UseSearchDropDownValues) => void;\n onCancelClick: () => void;\n autoCompleteOptions: OptionsProps[];\n keywordsOptions: string[];\n isAutoCompleteLoading?: boolean;\n onAutoCompleteFocus?: () => void;\n autoCompleteEmptyText?: string;\n currencyNamePlural: string;\n hideUserFieldSearch?: boolean;\n}\n\nconst SearchDropdown = (props: SearchDropdownProps) => {\n const {\n formValues,\n onAutoCompleteInputChange,\n onSearchClick,\n onCancelClick,\n autoCompleteOptions,\n keywordsOptions,\n isAutoCompleteLoading = false,\n onAutoCompleteFocus,\n autoCompleteEmptyText,\n currencyNamePlural,\n hideUserFieldSearch = false,\n } = props;\n const classes = useStyles();\n\n // Reference for cyclic dependency\n // https://builddeploy.co.uk/conditional-validation-in-yup-avoiding-cyclic-errors/\n const validationSchema = Yup.object().shape(\n {\n from: Yup.array().of(\n Yup.object().shape({\n displayText: Yup.string(),\n id: Yup.string(),\n secondaryText: Yup.string(),\n img: Yup.string().notRequired(),\n }),\n ),\n to: Yup.array().of(\n Yup.object().shape({\n displayText: Yup.string(),\n id: Yup.string(),\n secondaryText: Yup.string(),\n img: Yup.string().notRequired(),\n }),\n ),\n keywords: Yup.array(),\n currencyMin: Yup.number()\n // to not show 0 in text box\n .transform((cv) => (cv === 0 ? undefined : cv))\n .positive(`${currencyNamePlural} Minimum must be a Positive value`)\n .when(\n ['currencyMax'],\n (currencyMax: number, schema: Yup.NumberSchema) =>\n currencyMax !== undefined\n ? schema.lessThan(\n currencyMax,\n `${currencyNamePlural} Maximum should be greater than ${currencyNamePlural} Minimum`,\n )\n : schema,\n ),\n currencyMax: Yup.number()\n .transform((cv) => (cv === 0 ? undefined : cv))\n .positive(`${currencyNamePlural} Maximum must be a Positive value`)\n .when(\n 'currencyMin',\n (currencyMin: number | undefined, schema: Yup.NumberSchema) =>\n currencyMin !== undefined\n ? schema.moreThan(\n currencyMin,\n `${currencyNamePlural} Maximum should be greater than ${currencyNamePlural} Minimum`,\n )\n : schema,\n ),\n startDate: Yup.date().when(\n 'endDate',\n (endDate: Date | undefined, schema: Yup.DateSchema) =>\n endDate !== undefined\n ? schema.max(endDate, 'End Date should be greater than Start Date')\n : schema,\n ),\n endDate: Yup.date().when(\n 'startDate',\n (startDate: Date | undefined, schema: Yup.DateSchema) =>\n startDate !== undefined\n ? schema.min(\n startDate,\n 'End Date should be greater than Start Date',\n )\n : schema,\n ),\n },\n [\n ['currencyMin', 'currencyMax'],\n ['startDate', 'endDate'],\n ],\n );\n\n const nextDay = moment.utc().add(1, 'day').toDate();\n\n return (\n
\n \n {({ dirty, isValid, handleSubmit, values, resetForm }) => (\n <>\n {!hideUserFieldSearch && (\n
\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n
\n )}\n {!hideUserFieldSearch && (\n
\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n
\n )}\n\n
\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n
\n {/* TODO: Add start and \"date\" functionality. This is just a place holder */}\n
\n \n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n values?.endDate\n ? day > values.endDate || day > nextDay\n : day > nextDay\n }\n />\n \n \n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n values?.startDate\n ? day < values.startDate || day > nextDay\n : day > nextDay\n }\n />\n \n
\n
\n \n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n \n \n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n \n
\n
\n {\n resetForm({ values: defaultValues });\n }}\n size=\"small\"\n variant=\"text\"\n className={classes.clearFilter}\n >\n Clear Filters\n \n \n Cancel\n \n \n Search\n \n
\n \n )}\n \n
\n );\n};\n\nexport default SearchDropdown;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2, API_URL_WITH_V3 } from '../../config';\nimport { AuthHeaders } from '../shared/HeaderToken';\nimport { getHomeDetailsAction } from '../Home';\nimport Logger from '../../Utils/Logger';\nimport { SIGN_OUT } from '../Session';\nimport {\n showErrorMessage,\n showInfoMessage,\n showSuccessMessage,\n} from '../../Utils/flashHandler';\nimport filterHash from '../../Utils/objectUtils/filterHash';\nimport { orderSortFilterMenuItems } from './data';\nimport { defaultValues } from '../../atomic/organism/SearchDropdown';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n FEED: `${API_URL_WITH_V2}/user/feed`,\n FEED_ADMIN: `${API_URL_WITH_V2}/user/feed/admin`,\n COMMENT_ADMIN: (feedId, commentId) =>\n `${API_URL_WITH_V2}/user/feed/${feedId}/comment/admin/${commentId}`,\n FEED_SEARCH: `${API_URL_WITH_V3}/feed/posts/search`,\n};\n\nconst INITIAL_DATA = {\n feed: {},\n newFeed: {},\n isEndOfFeed: false,\n lastPostId: null,\n orderDropdownId: orderSortFilterMenuItems[0].menuItems[0].id,\n sortDropdownId: orderSortFilterMenuItems[1].menuItems[0].id,\n search: { ...defaultValues },\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const POST_DELETED_BY_ADMIN = 'POST_DELETED_BY_ADMIN';\nexport const REMOVE_FEED_POST_SUCCESS = 'REMOVE_FEED_POST_SUCCESS';\nexport const FEED_REQUEST_FAILED = 'feed_request_failed';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst removePostSuccess = (feedId) => ({\n type: REMOVE_FEED_POST_SUCCESS,\n feedId,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: FEED_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const feedActions = {\n removePostSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const removePost = (props) => {\n const { feedId, keepCarrots } = props;\n return async (dispatch) => {\n try {\n const urlPath = keepCarrots ? 'deleteFeed' : 'deleteFeedWithCarrots';\n dispatch(showInfoMessage('Deleting Post.'));\n const res = await axios.put(\n `${apiEndpoints.FEED_ADMIN}/${feedId}/${urlPath}`,\n {\n feedID: feedId,\n },\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n dispatch(getHomeDetailsAction());\n dispatch(feedActions.removePostSuccess(feedId));\n dispatch(showSuccessMessage('Post has been deleted'));\n } else {\n // @vijay\n // dispatch the failure with msg as server error\n // Check below - we will handle all this site wide.\n }\n } catch (error) {\n // homeProcessError(error, dispatch, feedActions);\n dispatch(showErrorMessage('Deleting post failed, please try again.'));\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = INITIAL_DATA, action) => {\n switch (action.type) {\n case REMOVE_FEED_POST_SUCCESS: {\n const feedId = action.feedId || null;\n const feed = filterHash(state.feed || {}, (post) => post._id !== feedId);\n return {\n ...state,\n feed,\n error: null,\n };\n }\n case POST_DELETED_BY_ADMIN: {\n const { postId } = action;\n const deletedPosts = state.deletedPosts || [];\n return {\n ...state,\n deletedPosts: [...deletedPosts, postId],\n error: null,\n };\n }\n case FEED_REQUEST_FAILED:\n return {\n ...state,\n error: action.errorMessage,\n };\n case SIGN_OUT:\n return INITIAL_DATA;\n default:\n return state;\n }\n};\n","import { BenchmarkStatus } from '../../../interfaces/analytics/benchmarking/interfaces';\n\nexport enum VariantTypes {\n STATIC = 'static',\n INDETERMINATE = 'indeterminate',\n DETERMINATE = 'determinate',\n}\n\nexport interface CircularProgressProps {\n variant: VariantTypes;\n showValue: boolean;\n value?: number;\n size: string;\n showCircularShadow: boolean;\n color: string;\n shadowColor: string;\n valueColor: string;\n showBenchmarkStatus?: boolean;\n benchmarkStatus?: BenchmarkStatus;\n thickness?: number;\n backgroundColor?: string;\n}\n","import styled from 'styled-components';\nimport { makeStyles, Paper } from '@material-ui/core';\nimport Chip from '../../molecules/Chip';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { device } from '../../../constants/layout';\n\nexport const useStyles = makeStyles({\n root: ({ inputBaseRightPadding }: { inputBaseRightPadding?: string }) => ({\n [`@media ${device.mobile}`]: {\n maxWidth: '80vw',\n },\n fontFamily: ThemeV2.typography.adminFontFamily,\n '& .MuiInputBase-root.MuiOutlinedInput-root.MuiAutocomplete-inputRoot': {\n padding: 0,\n paddingRight: inputBaseRightPadding || '0',\n '& .MuiAutocomplete-input:first-child': {\n paddingLeft: '14px',\n },\n },\n '& .MuiAutocomplete-endAdornment': {\n top: '14px',\n },\n '& .MuiAutocomplete-popupIndicator': {\n '& .MuiSvgIcon-root': {\n width: '16px',\n height: '16px',\n fill: ThemeV2.palette.gray9,\n },\n },\n }),\n});\n\nexport const StyledPaper = styled(Paper)`\n ul {\n margin: 4px;\n padding: 4px 0;\n max-height: 30vh;\n & > li {\n padding: 0;\n padding-left: 0;\n .MuiListSubheader-root.MuiAutocomplete-groupLabel {\n padding: 4px 12px;\n font-size: 12px;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n line-height: 20px;\n color: ${ThemeV2.palette.gray7};\n }\n &.MuiAutocomplete-option {\n padding-left: 0;\n min-height: fit-content;\n > div {\n padding: 4px 12px;\n width: 100%;\n }\n }\n &.MuiAutocomplete-option[data-focus='true'] {\n background-color: transparent;\n & > div {\n border-radius: 4px;\n background: ${ThemeV2.palette.geekBlue1};\n color: ${ThemeV2.palette.geekBlue6};\n }\n }\n }\n }\n`;\n\nexport const StyledDynamicPaper = styled(StyledPaper)`\n width: fit-content;\n ul {\n overflow-x: hidden;\n }\n`;\n\nexport const StyledLoader = styled.div`\n margin-right: 28px;\n`;\n\nexport const StyledChip = styled(Chip)`\n margin-top: 4px;\n margin-right: 0px;\n margin-left: 12px;\n max-width: 60%;\n`;\n","import ContentLoader from 'react-content-loader';\nimport React from 'react';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst AutocompleteOptionLoader = () => (\n \n \n \n \n);\n\nexport default AutocompleteOptionLoader;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport Autocomplete, {\n AutocompleteRenderOptionState,\n} from '@material-ui/lab/Autocomplete';\nimport TextField from '../../molecules/NewTextfield';\nimport DropdownItem from '../../molecules/DropdownListItem_V2';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport {\n StyledChip,\n StyledPaper,\n useStyles,\n StyledLoader,\n StyledDynamicPaper,\n} from './styles';\nimport {\n AutoCompleteCoreProps,\n AutocompleteDropdownItem,\n SingleSelectAutoCompleteProps,\n MultiSelectAutoCompleteProps,\n PossibleAutoCompleteValues,\n} from './interfaces';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { VariantTypes } from '../../molecules/CircularProgress/interfaces';\nimport CircularProgress from '../../molecules/CircularProgress';\nimport OptionLoader from './OptionLoader';\n\nconst LOADING_SKELETON = 'loadingSkeleton';\n\nfunction AutoCompleteCore({\n autoSelect = false,\n autoFocus = false,\n groupByCategory,\n label,\n placeholder,\n options,\n onChange,\n value,\n className,\n multiple = true,\n disableCloseOnSelect,\n limitTags,\n loading,\n textboxSize = 'medium',\n textboxValue,\n onTextboxValueChange,\n filterOptionsFunction,\n onBlur,\n onFocus,\n inputBaseRightPadding,\n ListboxProps,\n checkIfDisabled,\n removeElevation,\n disabled = false,\n hasError = false,\n multiline = false,\n helperText,\n showClearIcon = true,\n expandableDropdown,\n getOptionLabel = (option: AutocompleteDropdownItem) =>\n option.title || '',\n dataTestId,\n validation,\n}: AutoCompleteCoreProps) {\n const classes = useStyles({ inputBaseRightPadding });\n const [inputValue, setInputValue] = useState('');\n const onInputValueChange = useCallback(\n (e: React.ChangeEvent) => {\n if (onTextboxValueChange) {\n onTextboxValueChange(e.target.value);\n } else {\n setInputValue(e.target.value);\n }\n },\n [onTextboxValueChange],\n );\n const onTagDelete = useCallback(\n (id: T) => () => {\n if (value) {\n // Manually assigning types as this function is only called when multiple\n // items can be selected and when value will not be empty.\n const currentValue = value as AutocompleteDropdownItem[];\n onChange(\n undefined,\n currentValue.filter((item) => item.id !== id),\n );\n }\n },\n [onChange, value],\n );\n\n const renderInput = useCallback(\n (props) => (\n \n {loading ? (\n \n \n \n ) : null}\n {props.InputProps.endAdornment}\n \n ),\n }}\n size={textboxSize}\n removeElevation={removeElevation}\n disabled={disabled}\n hasError={hasError}\n helperText={helperText}\n />\n ),\n [\n autoFocus,\n label,\n placeholder,\n textboxValue,\n inputValue,\n onInputValueChange,\n multiline,\n loading,\n textboxSize,\n removeElevation,\n disabled,\n hasError,\n helperText,\n ],\n );\n const renderOption = (\n option: AutocompleteDropdownItem,\n state: AutocompleteRenderOptionState,\n ) => {\n if (loading && option.id === LOADING_SKELETON) {\n return ;\n }\n\n return (\n \n );\n };\n\n const getOptionDisabled = (option: AutocompleteDropdownItem) =>\n checkIfDisabled ? checkIfDisabled(option) : Boolean(option.disabled);\n\n const renderTags = (tags: AutocompleteDropdownItem[]) =>\n tags.map((tag) => (\n \n ));\n\n const generateInfiniteOptions = () => {\n if (loading) {\n const loadingSkeletonOption: AutocompleteDropdownItem = {\n disabled: true,\n id: LOADING_SKELETON,\n title: LOADING_SKELETON,\n };\n return [...options, loadingSkeletonOption];\n }\n\n return options;\n };\n\n const getOptionSelected = (\n option: AutocompleteDropdownItem,\n optionToTestAgainst: AutocompleteDropdownItem,\n ) => option.id === optionToTestAgainst.id;\n\n const groupBy = useMemo(() => {\n if (groupByCategory) {\n return (option: AutocompleteDropdownItem) => option.category || '';\n }\n return undefined;\n }, [groupByCategory]);\n\n return (\n \n )\n }\n groupBy={groupBy}\n renderInput={renderInput}\n PaperComponent={expandableDropdown ? StyledDynamicPaper : StyledPaper}\n renderOption={renderOption}\n getOptionDisabled={getOptionDisabled}\n renderTags={renderTags}\n classes={classes}\n className={className}\n popupIcon={\n \n }\n disableCloseOnSelect={disableCloseOnSelect}\n limitTags={limitTags}\n autoHighlight\n autoSelect={autoSelect}\n onBlur={onBlur}\n onFocus={onFocus}\n ListboxProps={ListboxProps}\n disabled={disabled}\n data-testid={dataTestId}\n validation={validation}\n />\n );\n}\n\nexport function SingleSelectAutoComplete(\n props: SingleSelectAutoCompleteProps,\n) {\n const { value, onChange, disabled, validation } = props;\n const handleOnChange = useCallback(\n (event: unknown, val: PossibleAutoCompleteValues) => {\n onChange(val as AutocompleteDropdownItem | null);\n },\n [onChange],\n );\n const convertedValue = useMemo(() => {\n return value as PossibleAutoCompleteValues;\n }, [value]);\n return (\n \n );\n}\n\nexport function MultiSelectAutoComplete(\n props: MultiSelectAutoCompleteProps,\n) {\n const { value, onChange, ListboxProps, optionsMaxLimit, validation } = props;\n const handleOnChange = useCallback(\n (event: unknown, val: PossibleAutoCompleteValues) => {\n onChange(val as AutocompleteDropdownItem[]);\n },\n [onChange],\n );\n const convertedValue = useMemo(() => {\n return value as PossibleAutoCompleteValues;\n }, [value]);\n\n const checkIfDisabled = (option: AutocompleteDropdownItem) =>\n value.length === optionsMaxLimit\n ? !value.some((item) => item.id === option.id)\n : Boolean(option.disabled);\n\n return (\n \n );\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport bg404 from '../img/error-404.png';\nimport { APP_URL, HELP_URL } from '../config';\n\nclass PageNotFound extends Component {\n render() {\n return (\n
\n
\n
\n
\n \"404\"\n
\n
\n
\n
\n
\n Darn, we can’t seem to find that page!\n
\n
\n
\n
\n Here are some helpful links insted:\n
\n
\n
\n
\n {\n window.location.href = `${APP_URL}home`;\n }}\n className=\"nopage-redirect__Link \"\n >\n Home\n
\n
\n
\n \n Cash out\n \n
\n \n
\n
\n
\n
\n
\n \n );\n }\n}\n\nexport default PageNotFound;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYYAAAGGCAYAAAB/gCblAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACEzSURBVHgB7d17kGRned/xp7une+73nZ1daXa1KwVdVkF4+QNdTWEjiFXYiBLCgIMcsHKrlEUhUUF/2FVapUKqTOyQikiqnCARjGMKrDghDoYVYFRgkITLEhdLWgnQrnZmtbfZnfutZ3ra5zmjZued6XOmL+/bfc7p76dqai+z09t9us/7O+/7nPd9RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJA0qW1/854PvU3SqQNSr+lpkTMnBAAQYevFE3Ls75/c/FeXgmEjED7n/c0BqcdqXuS1cZHFBQEAxMIJWU99RI798En9w0YwvPe3/5lI8X9KvTQUXn1l41cAQLyspz7shcPnU/KeDxyQTPa42PCzY4QCAMTXtBcOh9NeKDwkNszNEgoAEG8Dklr/WFqK8jaxYXFeAAAxl0rdma672FyysiQAgNg7kBYAADYhGAAABoIBAGAgGAAABoIBAGAgGAAABoIBAGAgGAAABoIBAGAgGAAABoIBAGBoEwAtp3sg+4vf55cLsrq8LnFzxfCl5mtmqSDTi0WJk962jPS3Xbo2n1helaggGICEy3akZfeBLhk71Cuj3q/dg9my/27q9LKcO7EoEy/M+79GyUBXSj50Y4/csC8nb7263QiFkunFdfnxxKr3lZf/96NF+e7LKxIl1/V0yO0j/XLjQI8c6un0g2GrubWCPD09L988PyPPTC/IqeXmbGWQkvfeYydmT/5cZIHtPIGo0EC49uYhueaWIf/31ViYXpXjz87IKz+ckYWp5l3J/rIXAr//rgE/DKr16oU1+eT/n5EvPN3cdunGgW657+AePxCq9YwXEo8cP+OHRCMRDEDC1BMIW5UC4iffnpRGumI4I//9t3fVFAhbNSsg6gmErTQgHnxxvGE9CIIBSBCtHbz9d/YHDhfVSoeZvvvFUw3pPfzGmzq9UBj2ho/s3hvzyLfm5BOPT0kj3HdgVD7qhYJt//6np+TzE+5DOiOH3nREbJjxDvhqdIonQKvROsLt914hHb32S4ed3mOOXdcrE8fmnRaqf//X++WR3xqSjmxKbLvxynZ59y91yjdeWPKK1W4K1Vo3+HfXjMlH9o2IC28d7tPLefmB46ElblcFEuDy63rk7ffur3voKIz2Rn7t3xyQgb31D++Uo6Hwe+/qF5duGMvJ0ftH/WK2C//r8FXy3j1D4tJHD+yRP7hun7jEXUlAzGmDffNdl+347zrbO6Wns8f7tUuymayk0xshsr6+LiurK97XskzNTctaIbjnn+vIyFt/a0y+9dhJq8NKlYZCOpeTTFeX/2tq0109xWJRivlVKSwtyvpKXoqFQuBj6B1NGg43fvKM2PR7b7hMruvpDP03esz7erqkszMn7bmstG16DSve819bK3gj8ssyOx9+V9hdXvhMePWGR46fFRcYSgJirFRTCBs+0kDYM7RXhvuGpSPXKW2ZNkmlLl0x6++zbVn/e4O9g/7vV/Irsl4sP2Sk4aDDVj/722mxQQvNX/7X4UMvma5OyQ0NSVtPt6SzWUmlzZ6RvgYNikxHh/9vUt5rLGp7VCw/ZDTal5H+zrQ3rLQsNmhN4V9dMRr4fQ2EQa8IvWf3oHR3d0gu2/aLYC5py2T8v9fv9/V2eYFd9MMiiBa1X5xfllcW7d+Wy1ASEGNv/NVdoYVmDYOxkX1+OFSqr6tPDu496P9skMG9HfLGX9klNujVe5BUOiW54WHJDgx4jX1GKuUHya5hSbcFB+Z9b+/1b4et1+UdudBCs/YK9l8+IkMDvdvCIOxndo8MyIF9o15QB79uHVLqbav8uFSKYABiSnsLBw8HD7+MDu6RoZDGfSf6s2HhcPUtg3XXND50U3fZyWpKgyA3MiLp9pzUwv/53SOS6QwORZ0jUa+PHgwONh0u0lBoq7Hx1p+7fO+uwHDo8/7+w/vsBPRmBAMQU9pbCKINel93n9RLw2GwZ7Ds93RISedL1ENrC0FyQ4NV9RKCZPv7AnsOOk+inl6D9hbuCig2a6O+d3So4l5CkFI4BD3Oh8dGrPcaCAYghsJ6C31d/XX1FLbaNTAi7dnyjWc9vYaw3kJbb6+kspbmYngNanZ4yB+WKqeeXkNYb2HMa8zbLDXY+jijI+Wfp4teQ2PvSurqFun30rW7x4vxkDddi0aL8yLnz1RX0NZEHfaKWD3eCeN14SRd5ZuyXhBZ9opR0xc3iunV0Nc24o0zZnPhr00ff2Wp+tcGbLL7YFfg94b77d8uOeKFw8T5iW1/r72G0YPdMvHinFTrnpu7y/699hLaeuufLbz1MTPd3bI2N7/te9pr0NtXa1mEL2hWc29Pl7VQKOnu6pBOr4eyVGb28zt29Vu9Q6lxPYZdXrJecZXIwGB4w6n0+/3ev/tH13mfyFGpSEeHyJVXb/w/+vt0DW+K/ow28Jft8/7va3d+niWjl228Nv3ZnX5Gn1vptQ3ZHxtEawjrLbRl7M56VnqLa1ABW+dQ1OKtV3eU/XvtLbjQ5gVDUK/h12/okmrpkhc6lFTO8KCb1zAU8Lh6m2zQc6lFY4JBG+tKG/hyP7tTA6qN8diBjat1W/SxtLHfKWA0FGpt4PVne+sfB0brGQ3oMfR0dYsr3R09VT2XMEGhoGotNu/IG1FItWWrfj5B3hLQW9g6P8Gmzo72wFqDBpUt7oNBG+3hOq+MNRzCGujSEI5t+phhz11fW71X/aM7T0wCNgubedyZq76RrlRPV/mGUOsd1dYZbhgr30D7E9cybhpVlensqOr5hDnUW74HpY23Sz1d5V/Ddb2V35K8E/fBoB+mdJ1vtH5QBgaDv9c/KM4MhjT8QxbWQ9Hw6XZ3lYfkybWXP5+0QFzvHTBhsiFDVLnO6s5xnVxWTqrNXSj4j58rfwFZy4J9vQEBprOaXQrqjfRZDFT3wdBhKcWCJui0V98FrIoe7KDeSLvj1waUETShzWUolLQFDMVs3hGuEmFzF1xKBRyjoOcT5vKAAHD9PrRlM1U9n1q4/ySl3b7RicAxAhAh7oNBb820YTVgg4oVO2udBNLFuIL+71VLm2bYOkZoCavL5ReIW1tbE9fWAxanyy8VpBozS+XXYSoW3e7bXFwrVPV8wswHPNbaqtv3Yb1Q/hjNrlb3HoRxHwwzljbGCHoc/aAuzIszc7PB35u5KHXznz8bHKFy89Pl578UivYahnJW11YDF9ZbmK5uTo7uqlZOMe94bk/A8z8xWX1jPhGwm1ph3W245QOO0akVe7u7uQ8Gbfgu1rnj0PRU+NX5pJulZ/0Jb2GPvbhQfyhNTW78P0CFFgOWu9bls5dWFsWVpYCebd7rwVS7eU9QMKx7vR6XvYbCcvkRhpMXqz8HJ5bKt0kLi25HAJaWV6p6PrVozDwGbVxrbUD1586+Fv5vtIE+s8O/qZY21qfGdx4uOj1R+5CS9oLOOwo1JFbea4SnTpdvHOaX3PU+55fKn8PnjlcfRt95OWCpaC/cXPYa1gOuqr/zcvVD0j+YLn88dGayhrQLugz3asAQ1jMWd3VrTDBor+HkKyKvjVfeiGrDrI2m/lwlV9R65f2zY3aGlfQxXvmpdybM7vxv9fUc/+nGc630tS0vbRwL/QJqcO54+UZgdnHGSaOkw0gLy+XPrYkXqz/ndEw/qDFem6t+eY1KFBYXAzfw+c5Pq9/TIKwhnp5xE9AzAY+rw1rH5u31VBq7VpJeIevXTktWaANbyzpC+nMaJPrYHTXcxqoBpFcr1Q7tFF4fctIvV68N2ET3Xr7mlu1rImkoXJi94K9tZNNF7zGDnDtR2/DVX/5oqeyM4/V83r+ytzkDuuiN+5dbJ0n9aDwvPx6vvtc/6125PzM1LzcObp/4Nz274G+2Y3MGtO7uFrSz2w+m7NZZm7O157LjO4m0YV9sUkHX9WsDZGP45qz3VW45iun5Kenp7PbXN7Jham7K64mU7z2/8txMzVt8fuGpBX87z3KTy1anp/0NemxNeCt4vZCg3sJ//XbtPZRHTpwtGwwa0GfPT/nLZdugj3fqdHCt9r+csDskzbLbQEz9/beDG4rXLrzmXWHW3zPVvaAnZ85LLc9hJzqcFNQoayOen5qyUojWoam1gDv/tAiuAVWrZ7w6wzNTwbWGyQsVDEdX4Oz56cDawl+cviinlu0VnhXBAMRUqddQjl5h6jLZK6u192BnF2Zl4lxwHaye3kLJI9+ak+nFgDkN3pBr/tz5wLkHlfBDYS54mOWTX52Rej0ScrU+PTtfVziUegoLi8Hvo+3egsrIoTcdERu0dsDYOdBQGg5XvnlAMm3bl5PWOQczCxsNXy6TlXSFM+y1MZqcmfRqFZNSlPJX7Dpv4Zn/c7rq21S3WlkrSr5QlHccClgWxusxrHvDs7pcdrqKjXu0RqHDUYWl4IKsFr//7Z9PS730ar3fG/L6pf7ya54te89FawO66mo2W/no/dLSipw+e1FW8sFzLDSUvjlZf7htRTAAMaYN81phXS57Q/CeCDr/YGFpwes95CXblpW2TPnGadH7d9Pz03L24hlZyoff4fLdPzsl06erv5OnnB8cz/t1hrccDFiV1A+HFSksLvkBkUqly655pAVmvdVVA2Ftfj6wpqB0COn9fzxZ04zncn44uyjvGh3wd1MrZ917bnPzS/4cBI3wbDbjvY4yYe6F8oz3WBemZuWiN0y1HjJZToewHjzm5s7GlLz3HjuzSU7+nBm8QJP841/dJW/8lcoKnWmvYW3PXWqEtTEKm9W81bNfOysvfd/SigabHL1/d8X7IvgBsWlBPw2BsCDYTIeubvoPZwIn2dVKN8r508NXyViFG+ZoDyK9aeMgvetotcJhM7099d1/+7LM1THMFoYeA5AA/iSzVGWb5ujw0Fph7RdfhfVC4JDRVq5CQentq1ePZuWaPRUMGRUvhYEfCBUWqTUM7vzMeXn5rP22Shvpb07Oyu0j/YE9h80KXk9Pw6D0tV7hUhovej2Pe390XCbz7tZkIhiAhNBwyK8UZGRfV9maQz10yOrJPxmXkz9xM/lMab3h8b9bFB1hqWVHtZ38eCLvLBRKSuGgW22OOdiX4S/OTMnHnn/VaSgoggFIkAvjy/LqT2Zl7LreqjfPCaKB8+QXxq3VFHaiy2WcvLgmN4zlatpAp5zP/PWc/Ms/uShnZ92vS6bhoA24N9hVdo5DLXQy3R/+/Iz84SunJe94kT5FjQFIqIOH+/26Q9DGPjvRQPjJtydrWgvJlntu7vYnwdWykY7SOQp6S6rtekKltO7w0QOjctfeoZp+XgPh8+OT8rmJ887qCeUQDEDC7fbqDhoSg3s6ZHBv+H7EOi9h/NicnHpxvqmBsJUGxC+/oUN+402dob0ILSzrkJHWK/706YXAORKNpgFx40CP3LVn0N+bOawGoWHw4tySPyT1v89cbGgglBAMQAvJdqS9cOiQnPdrtuNS4zR9ZkXmp/J1z0tohNIQ0/7hS89/xguAVy8U/CGoqIRBGK1BaDhcvukOJg0ALSxPWJ7FXIvmrJUEoCm04Y9ST6AW2iOIuxfno71rI0tiAAAMBAMAwEAwAAAMBAMAwEAwAAAMBAMAwEAwAAAMBAMAwEAwAAAMBAMAwEAwAAAMBAMAwEAwAAAMBAMAwEAwAAAMBAMAwNB2+9VXiQ19By+XzGr8N9AAgFaX+urRJ6xs7XnlFfulu6tLAADxxlASAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMBAMAAADAQDAMDQJoiltskJyb30lGQWZ/0/5/cdktX918t6V59gu7R3nPQre/J5SS3N+sct9fqxC1L0jmVBv4bH/OOqxxfxUTpH9Fd9L9e891Hfw7VdY4JwBEPM9H7jUen+3p97DdwLZb+/cOvdMnvnAy3/4dcQ0OOUG39ecsee9hsHG/L7vQD2Qnjl2ptl5ZqbaWQiSN93PU84R2qX+urRJ4piwZVX7Jfuri6BG9qwDT32gLR7jVwlpj/4kMy9415pJRoG2iC0e1eJlR6nemlQzHvHmZBovmrPkdk775cZ7wvbEQwxoB/4kU/9ZtVXva3ywW8/9pT0fvNR6Xz2CWkmrkSbh3PELoaSYqCWD7zq+8qnZfmam/xhjySq9grRte7vPe5/ERCNN/DFIzWfI1o/arXe9U64Kyni9INbz/j40GMfl6TRIaPBLz4sez9xS2RCYTMNB31uA95zTO9Q4Eb99BzpfK723qL+PO+TiWCIMC2i9Xsf2npoqOhQS1Loaxk98mvS49USok7rHfpc9U4ouJHzjm2954iGQpd3ruESgiGitEHvq/MDX1LP1VSU6PHY/an3W7vDqBH0ue45ckfdjRe202M7/Jl/ITZ0RLDn2UwEQ0TVWlcopyPmPQa9oht69OOxblw11HY98s8ZsrCo1rpCOdlxenWbEQwRVG9dYSud0BVX2pBqSHYnoKuvPbeRP/hNwsGCeusKW8WpF9oIBEPE2KgrJEUpFHIBE5XiKDf+gl93IBxqZ6OugHAEQ4TYrCvEXRJDocS/556eQ01s1hUQjGCIEJt1hbgbevSBRIZCifYcdIwc1bFZV0AwgiEibNcV4sz2+HFU6XwHhkQq1yqfiyggGCKAusIlOk+hlY6FNnZJmmfiCnWFxiIYmoy6wiUbS1wkb6b2TvQ1U28IRl2h8QiGJqOucEmrDqdxcRCOukLjEQxNRF3hEj0OSZirUCt/uXCGlLahrtAcrK7aJNQVTLpKaiPpbl6qsGtf2e9nJsf9X9suNC649fNwLqEr4daCukLzEAxNwNCBSa+UXa+SqhvpLF+rS5DfJKv7qtsCVTf+0Vtne594VDIOg6L9paf9Y5HUZdKrQV2huQiGJqCuYNLbNl3RQJh5z8f8X+t5DP3SNfs1JAb/7GHJjruZY0GvYQN1heaixtBg1BVMrmoLuvn71AcfknMPfqmuUNhKH+vMw1+Xi/f+kf9/2Ka9hla/Q4m6QvMRDA1EXWE7F/sqFHaNyZkjX/f3YnZl4db3+f9HYdj+Lm29MdhrwhXqCtFAMDQIdYXyOp87KjZpKJz7xJcbsq2m/h/nHvyy9XBo1U1jqCtEB8HQINQVtsuNP2/1mOjQTqNCoaQUDjaHlfSYZBO8TlQQ6grRQTA0AHWF8mzfiaQ1hUaGQon+n1MfeEhs0iJ3K6GuEC0Eg2PUFYLZHEZauPVuf9y/WRZue59XmL5JbGmlrSapK0QPweAQdYVwNpfVnr2zsRPkypm5836xpVV6DNQVoolgcIi6QjC9JTNl6bZMvYW0GUNI257HtTdb6zXo8WnkrOtmoa4QTQSDI9QVwmVP2tt8feG2uyUqlt78T8SW0rIcSUVdIboIBgeoK+zM5tIS+X3XS1QsHbYXDEm+sKCuEG0Eg2XUFSpjq9HTNY9W9x+SqNAhLVu3rmYSGgzUFaKPYLCMukJjrUaot1CyGoF6R5RRV4g+gsEi6gpQLtZQSgrqCvFAMFhCXaE6BGjroa4QHwSDBdQVgHDUFeKFYLCAugIQjrpCvBAMdXJZV1g6/E4B4s5lXcHmMiS4hGCog8u6wuyd98uixclSQDO4rCvojnrztzVvfawkIxhq5LKusLrvkNV1d4BmcFlX0H03ZjlHnCEYauSqrqAf+Mn7PitA3LmqK5T23VjntmBnCIYauKwr6Lr+UVgQDqiHy7rCtNdT4Bxxi2Cokuu6whJ1BcSc87qCw728sYFgqAJ1BSAcdYVkIBiqQF0BCEddIRkIhgpRVwDCUVdIDoKhAtQVgHDUFZKFYNgBdQUgHHWF5CEYdkBdAQhHXSF5CIYQ1BWAcNQVkolgCEBdAQhHXSG5CIYyqCsA4agrJBvBUAZ1BSAcdYVkIxi2oK4AhKOukHwEwybUFYBw1BVaA8HwOuoKQDjqCq2DYHgddQUgHHWF1kEwCHUFYCfUFVpLywcDdQUgHHWF1tPSwUBdAQhHXaE1tXQwUFcAwlFXaE0tGwzUFYBw1BVaV0sGA3UFIBx1hdbWcsFAXQEIR10BLRcM1BWAcNQV0FLBQF0BCEddAaplgoG6AhCOugJKWiIYqCsA4agrYLOWCAbqCkA46grYLPHBQF0BCEddAVslOhioKwDhqCugnMQGA3UFIBx1BQRJbDBQVwDCUVdAkDZJIJd1hbzXW8i99JT3Jc51HHtabEgvzkqXN6y2k2Jnn38yr1x7syDZXNYV4niOqGrOkdX91yc6+BIXDC7rCkpPJlcnlCsaDMOPfryqn1m49W5vKOABCocJ5LKuoNpfetr/ihvOkUsSNZTksq7Qarq/97js/cQtThsQNJ7LukKrKZ0jA198WJImUcHgqq7QyjRohx59QJAMruoKraz3G48m7hxJTDC4rCu0Or0y0g+/TQxRNZ7LukKr03MkST2HRASDBgJDHm5po6K1iqjJXBiXqElF8DhxjrinF0/tx56SJEhEMFBXcE9DwWavoWjpjo4ohlXu5Atig827XjhHGqP7+zvf2RQHiQiGrueOCtyr5Ha+ShUsBkOUrtJy48+LLQWLw23tLyXjSjbqOp9NxlBd7INBT8Qodt2TSIcjbF2hr+0/JLZ0ROjWyHaL99WvWwxP6m+N4R/rC/E/1rEPhtQCodBI6SVLwTC8T2zpsVwYr4fN57K673qxIYrDbUmWmYxe3atasQ+GYjfT7uNIr4bXhu0MlURlOEknV9q6Mtf1uFhSAs0S+2CweeWJndlqzJXNpTeGHqtu1qoLNgu8a7vsfa711uAiIdMwtnp6zRT7YLB55YlwK9fYXUNp1WKdQa/Um3kfue15NEtvfqfYpOsXwb2k9PQScVfSwm3vE7i3cNvdYtPCrXbfN72dtvt7jb9dsPPZo9bnCNgOYc6Rxph7ZzL2n0hEMOhmIAV6DU7prZO2G3J/JddrbhKbtNeQPWnvltGd6IJ0toexNBRszwzX945zxC09R5YOJ2PzrkQEgzYwF+79I4EbpfX1XbC9C54WovccucP6Eh7laO9k5FPvt37Xj+2eWcnkff+DWoND2gYl5YaBxKyVpIXMi79DONhWCgVXaxvplayLxkp7DrqwmYv79zUIBv3H/7iTW0FtDyOV5Pdf772XXyIcHLjohYKr960ZMv/0nnuOiAWDA/2Sy2almXTzjEWvoenyxnxt3W/fyvSDfv6BL8jq3qvElWK2XdIz56X9lefEttz4C9L53FHJeI13Yde+uq/mNAT6/uq/yfAf/66z/QZ0jX+X9YBC/25ZfMu7/WU7kjARq9n0HLlw32dl+Y1vkyRJffXoE0Wx4Mor9kt3V5dEhS4B0P03j/snQGpxRuIo44WbrVndld65Vezql+Vrb/LvimnUFZBe1eu69q6t6OvyxoD1Dp1ChbeDar1CG1ANGJuzmoOc/tT3G7byLOeIqZq7G/PeCMW8N+SXpF7CZokNhiTQtYmq3VWqHG1otMGJMh366Y3QDOZm0N7CxXv/k6Byts4RNf7YScGGRG3Ug/iavfP+lh771jtadJtIIAoIBkSCjv/PeOHQqmbfcS+bFyEyCAZExpzXONqe1xAH2lvQuThAVBAMiBQdY2+lISUNBVdzRIBaEQyIFB1OudBC81GmPvAQQ0iIHIIBkaOzoVuh3qAFd9szvwEbCAZEkjaaSQ6HpL8+xBvBgMjSxnMugUVZQgFRRzAg0qY/+FCiGlFCwS7WfXKjTRBZtj70hZjvcjf7ekNqe8+DRpvyQo7bUu0qWCrcr7KRkYEeQ4TZWoclvz/+H3oNB10ZNI57Cvi3pD74JULBAd3a18YFVBLOEZsIhgiztZGN7Q12mkWXVj/34Jdj9XqWDr9Tzhz5emIXW2s2PUd00cd6cXeYiWCIuHrHo3U10dUEXQ3pPf+69r1+Rbn3UOolTN732cRs3hJVc7fX1xNL0s5rthAMEadXybXemaNdbC3eJpH2Gl77j9+PXEAUX1/ziV5C49Rzjihmnm9H8TkGdHy949hTkh1/oeKfcb3zWlRoQOiXbrPZ/38/LZkmbT6jIaB7WOhzoYfQeHoBpBsp6eegGnphwczz7diPIUYq3bNAu8aTv/vZliyo5cafl54nHvOD1HVI6MYuOjbdyE2NEK7vK5+u6O41PUcuJGw7TpsIhpjR3c70w9/13NFtO1eVrlqTOCmsFnqsdJey7MkX/F3KNDRq3e1Le2B6B4wWOjVwdQevtRjeIdUKSudIuYsDPUf0PdQ7xOjZBSMYYky3nMxMjv+i0eKDXhk9bunFmR1DQo/rele/rHf2cWxjinOkNtQYYkyvWLlqrZ5/zDhuLYFzpDbclQQAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAAADwQAAMBAMAACDBsMJsSCfXxUAQOydSK8X5StiwdTMjAAAYu/JdFux8J8lJdNSp4XFRVleWREAQHwVCoWH03fccccJ73f3iwWvjk9IfpUhJQCIqY8cPHjwRKr0p7/82tfelk6nPyeSOiB1yGWzsntklwz29wsAIBZOeD0FDYUn9Q+prd/1A0IyB6ROvX3dMjIyIh1eUAAAIutEKRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQXP8Avt81R4g4SNkAAAAASUVORK5CYII=\"","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Body from '../Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport SVGIcon from '../SVGIcon';\n\nconst useStyles = makeStyles({\n root: {\n background: ThemeV2.palette.gray1,\n width: '163px',\n minHeight: '64px',\n padding: '10px 0 10px 0',\n borderRadius: '2px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: ThemeV2.palette.gray5,\n cursor: 'pointer',\n '&:not(:disabled):not(:active)': {\n '&:hover': {\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n },\n },\n '&:active': {\n background: ThemeV2.palette.gray4,\n outline: ThemeV2.palette.gray5,\n boxShadow: 'none',\n },\n '&:focus': {\n outline: ThemeV2.palette.gray5,\n boxShadow: 'none',\n },\n '&:disabled': {\n background: ThemeV2.palette.gray3,\n cursor: 'default',\n filter: 'grayscale(1)',\n '& img': {\n height: '16px',\n minHeight: '16px',\n width: 'auto',\n maxWidth: '94px',\n },\n },\n },\n logoHolder: {\n display: 'flex',\n alignItems: 'stretch',\n justifyContent: 'center',\n height: '16px',\n maxWidth: '94px',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n helperText: {\n color: ThemeV2.palette.gray6,\n margin: '0px',\n },\n});\n\nexport interface IntegrationButtonBaseProps {\n children?: React.ReactNode;\n disabled?: boolean;\n showUpgradeInfo?: boolean;\n upgradeText?: string;\n text?: string;\n onClick?: () => void;\n linkText?: string;\n}\n\nconst IntegrationButtonBase = (props: IntegrationButtonBaseProps) => {\n const {\n children,\n disabled = false,\n text,\n onClick,\n showUpgradeInfo = false,\n upgradeText = '',\n linkText,\n } = props;\n const classes = useStyles();\n const finalText = disabled ? 'Coming Soon' : text;\n return (\n \n {linkText ? (\n \n {linkText}\n \n ) : (\n <>\n
{children}
\n {finalText && (\n \n {finalText}\n \n )}\n \n )}\n\n {showUpgradeInfo && (\n <>\n \n \n {upgradeText}\n \n \n )}\n \n );\n};\n\nexport default IntegrationButtonBase;\n","import React from 'react';\n\nimport SVGIcon from '../../atoms/SVGIcon';\nimport IntegrationButtonBase from '../../atoms/IntegrationButtonBase';\n\nexport interface IntegrationButtonProps {\n disabled?: boolean;\n onClick?: () => void;\n text?: string;\n logo?: string;\n iconSize?: string;\n showUpgradeInfo?: boolean;\n upgradeText?: string;\n linkText?: string;\n}\n\nconst IntegrationButton = ({\n disabled = false,\n onClick,\n logo,\n text,\n showUpgradeInfo = false,\n iconSize = '16px',\n linkText,\n upgradeText,\n}: IntegrationButtonProps) => (\n \n {logo && }\n \n);\n\nexport default IntegrationButton;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const colorMap = {\n none: {\n color: ThemeV2.palette.gray3,\n },\n success: {\n color: ThemeV2.palette.polarGreen6,\n },\n warning: {\n color: ThemeV2.palette.sunriseYellow6,\n },\n danger: {\n color: ThemeV2.palette.dustRed6,\n },\n flowProgress: {\n color: ThemeV2.palette.geekBlue6,\n },\n};\n\nexport const progressBarSizes = {\n small: '4px',\n medium: '6px',\n large: '8px',\n};\n\nexport const StyledProgressBarWrapper = styled.div`\n position: relative;\n height: ${(props) =>\n props.height ? `${props.height}` : progressBarSizes.medium};\n background: ${(props) =>\n props.background ? `${props.background}` : `${ThemeV2.palette.gray3}`};\n border-radius: 8px;\n overflow: hidden;\n flex-basis: calc(33.333% - 4px);\n`;\n\nexport const StyledProgressBar = styled.div`\n height: inherit;\n width: ${(props) => `${props.value}%`};\n background: ${(props) =>\n props.color ? colorMap[props.color].color : `${ThemeV2.palette.gray3}`};\n border-radius: 8px;\n transition: 0.2s ease-in width;\n`;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { oneOf, number, string } from 'prop-types';\nimport {\n StyledProgressBarWrapper,\n StyledProgressBar,\n colorMap,\n} from './styles';\n\nconst ProgressBar = (props) => {\n const { color, value = 0, background, height, className, dataTestId } = props;\n\n return (\n \n \n \n );\n};\n\nProgressBar.propTypes = {\n color: oneOf(Object.keys(colorMap)),\n value: number,\n background: string,\n height: string,\n className: string,\n dataTestId: string,\n};\n\nProgressBar.defaultProps = {\n color: 'none',\n value: 0,\n background: '',\n height: '',\n className: '',\n dataTestId: 'progress-bar',\n};\n\nexport default ProgressBar;\n","import React, { useCallback } from 'react';\nimport { EmojiData, Picker } from 'emoji-mart';\nimport 'emoji-mart/css/emoji-mart.css';\nimport { EmoticonPickerProps } from './interface';\nimport { EMOTICON_PICKER_TEXT } from '../../../languages/en/home';\nimport { isWindows } from '../../../Utils/window';\n\nconst EmoticonPicker = (props: EmoticonPickerProps) => {\n const { onEmoticonSelect } = props;\n\n const handleOnClick = useCallback(\n (emoji: EmojiData) => {\n onEmoticonSelect(emoji);\n },\n [onEmoticonSelect],\n );\n return (\n \n );\n};\n\nconst MemoizedEmoticonPicker = React.memo(EmoticonPicker);\nMemoizedEmoticonPicker.displayName = 'EmoticonPicker';\nexport default MemoizedEmoticonPicker;\n","import React, { useCallback } from 'react';\n\nimport styled from 'styled-components';\nimport { EmojiData } from 'emoji-mart';\nimport { EmoticonPickerPopoverProps } from './interface';\nimport EmoticonPicker from '../../atoms/EmoticonPicker';\n\nimport usePopover from '../../../hooks/usePopover';\n\nconst Wrapper = styled.div`\n width: fit-content;\n & div:nth-child(2) {\n z-index: 9999;\n }\n`;\n\nconst PopoverWrapper = styled.div`\n padding: 8px;\n`;\n\nconst EmoticonPickerPopover = (props: EmoticonPickerPopoverProps) => {\n const {\n onEmoticonSelect,\n xAxisOffset = 0,\n yAxisOffset = 10,\n popoverPosition,\n children,\n } = props;\n\n const { models, operations } = usePopover({\n xAxisOffset,\n yAxisOffset,\n popoverPosition,\n children,\n });\n const {\n childrenWithPopoverProps,\n isPopoverOpen,\n styles,\n containerRef,\n referenceElement,\n popperElement,\n } = models;\n const { togglePopover } = operations;\n\n const handleOnClick = useCallback(\n (emoji: EmojiData) => {\n onEmoticonSelect(emoji);\n togglePopover();\n },\n [onEmoticonSelect, togglePopover],\n );\n\n return (\n \n
{childrenWithPopoverProps}
\n \n {isPopoverOpen && }\n \n
\n );\n};\n\nconst MemoizedEmoticonPickerPopover = React.memo(EmoticonPickerPopover);\nMemoizedEmoticonPickerPopover.displayName = 'EmoticonPickerPopover';\nexport default MemoizedEmoticonPickerPopover;\n","import { Placement } from '@popperjs/core';\n\nexport interface PopoverChildrenProps {\n isPopoverOpen: boolean;\n togglePopover: () => void;\n}\n\nexport enum PositionStrategies {\n Fixed = 'fixed',\n Absolute = 'absolute',\n}\n\nexport interface UsePopoverProps {\n xAxisOffset?: number;\n yAxisOffset?: number;\n popoverPosition?: Placement;\n children: React.FunctionComponent;\n strategy?: PositionStrategies;\n}\n","import { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { usePopper } from 'react-popper';\n\nimport useOnClickOutside from '../useOnOutsideClick';\nimport { PositionStrategies, UsePopoverProps } from './interface';\n\nconst usePopover = (props: UsePopoverProps) => {\n const {\n xAxisOffset,\n yAxisOffset,\n popoverPosition = 'bottom',\n children,\n strategy = PositionStrategies.Fixed,\n } = props;\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const referenceElement = useRef(null);\n const popperElement = useRef(null);\n const containerRef = useRef(null);\n\n const popperAttributes = useMemo(\n () => ({\n placement: popoverPosition,\n strategy,\n modifiers: [\n { name: 'offset', options: { offset: [yAxisOffset, xAxisOffset] } },\n ],\n }),\n [popoverPosition, strategy, xAxisOffset, yAxisOffset],\n );\n const { styles, update } = usePopper(\n referenceElement.current,\n popperElement.current,\n popperAttributes,\n );\n const togglePopover = useCallback(() => {\n setIsPopoverOpen(!isPopoverOpen);\n if (update) {\n update();\n }\n }, [isPopoverOpen, update]);\n\n const onOutsideClickHandler = useCallback(() => {\n if (isPopoverOpen) {\n setIsPopoverOpen(false);\n }\n }, [isPopoverOpen]);\n\n useOnClickOutside(containerRef, onOutsideClickHandler);\n\n const childrenWithPopoverProps = useMemo(\n () => children({ isPopoverOpen, togglePopover }),\n [children, isPopoverOpen, togglePopover],\n );\n\n return {\n models: {\n childrenWithPopoverProps,\n containerRef,\n referenceElement,\n popperElement,\n isPopoverOpen,\n styles,\n },\n operations: {\n togglePopover,\n },\n };\n};\n\nexport default usePopover;\n","import styled from 'styled-components';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const ToolTipText = styled.span<{ toolTipSize?: string }>`\n width: ${({ toolTipSize }) => (toolTipSize ? '196px' : 'max-content')};\n background-color: ${ThemeV2.palette.gray9};\n padding: 4px 8px;\n border-radius: 4px;\n margin: 4px;\n z-index: 99;\n`;\n\nexport const ToolTipRoot = styled.div`\n position: relative;\n display: inline-flex;\n`;\n","import React, { useState, useCallback } from 'react';\nimport { usePopper } from 'react-popper';\n\nimport Body from '../../atoms/Body';\nimport SVGIcon from '../../atoms/SVGIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nimport { ToolTipRoot, ToolTipText } from './styles';\nimport { ToolTipProps } from './interface';\n\nconst ToolTip = (props: ToolTipProps) => {\n const {\n icon,\n iconColor,\n iconHoverColor = '',\n toolTipComponent,\n children,\n showTooltipByDefault,\n position,\n positionStrategy = 'absolute',\n className,\n iconSize = '16px',\n disabled,\n toolTipSize,\n } = props;\n\n const [isTooltipOpen, setTooltipOpen] =\n useState(showTooltipByDefault);\n const [referenceElement, setReferenceElement] =\n useState(null);\n const [popperElement, setPopperElement] = useState(\n null,\n );\n const { styles } = usePopper(referenceElement, popperElement, {\n placement: position,\n strategy: positionStrategy,\n });\n\n const handleMouseEnter = useCallback(() => {\n setTooltipOpen(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setTooltipOpen(false);\n }, []);\n\n const renderToolTipComponent = useCallback(() => {\n if (toolTipComponent) {\n return toolTipComponent;\n }\n return (\n \n );\n }, [icon, iconColor, iconSize, toolTipComponent, iconHoverColor]);\n\n return (\n \n {renderToolTipComponent()}\n {isTooltipOpen && !disabled && (\n \n \n {children}\n \n \n )}\n \n );\n};\n\nToolTip.defaultProps = {\n icon: 'icon-circle-outlined',\n iconColor: ThemeV2.palette.gray6,\n showTooltipByDefault: false,\n position: 'bottom',\n disabled: false,\n};\n\nexport default ToolTip;\n","var map = {\n\t\"./Link.svg\": 1244,\n\t\"./ZipRecruiterLogo.svg\": 1245,\n\t\"./accountSetup.svg\": 1246,\n\t\"./active-notification.svg\": 1247,\n\t\"./activity-history.svg\": 1248,\n\t\"./add-comment.svg\": 1249,\n\t\"./add-new-flow.svg\": 1250,\n\t\"./add-new.svg\": 1251,\n\t\"./add-person-transparent.svg\": 1252,\n\t\"./add-person.svg\": 1253,\n\t\"./add-photo.svg\": 1254,\n\t\"./admin-assembly-axomo-logos.svg\": 1255,\n\t\"./admin-settings.svg\": 1256,\n\t\"./admin-with-gear.svg\": 1257,\n\t\"./admin.svg\": 1258,\n\t\"./adp-logo.svg\": 1259,\n\t\"./adp-mini-logo-white.svg\": 1260,\n\t\"./alarm.svg\": 1261,\n\t\"./anniversary.svg\": 1262,\n\t\"./anonymous-avatar.svg\": 1263,\n\t\"./anonymous-rounded.svg\": 1264,\n\t\"./anonymous.svg\": 1265,\n\t\"./answer.svg\": 1266,\n\t\"./api-filled.svg\": 1267,\n\t\"./api.svg\": 1268,\n\t\"./archive.svg\": 1269,\n\t\"./arrow-down.svg\": 1270,\n\t\"./arrow-dropdown.svg\": 1271,\n\t\"./arrow-left.svg\": 1272,\n\t\"./arrow-right.svg\": 1273,\n\t\"./arrow-thick-down.svg\": 1274,\n\t\"./arrow-thick-up.svg\": 1275,\n\t\"./arrow-up.svg\": 1276,\n\t\"./assembly-icon.svg\": 1277,\n\t\"./assembly.svg\": 1278,\n\t\"./assemblyLogo.svg\": 1279,\n\t\"./atmention.svg\": 1280,\n\t\"./attachment-icon.svg\": 1281,\n\t\"./attachment.svg\": 1282,\n\t\"./avatar.svg\": 1283,\n\t\"./axomo-logo.svg\": 1284,\n\t\"./back-arrow.svg\": 1285,\n\t\"./badge-bubble.svg\": 1286,\n\t\"./bambooHR-logo.svg\": 1287,\n\t\"./benchmark-doing-great.svg\": 1288,\n\t\"./benchmark-need-boost.svg\": 1289,\n\t\"./benchmark-top-performer.svg\": 1290,\n\t\"./beta-mono.svg\": 1291,\n\t\"./beta.svg\": 1292,\n\t\"./billing.svg\": 1293,\n\t\"./bin.svg\": 1294,\n\t\"./birthday-cake.svg\": 1295,\n\t\"./birthday.svg\": 1296,\n\t\"./block.svg\": 1297,\n\t\"./break-connection.svg\": 1298,\n\t\"./building.svg\": 1299,\n\t\"./calendar.svg\": 1300,\n\t\"./carat-down.svg\": 1301,\n\t\"./carat-left.svg\": 1302,\n\t\"./carat-right.svg\": 1303,\n\t\"./carat-up.svg\": 1304,\n\t\"./caret-rounded.svg\": 1305,\n\t\"./caret.svg\": 1306,\n\t\"./celebration-bubble-disabled.svg\": 1307,\n\t\"./celebration-bubble.svg\": 1308,\n\t\"./check-rounded.svg\": 1309,\n\t\"./check.svg\": 1310,\n\t\"./checkbox-checked.svg\": 1311,\n\t\"./checkbox-unchecked.svg\": 1312,\n\t\"./checkmark-circle.svg\": 1313,\n\t\"./clip-data-protection.svg\": 1314,\n\t\"./clock.svg\": 1315,\n\t\"./close-circle-filled.svg\": 1316,\n\t\"./close-circle-outlined.svg\": 1317,\n\t\"./close-circle.svg\": 1318,\n\t\"./close-rounded.svg\": 1319,\n\t\"./close.svg\": 1320,\n\t\"./cloud-upload.svg\": 1321,\n\t\"./content.svg\": 1322,\n\t\"./copy.svg\": 1323,\n\t\"./create-bubble.svg\": 1324,\n\t\"./crown-solid.svg\": 1325,\n\t\"./delete.svg\": 1326,\n\t\"./department.svg\": 1327,\n\t\"./disabled-search.svg\": 1328,\n\t\"./discussion.svg\": 1329,\n\t\"./dot.svg\": 1330,\n\t\"./download.svg\": 1331,\n\t\"./drag-reorder.svg\": 1332,\n\t\"./edit-person.svg\": 1333,\n\t\"./edit.svg\": 1334,\n\t\"./email-send.svg\": 1335,\n\t\"./emoticon.svg\": 1336,\n\t\"./error-warning.svg\": 1337,\n\t\"./exit-left.svg\": 1338,\n\t\"./exit.svg\": 1339,\n\t\"./expand-more.svg\": 1340,\n\t\"./external-link.svg\": 1341,\n\t\"./eye.svg\": 1342,\n\t\"./feed.svg\": 1343,\n\t\"./file-upload-disabled.svg\": 1344,\n\t\"./file-upload.svg\": 1345,\n\t\"./filter-by.svg\": 1346,\n\t\"./filter.svg\": 1347,\n\t\"./flow-prompt-card-indicator-closed.svg\": 1348,\n\t\"./flows.svg\": 1349,\n\t\"./format-icon.svg\": 1350,\n\t\"./formbuilder_settings.svg\": 1351,\n\t\"./gSuite-logo.svg\": 1352,\n\t\"./general-settings.svg\": 1353,\n\t\"./generic-file.svg\": 1354,\n\t\"./gif-selector-icon.svg\": 1355,\n\t\"./gif.svg\": 1356,\n\t\"./gift.svg\": 1357,\n\t\"./globe.svg\": 1358,\n\t\"./google-light.svg\": 1359,\n\t\"./graph.svg\": 1360,\n\t\"./groups-bubble.svg\": 1361,\n\t\"./hamburger.svg\": 1362,\n\t\"./hashtag.svg\": 1363,\n\t\"./home.svg\": 1364,\n\t\"./hourglass.svg\": 1365,\n\t\"./icon-circle-outlined.svg\": 1366,\n\t\"./icon-loop.svg\": 1367,\n\t\"./idcard.svg\": 1368,\n\t\"./info-circle.svg\": 1369,\n\t\"./info-filled.svg\": 1370,\n\t\"./info-icon.svg\": 1371,\n\t\"./info-outlined.svg\": 1372,\n\t\"./info.svg\": 1373,\n\t\"./job-title.svg\": 1374,\n\t\"./key.svg\": 1375,\n\t\"./leaderboard.svg\": 1376,\n\t\"./loader.svg\": 1377,\n\t\"./location.svg\": 1378,\n\t\"./lock-icon.svg\": 1379,\n\t\"./lock.svg\": 1380,\n\t\"./magnify-thick-handle.svg\": 1381,\n\t\"./magnify.svg\": 1382,\n\t\"./mail.svg\": 1383,\n\t\"./manager.svg\": 1384,\n\t\"./members-list.svg\": 1385,\n\t\"./minus-rounded.svg\": 1386,\n\t\"./minus.svg\": 1387,\n\t\"./modal-close.svg\": 1388,\n\t\"./more.svg\": 1389,\n\t\"./ms-teams.svg\": 1390,\n\t\"./multiple-choice.svg\": 1391,\n\t\"./muted.svg\": 1392,\n\t\"./new-notification.svg\": 1393,\n\t\"./news.svg\": 1394,\n\t\"./no_notification_icon.svg\": 1395,\n\t\"./note.svg\": 1396,\n\t\"./notebook-checklist.svg\": 1397,\n\t\"./notification-badge.svg\": 1398,\n\t\"./notification-bubble.svg\": 1399,\n\t\"./notification.svg\": 1400,\n\t\"./office-365-mini-logo.svg\": 1401,\n\t\"./office365-logo.svg\": 1402,\n\t\"./okta-logo.svg\": 1403,\n\t\"./oneLogin-logo.svg\": 1404,\n\t\"./oneLogin.svg\": 1405,\n\t\"./open-ended.svg\": 1406,\n\t\"./password.svg\": 1407,\n\t\"./pending-person.svg\": 1408,\n\t\"./people.svg\": 1409,\n\t\"./person-filled.svg\": 1410,\n\t\"./photo-camera.svg\": 1411,\n\t\"./play.svg\": 1412,\n\t\"./plus.svg\": 1413,\n\t\"./post.svg\": 1414,\n\t\"./power.svg\": 1415,\n\t\"./premium-2.svg\": 1416,\n\t\"./premium-crown-icon.svg\": 1417,\n\t\"./private.svg\": 1418,\n\t\"./prompt.svg\": 1419,\n\t\"./question-mark.svg\": 1420,\n\t\"./questions.svg\": 1421,\n\t\"./quick-setup.svg\": 1422,\n\t\"./reaction.svg\": 1423,\n\t\"./reset-zoom.svg\": 1424,\n\t\"./response.svg\": 1425,\n\t\"./retry.svg\": 1426,\n\t\"./return-arrow.svg\": 1427,\n\t\"./revert.svg\": 1428,\n\t\"./reward.svg\": 1429,\n\t\"./rewards.svg\": 1430,\n\t\"./right-carat.svg\": 1431,\n\t\"./round-close.svg\": 1432,\n\t\"./routine.svg\": 1433,\n\t\"./run-now.svg\": 1434,\n\t\"./saml-authentication.svg\": 1435,\n\t\"./scale.svg\": 1436,\n\t\"./search.svg\": 1437,\n\t\"./security-login.svg\": 1438,\n\t\"./setting-filled.svg\": 1439,\n\t\"./setting.svg\": 1440,\n\t\"./settings-2.svg\": 1441,\n\t\"./settings.svg\": 1442,\n\t\"./share.svg\": 1443,\n\t\"./shield.svg\": 1444,\n\t\"./shipping.svg\": 1445,\n\t\"./signin-slack.svg\": 1446,\n\t\"./slack-logo.svg\": 1447,\n\t\"./slack-mini-logo-white.svg\": 1448,\n\t\"./slack-mini-logo.svg\": 1449,\n\t\"./sort.svg\": 1450,\n\t\"./star-bubble.svg\": 1451,\n\t\"./star.svg\": 1452,\n\t\"./stop.svg\": 1453,\n\t\"./summary.svg\": 1454,\n\t\"./survey.svg\": 1455,\n\t\"./sync.svg\": 1456,\n\t\"./task-checklist.svg\": 1457,\n\t\"./team.svg\": 1458,\n\t\"./teams-channel.svg\": 1459,\n\t\"./thumbnail.svg\": 1460,\n\t\"./tick.svg\": 1461,\n\t\"./today.svg\": 1462,\n\t\"./trends.svg\": 1463,\n\t\"./triangle-down.svg\": 1464,\n\t\"./trigger.svg\": 1465,\n\t\"./trophy.svg\": 1466,\n\t\"./unarchive.svg\": 1467,\n\t\"./unassigned.svg\": 1468,\n\t\"./undo.svg\": 1469,\n\t\"./union-rounded.svg\": 1470,\n\t\"./union.svg\": 1471,\n\t\"./unscheduled.svg\": 1472,\n\t\"./user.svg\": 1473,\n\t\"./users-with-circle.svg\": 1474,\n\t\"./users.svg\": 1475,\n\t\"./view-all.svg\": 1476,\n\t\"./warning-circle.svg\": 1477,\n\t\"./warning-hallow.svg\": 1478,\n\t\"./warning-hollow.svg\": 1479,\n\t\"./warning-red.svg\": 1480,\n\t\"./warning-shield.svg\": 1481,\n\t\"./warning.svg\": 1482,\n\t\"./zoom-in.svg\": 1483,\n\t\"./zoom-out.svg\": 1484\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 = 1243;","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\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\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n \\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n \\n \\n \\n\\n\";","export default \"\\n \\n \\n \\n\";","export default \"\\n \\n \\n \\n \\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n \\n \\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n \\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\nError\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\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\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\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\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n \\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n \\n \\n \\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\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\";","export default \"\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n \\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default \"\\n\\n\\n\";","export default __webpack_public_path__ + \"static/media/assembly-logo-mono.7290e826.svg\";","import styled from 'styled-components';\nimport Image from '../../atoms/Image';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const AssemblyLanderBg = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n height: 100vh;\n width: 100%;\n background: ${ThemeV2.palette.gray2};\n`;\n\nexport const StyledImage = styled(Image)`\n margin-bottom: 64px;\n max-width: 342px;\n width: 100%;\n`;\n\nexport const InnerWrapper = styled.div`\n margin-bottom: 20%;\n`;\n","import React, { memo } from 'react';\nimport assemblyLogo from '../../../img/svgs/assembly-logo-mono.svg';\nimport { AssemblyLanderBg, InnerWrapper, StyledImage } from './styles';\nimport LoadingPulse from '../../atoms/LoadingPulse';\n\nconst AssemblyLanderLoadingScreen = () => {\n return (\n \n \n \n \n \n \n );\n};\n\nconst MemoizedAssemblyLanderLoadingScreen = memo(AssemblyLanderLoadingScreen);\nMemoizedAssemblyLanderLoadingScreen.displayName = 'AssemblyLanderLoadingScreen';\nexport default MemoizedAssemblyLanderLoadingScreen;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { withStyles } from '@material-ui/styles';\nimport themeV2 from '../../theme';\n\nconst styles = {\n root: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n margin: '30px 0',\n height: 1,\n width: '100%',\n fontSize: 18,\n fontFamily: themeV2.typography.adminFontFamily,\n fontWeight: themeV2.typography.fontWeightSemibold,\n '& span': {\n position: 'absolute',\n left: 'auto',\n right: 'auto',\n top: -13,\n background: '#fff',\n padding: '0 20px',\n fontSize: 'inherit',\n display: 'block',\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n },\n '&.small': {\n fontSize: '12px',\n fontWeight: 'normal',\n '& span': {\n top: -8,\n padding: '0 8px',\n },\n },\n },\n};\n\nclass TextDivider extends Component {\n renderRootColor = () => {\n if (this.props.color) {\n return { background: this.props.color };\n } else {\n return {\n background: themeV2.palette.lightGray1,\n };\n }\n };\n\n renderTextColor = () => {\n if (this.props.color) {\n return { color: this.props.color };\n } else {\n return {\n color: themeV2.palette.lightGray1,\n };\n }\n };\n\n render() {\n const { classes, text, small } = this.props;\n return (\n \n {text}\n \n );\n }\n}\n\nexport default withStyles(styles)(TextDivider);\n","export const CREATE_YOUR_PASSWORD = 'Create your password';\nexport const ERROR = 'Something went wrong. Please try again.';\nexport const CURRENT_PASSWORD_ERROR =\n 'Incorrect password. Forgot your password? Click below.';\nexport const REQUIRED_CONFIRM_PASSWORD = 'Confirm your password is required';\nexport const PASSWORD_DO_NOT_MATCH_ERROR = `Password did not match`;\nexport const NEW_PASSWORD = 'New Password';\nexport const CONFIRM_YOUR_PASSWORD = 'Confirm your password';\nexport const CREATE_YOUR_PASSWORD_AND_SIGN_IN =\n 'Create your password and sign in';\nexport const IS_THIS_CORRECT = 'Is this incorrect?';\nexport const RETURN_TO_SIGN_IN = 'Return to sign in';\n\nexport const VALIDATE_YOUR_EMAIL = {\n HEADING: 'Validate your email',\n BODY: `We sent you an email to verify your identity. Click the link in that\n email to come back and set a password.`,\n};\nexport const signInWithText = {\n SLACK: 'Sign in with Slack',\n OFFICE365: 'Sign in with Office365',\n ADP: 'Sign in with ADP',\n GOOGLE: 'Sign in with Google',\n LIFION: 'Sign in with Lifion',\n};\n\nexport const WELCOME_BACK = 'Welcome back!';\nexport const SIGNIN_TO_ENTER = 'Please sign in below to enter your account';\nexport const SIGN_IN_BUTTON_TEXT = 'Sign in';\nexport const SIGN_IN_LOADING_BUTTON_TEXT = 'Signing in...';\nexport const CREATE_PASSWORD = 'Create a password';\n\nexport const RETURN_TO_SIGN_IN_TEXT = 'Return to sign in';\nexport const RESET_PASSWORD_TEXT = 'Reset your password';\nexport const IS_THIS_CORRECT_TEXT = 'Is this correct?';\n\nexport const VERIFYING_SAML = 'Verifying SAML';\nexport const CONNECTING_TO = 'Connecting to';\n\nexport const SAML_DISABLED_MESSAGE =\n 'Your admin has disabled SAML authentication.';\nexport const ENTER_EMAIL_TO_CREATE_PASSWORD =\n 'Choose an SSO or enter your email to create a password for future logins.';\n\nexport const SIGN_IN_WITH_SAML_TEXT = (samlName: string) =>\n `${SIGN_IN_BUTTON_TEXT} with ${samlName}`;\n\nexport const SAML_WITH_SSO_TEXT = (samlName: string, ssoName: string) =>\n `Your account allows authorization with ${samlName}. Click the “Sign in with ${samlName}” button to log in or sign in with ${ssoName}.`;\n\nexport const SAML_WITH_NO_PREFERRED_SSO_TEXT = (samlName: string) =>\n `Please sign in with ${samlName}.`;\n\nexport const SAML_WITH_NO_PREFERRED_SSO_BODY_TEXT = (samlName: string) =>\n `Your account allows authorization with ${samlName}. Click the “Sign in with ${samlName}” button to log in or choose an SSO.`;\n\nexport const SAML_WITH_PASSWORD_TEXT = (samlName: string) =>\n `Your account allows authorization with ${samlName}. Click the “Sign in with ${samlName}” button to log in or enter your password below`;\n\nexport const SAML_ONLY_HEADER_TEXT = (samlName: string) =>\n `Please sign in with ${samlName}`;\n\nexport const SAML_ONLY_BODY_TEXT = (samlName: string) =>\n `Your account requires authorization with ${samlName} - please click the “Sign in with ${samlName}” button to log into your Assembly. If you don’t have ${samlName} access, please talk to your Assembly admin.`;\n\nexport const SSO_ENFORCED_HEADER_TEXT = 'Please use your SSO';\n\nexport const LIFION_ENFORCED_HEADER_TEXT = 'You’re registered with Lifion';\n\nexport const LIFION_ENFORCED_BODY_TEXT =\n 'Lifion has been used to authorize your account. Please log into your company’s Lifion account in order to log into your Assembly.';\n\nexport const SSO_ENFORCED_BODY_TEXT = (ssoName: string) =>\n `Your account is authorized with ${ssoName} - please click the “Sign in with ${ssoName}” button to log into your Assembly.`;\n\nexport const NO_PREFERRED_SSO_HEADER_TEXT = 'Use SSO or enter your password';\nexport const NO_PREFERRED_SSO_BODY_TEXT =\n 'Choose an SSO to authenticate or enter your password.';\n\nexport const CREATE_PASSWORD_HEADER_TEXT = `Your account doesn't have a password`;\nexport const CREATE_PASSWORD_BODY_TEXT =\n 'Choose an SSO to authenticate or create a password.';\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { BaseCSSProperties } from '@material-ui/styles';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport Button from '../../atoms/Button';\nimport Link from '../../atoms/Link';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport TextDivider from '../../../componentsV2/custom/TextDivider';\nimport TextField from '../../../componentsV2/core/TextField';\nimport {\n ButtonColors,\n ButtonStatuses,\n ButtonVariants,\n} from '../../atoms/Button/interfaces';\nimport {\n SIGN_IN_BUTTON_TEXT,\n SIGN_IN_LOADING_BUTTON_TEXT,\n} from '../../../languages/en/signIn';\n\nexport const StyledRoot = styled.div`\n width: 486px;\n margin: auto;\n padding: 24px 25px;\n background: ${ThemeV2.palette.gray1};\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n border-radius: 2px;\n`;\n\nexport const StyledHeading = styled(Heading)`\n margin-top: 0;\n margin-bottom: 4px;\n text-align: center;\n`;\n\nexport const StyledBody = styled(Body)`\n text-align: center;\n max-width: 436px;\n margin: 0 auto 24px;\n`;\n\nexport const StyledSubText = styled(Body)`\n text-align: center;\n max-width: 436px;\n margin: 24px auto 0;\n`;\n\ninterface StyleProps {\n root: BaseCSSProperties;\n headingText: BaseCSSProperties;\n bodyText: BaseCSSProperties;\n actionButton: BaseCSSProperties;\n}\n\ntype PropsClasses = Record;\n\ninterface SSOInfoCardProps {\n headingText: string;\n bodyText: string;\n buttonText: string;\n buttonOnClick(): void;\n className?: string;\n classes?: PropsClasses;\n buttonIcon?: string;\n subText?: {\n text: string;\n linkText?: string;\n linkPath?: string;\n };\n buttonProps?: {\n variant?: ButtonVariants;\n status?: ButtonStatuses;\n colour?: ButtonColors;\n };\n password?: {\n passwordVal: string | null;\n onPasswordChange: () => void;\n onNextClick: () => void;\n passwordErrors?: string;\n isLoading?: boolean;\n };\n}\n\nconst SSOInfoCard = (props: SSOInfoCardProps) => {\n const {\n headingText,\n bodyText,\n buttonText,\n buttonOnClick,\n className,\n buttonIcon,\n subText,\n password,\n buttonProps,\n } = props;\n\n let buttonColour: ButtonColors = 'primary';\n let buttonVariant: ButtonVariants = 'contained';\n let buttonStatus: ButtonStatuses = 'default';\n if (buttonProps) {\n buttonColour = buttonProps.colour || buttonColour;\n buttonVariant = buttonProps.variant || buttonVariant;\n buttonStatus = buttonProps.status || buttonStatus;\n }\n\n return (\n \n {headingText}\n {bodyText}\n \n {buttonText}\n \n {password && (\n <>\n \n \n \n {password.isLoading\n ? SIGN_IN_LOADING_BUTTON_TEXT\n : SIGN_IN_BUTTON_TEXT}\n \n \n )}\n {subText && (\n \n {subText.text}{' '}\n {subText.linkText && (\n {subText.linkText}\n )}\n \n )}\n \n );\n};\n\nexport default SSOInfoCard;\n","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/Logo_Assembly_Employee_Recognition_1x.959a9efe.webp\";","export default __webpack_public_path__ + \"static/media/Logo_Assembly_Employee_Recognition_3x.82f2ed3b.webp\";","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Link from '../Link';\nimport assemblyLogo from '../../../img/logos/assemblyColor@1x.png';\nimport assemblyLogo3x from '../../../img/logos/assemblyColor@3x.png';\nimport assemblyLogoWeb1x from '../../../img/logos/Logo_Assembly_Employee_Recognition_1x.webp';\nimport assemblyLogoWeb3x from '../../../img/logos/Logo_Assembly_Employee_Recognition_3x.webp';\nimport { APP_NAME } from '../../../Utils/constants';\n\nconst styles = {\n root: {\n flexGrow: 1,\n },\n appBar: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: '#ffffff',\n border: 'none',\n boxShadow: 'none',\n },\n grow: {\n flexGrow: 1,\n },\n logoStyle: {\n width: 150,\n },\n progress: {\n background: 'transparent',\n marginBottom: '-4px',\n overflow: 'visible',\n '& .MuiLinearProgress-bar': {\n height: '6px',\n borderRadius: '0px 3px 3px 0px',\n },\n },\n};\n\nfunction Navbar(props) {\n const { classes, slackOnboardStep } = props;\n return (\n
\n \n \n
\n \n \n \n \n \n \n
\n
\n {!!slackOnboardStep && (\n \n )}\n
\n
\n );\n}\n\nNavbar.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(styles)(Navbar);\n","export default \"data:image/png;base64,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\"","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Navbar from '../../componentsV2/core/Navbar';\n\nconst MARGIN_TOP = 90;\nconst styles = {\n root: {\n backgroundColor: '#f6f6f6',\n paddingTop: MARGIN_TOP,\n height: 'calc(100vh)',\n },\n};\n\nfunction onboardingLayout(props) {\n const { children, classes, slackOnboardStep } = props;\n return (\n
\n \n {children}\n
\n );\n}\n\nonboardingLayout.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(styles)(onboardingLayout);\n","import RoutesList from '../../../aV2/routes/routesList';\nimport {\n WIRES_CROSSED,\n TRY_AGAIN,\n TAKE_ME_BACK,\n} from '../../../languages/en/errors';\n\nexport enum SAMLAuthErrorCodes {\n INVALID_PARAMETER = 'INVALID_PARAMETER',\n OAUTH_CODE_INVALID = 'OAUTH_CODE_INVALID',\n ASSEMBLY_NOT_FOUND = 'ASSEMBLY_NOT_FOUND',\n ASSEMBLY_NOT_ACTIVE = 'ASSEMBLY_NOT_ACTIVE',\n USER_NOT_ACTIVE = 'USER_NOT_ACTIVE',\n CREATE_MEMBER_ERROR = 'CREATE_MEMBER_ERROR',\n USER_NOT_FOUND = 'USER_NOT_FOUND',\n ADMIN_APPROVAL_REQUESTED = 'ADMIN_APPROVAL_REQUESTED',\n SAML_NOT_ENABLED = 'SAML_NOT_ENABLED',\n}\n\nexport const ErrorData = {\n [SAMLAuthErrorCodes.ASSEMBLY_NOT_ACTIVE]: {\n primaryText: '\tThis account is closed',\n secondaryText: 'Sorry, your Assembly account has been closed',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.ENTER_EMAIL,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.ASSEMBLY_NOT_FOUND]: {\n primaryText: 'Assembly not found',\n secondaryText: 'Sorry, your Assembly account has not been set up yet',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.ENTER_EMAIL,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.OAUTH_CODE_INVALID]: {\n primaryText: 'Authentication failed',\n secondaryText:\n 'Looks like your authentication token has expired. Please try signing in again.',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.INVALID_PARAMETER]: {\n primaryText: WIRES_CROSSED,\n secondaryText: TRY_AGAIN,\n buttonText: TAKE_ME_BACK,\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.CREATE_MEMBER_ERROR]: {\n primaryText: WIRES_CROSSED,\n secondaryText: TRY_AGAIN,\n buttonText: TAKE_ME_BACK,\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.SAML_NOT_ENABLED]: {\n primaryText: WIRES_CROSSED,\n secondaryText: TRY_AGAIN,\n buttonText: TAKE_ME_BACK,\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.USER_NOT_FOUND]: {\n primaryText: 'Account not found',\n secondaryText:\n 'Sorry, we’re not able to find your account. Please talk to your admin or try creating a new Assembly',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.USER_NOT_ACTIVE]: {\n primaryText: 'Account not active',\n secondaryText:\n 'Sorry, your account is not active. Please talk to your admin or try creating a new Assembly',\n buttonText: 'Setup new Assembly',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: null,\n },\n [SAMLAuthErrorCodes.ADMIN_APPROVAL_REQUESTED]: {\n primaryText: 'Sorry, this Assembly is invite only.',\n secondaryText:\n 'If you’d like to join, you’ll have to request permission from the Assembly admin for this account.',\n buttonText: 'Access Request Sent',\n urlToPush: RoutesList.SIGN_IN,\n buttonIcon: 'check-rounded',\n },\n};\n\nexport const getSAMLErrorData = (errorCode: SAMLAuthErrorCodes) => {\n if (!Object.values(SAMLAuthErrorCodes).includes(errorCode)) {\n return {\n headerText: ErrorData[SAMLAuthErrorCodes.INVALID_PARAMETER].primaryText,\n bodyText: ErrorData[SAMLAuthErrorCodes.INVALID_PARAMETER].secondaryText,\n buttonText: ErrorData[SAMLAuthErrorCodes.INVALID_PARAMETER].buttonText,\n urlToPush: ErrorData[SAMLAuthErrorCodes.INVALID_PARAMETER].urlToPush,\n buttonIcon: ErrorData[SAMLAuthErrorCodes.INVALID_PARAMETER].buttonIcon,\n };\n }\n return {\n headerText: ErrorData[SAMLAuthErrorCodes[errorCode]].primaryText,\n bodyText: ErrorData[SAMLAuthErrorCodes[errorCode]].secondaryText,\n buttonText: ErrorData[SAMLAuthErrorCodes[errorCode]].buttonText,\n urlToPush: ErrorData[SAMLAuthErrorCodes[errorCode]].urlToPush,\n buttonIcon: ErrorData[SAMLAuthErrorCodes[errorCode]].buttonIcon,\n };\n};\n","export const WIRES_CROSSED = 'Whoops, some wires got crossed';\nexport const TRY_AGAIN =\n 'Sorry for the error, please try again now or try later';\nexport const TAKE_ME_BACK = 'Thanks, take me back';\n","export enum HttpsStatus {\n UNAUTHORIZED = 401,\n}\n\nexport type ResponseError = {\n response: {\n status: HttpsStatus | number;\n data: {\n message: string;\n };\n };\n};\n","import { useEffect, useState } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { parse } from 'qs';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport {\n useAuthenticateSAMLQuery,\n useSAMLConfigFetchQuery,\n} from '../../../queries/Auth/SAML';\nimport {\n userSessionCreatedAction,\n handleUserSignin,\n} from '../../../modules/Session';\nimport { AUTH_SAML, SIGN_IN } from '../../../constants/routes';\nimport { SAMLAuthErrorCodes } from '../../../Utils/data/SAML/error';\nimport { LOADING } from '../../../languages/en/singleWords';\nimport { CONNECTING_TO, VERIFYING_SAML } from '../../../languages/en/signIn';\nimport { getAppSource, MS_TEAMS } from '../../../Utils/msteams';\n\nconst useSAMLAuthLogic = () => {\n const { search } = useLocation();\n const { push } = useHistory();\n const dispatch = useDispatch();\n const [token, setToken] = useState(undefined);\n const [assemblyId, setAssemblyId] = useState(undefined);\n const [samlName, setSamlName] = useState('');\n const [errorCode, setErrorCode] = useState(\n undefined,\n );\n\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const tokenFromURL = parsedParams && parsedParams.token;\n const from = parsedParams && parsedParams.from;\n const assemblyIdFromURL = parsedParams && parsedParams.assemblyId;\n const errorCodeFromURL = parsedParams && parsedParams.error;\n // const hasError = parsedParams && parsedParams.error;\n const isFromMSTeams = getAppSource() === MS_TEAMS;\n const fromTab = from === 'tab';\n if (isFromMSTeams && tokenFromURL && !fromTab) {\n microsoftTeams.initialize();\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n microsoftTeams.authentication.notifySuccess({\n code: `${tokenFromURL}`,\n });\n } else {\n if (tokenFromURL) {\n setToken(tokenFromURL as string);\n }\n if (assemblyIdFromURL) {\n setAssemblyId(assemblyIdFromURL as string);\n }\n if (errorCodeFromURL === SAMLAuthErrorCodes.SAML_NOT_ENABLED) {\n push(`${SIGN_IN}?error=${errorCodeFromURL}`);\n }\n if (errorCodeFromURL && !assemblyIdFromURL) {\n setErrorCode(errorCodeFromURL as SAMLAuthErrorCodes);\n }\n }\n }, [push, search]);\n\n let loadingText = '';\n\n const hasToken = !!token;\n const { data, error } = useAuthenticateSAMLQuery(hasToken, token);\n\n const hasAssemblyId = !!assemblyId;\n\n useEffect(() => {\n if (data) {\n const { jwtToken, user } = data;\n if (user && jwtToken) {\n dispatch(userSessionCreatedAction(user, jwtToken));\n handleUserSignin(user);\n }\n }\n if (error && !hasAssemblyId) {\n const errorCodeValue =\n error.response?.data.message || SAMLAuthErrorCodes.INVALID_PARAMETER;\n push(`${AUTH_SAML}?error=${errorCodeValue}`);\n }\n }, [data, dispatch, error, push, hasAssemblyId]);\n\n const { data: samlConfigData } = useSAMLConfigFetchQuery(\n hasAssemblyId,\n assemblyId,\n );\n useEffect(() => {\n if (samlConfigData) {\n const { name, uri } = samlConfigData;\n if (uri) {\n window.location.href = uri;\n setSamlName(name);\n }\n }\n }, [samlConfigData]);\n\n if (hasToken) {\n loadingText = VERIFYING_SAML;\n }\n if (hasAssemblyId) {\n if (samlName) {\n loadingText = `${CONNECTING_TO} ${samlName}`;\n } else {\n loadingText = LOADING;\n }\n }\n return {\n loadingText,\n errorCode,\n };\n};\n\nexport default useSAMLAuthLogic;\n","import { useQuery } from 'react-query';\nimport { AxiosError } from 'axios';\nimport {\n AUTHENTICATE_SAML,\n GET_SAML_AUTH_CONFIG,\n} from '../../../constants/endpoints';\nimport { makeAPICallWithDataReturn } from '../../utils';\nimport { SAMLAuthErrorCodes } from '../../../Utils/data/SAML/error';\n\nexport interface AuthenticateSAMLResponse {\n user: any;\n jwtToken: string;\n}\n\nexport interface AuthenticateSAMLError {\n message: SAMLAuthErrorCodes;\n}\n\nexport interface FetchSAMLAuthConfigResponse {\n name: string;\n uri: string;\n}\n\nexport const useAuthenticateSAMLQuery = (makeRequest = true, token = '') => {\n return useQuery>(\n AUTHENTICATE_SAML,\n () => makeAPICallWithDataReturn(AUTHENTICATE_SAML, null, { code: token }),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useSAMLConfigFetchQuery = (\n makeRequest = true,\n assemblyId = '',\n) => {\n return useQuery(\n GET_SAML_AUTH_CONFIG,\n () => makeAPICallWithDataReturn(GET_SAML_AUTH_CONFIG, null, { assemblyId }),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport Grid from '@material-ui/core/Grid';\nimport LoadingPulse from '../../../atomic/atoms/LoadingPulse';\nimport Body from '../../../atomic/atoms/Body';\nimport SSOInfoCard from '../../../atomic/pages/SSOInfoCard';\nimport Layout from '../../../aV2/Layout/onboarding';\n\nimport useSAMLAuthLogic from './useSAMLAuthLogic';\nimport {\n getSAMLErrorData,\n SAMLAuthErrorCodes,\n} from '../../../Utils/data/SAML/error';\nimport RoutesList from '../../../aV2/routes/routesList';\nimport { RETURN_TO_SIGN_IN } from '../../../languages/en/signIn';\nimport {\n ButtonVariants,\n ButtonStatuses,\n ButtonColors,\n} from '../../../atomic/atoms/Button/interfaces';\n\nconst SAMLAuthController = () => {\n const { loadingText, errorCode } = useSAMLAuthLogic();\n const { push } = useHistory();\n if (errorCode) {\n const { headerText, bodyText, buttonText, buttonIcon, urlToPush } =\n getSAMLErrorData(errorCode);\n let buttonProps: {\n variant?: ButtonVariants;\n status?: ButtonStatuses;\n colour?: ButtonColors;\n } = {};\n let handleButtonClick = () => {\n push(urlToPush);\n };\n if (errorCode === SAMLAuthErrorCodes.ADMIN_APPROVAL_REQUESTED) {\n buttonProps = {\n variant: 'text',\n status: 'success',\n colour: 'secondary',\n };\n handleButtonClick = () => {};\n }\n const subText = {\n text: '',\n linkText: RETURN_TO_SIGN_IN,\n linkPath: RoutesList.SIGN_IN,\n };\n return (\n \n \n \n );\n }\n return (\n \n {loadingText}\n \n \n );\n};\n\nexport default SAMLAuthController;\n","import { datadogRum } from '@datadog/browser-rum';\nimport { useEffect } from 'react';\nimport { useProfileInfoFetchQuery } from '../queries/Profile';\n\nconst useDataDog = (isAuthenticated: boolean) => {\n const { data } = useProfileInfoFetchQuery(isAuthenticated);\n\n useEffect(() => {\n if (data) {\n datadogRum.setUser({\n id: data.member.memberId,\n email: data.member.email,\n name: `${data.member.profile.firstName} ${data.member.profile.lastName}`,\n assemblyId: data.assembly.assemblyId,\n });\n }\n }, [data]);\n};\n\nexport default useDataDog;\n","export default __webpack_public_path__ + \"static/media/brokenBug.82325518.png\";","export default __webpack_public_path__ + \"static/media/safariLogo.ec1c2061.png\";","export default __webpack_public_path__ + \"static/media/chromeLogo.32bd3168.png\";","export default __webpack_public_path__ + \"static/media/edgeLogo.2fa716db.png\";","export default __webpack_public_path__ + \"static/media/firefoxLogo.805c4876.png\";","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { Img } from 'react-image';\nimport Button from '@material-ui/core/Button';\nimport { detect } from 'detect-browser';\nimport brokenCarrot from '../img/brokenBug.png';\nimport safariLogo from '../img/safariLogo.png';\nimport chromeLogo from '../img/chromeLogo.png';\nimport edgeLogo from '../img/edgeLogo.png';\nimport firefoxLogo from '../img/firefoxLogo.png';\nimport { APP_NAME } from '../Utils/constants';\n\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, unSupprortedBrowser: false };\n }\n\n componentDidCatch() {\n // Display fallback UI\n const browser = detect();\n let isSupportedBrowser = true;\n if (browser) {\n // console.log(browser.name);\n // console.log(browser.version);\n // console.log(browser.os);\n if (browser.name === 'chrome') {\n if (browser.version < 66) {\n isSupportedBrowser = false;\n }\n } else if (browser.name === 'firefox') {\n if (browser.version < 60) {\n isSupportedBrowser = false;\n }\n } else if (browser.name === 'safari') {\n if (browser.version < 11) {\n isSupportedBrowser = false;\n }\n } else if (browser.name === 'edge') {\n if (browser.version < 15) {\n isSupportedBrowser = false;\n }\n } else if (browser.name === 'ie') {\n isSupportedBrowser = false;\n }\n }\n if (!isSupportedBrowser) {\n this.setState({ unSupprortedBrowser: true });\n } else {\n // this.setState({ unSupprortedBrowser: true });\n this.setState({ hasError: true });\n }\n }\n\n onBackHomeClick = () => {\n this.setState({ hasError: false, unSupprortedBrowser: false });\n window.location.href = `${window.location.origin}/home`;\n // history.push('/home');\n };\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n
\n
\n
\n
\n \n
\n
\n
\n Ah, a bug! Something went wrong!\n
\n
\n
\n
\n Darn, this is awkward. something went wrong and our team has\n been notified. We are looking into this asap.\n
\n
\n
\n \n BACK HOME\n \n
\n
\n
\n
\n );\n }\n if (this.state.unSupprortedBrowser) {\n return (\n
\n
\n
\n {/*
\n \"somethingwentwrong\"\n
*/}\n \n
\n SORRY, THIS BROWSER OR VERSION IS NOT SUPPORTED\n
\n
\n
\n
\n To best experience {APP_NAME}, please download or swtich to\n the latest one of these browsers\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n Safari\n
\n
\n Version: 11+\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n Chrome\n
\n
\n Version: 66+\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n Firefox\n
\n
\n Version: 60+\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n Edge\n
\n
\n Version: 15+\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import { useEffect, useState, useCallback } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport _ from 'lodash';\nimport { parse } from 'qs';\n\nimport useRequest from '../../hooks/useRequest/useRequest';\nimport RoutesList from '../../aV2/routes/routesList';\nimport { GET_BOT_OAUTH_CONFIG } from '../../constants/endpoints';\nimport { APP_URL } from '../../config';\n\nconst useFetchBotConfig = (sso: string) => {\n const REDIRECT_URI = `${APP_URL}${RoutesList.BOT_AUTHORIZE_FN(sso)}`;\n\n const [isConnectingBot, setIsConnectingBot] = useState(false);\n const [isAutoLogin, setIsAutoLogin] = useState(false);\n\n const { search } = useLocation();\n\n const redirectToIM = (authorizeUri: string) => {\n window.location.href = authorizeUri;\n };\n\n const onGetSSOConfigSuccess = useCallback(\n (data) => {\n if (isAutoLogin) {\n setIsConnectingBot(true);\n const authorizeUri = _.get(data, ['data', 'authorizeUri'], '');\n redirectToIM(authorizeUri);\n }\n },\n [isAutoLogin],\n );\n\n const handleError = useCallback(() => {\n // dispatch(showErrorMessage(message));\n // TODO: Handle errors\n }, []);\n\n const { fireRequest } = useRequest(GET_BOT_OAUTH_CONFIG, {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess: onGetSSOConfigSuccess,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onError: handleError,\n });\n useEffect(() => {\n fireRequest({\n params: { redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const { auto, code } = parsedParams;\n if (auto === 'true' && !code) {\n setIsConnectingBot(true);\n setIsAutoLogin(true);\n }\n }, [search, sso, REDIRECT_URI, fireRequest]);\n\n return {\n models: {\n isConnectingBot,\n },\n };\n};\n\nexport default useFetchBotConfig;\n","import { useEffect, useState, useCallback } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { parse } from 'qs';\nimport get from 'lodash/get';\nimport RoutesList from '../../aV2/routes/routesList';\nimport useRequest from '../../hooks/useRequest/useRequest';\nimport { AUTHORIZE_BOT } from '../../constants/endpoints';\nimport { APP_URL } from '../../config';\nimport {\n BotTypeOptions,\n BotTypeManager,\n BotManager,\n} from '../../Utils/data/botManager/common';\n\nconst useVerifyBotCode = (sso: BotTypeOptions) => {\n const { search } = useLocation();\n const { push } = useHistory();\n const [isVerifyingCode, setIsVerifyingCode] = useState(false);\n const [verifyError, setVerifyError] = useState(null);\n\n const authorizeSuccess = useCallback(() => {\n setIsVerifyingCode(false);\n push(\n `${RoutesList.ADMIN_WORKSPACE_INTEGRATIONS}/${\n BotManager[BotTypeManager[sso]].uri\n }`,\n // BotManager[BotTypeManager[sso]].redirectURI\n // }`,\n );\n }, [push, sso]);\n\n const handleError = useCallback(\n (message = 'SERVER_ERROR') => {\n setIsVerifyingCode(false);\n setVerifyError(message);\n const errorMessage = get(message, ['response', 'data', 'message']);\n if (errorMessage) {\n push(\n `${RoutesList.ADMIN_WORKSPACE_INTEGRATIONS}?error=${errorMessage}&bot=${sso}`,\n );\n }\n },\n [sso, push],\n );\n\n const { fireRequest } = useRequest(AUTHORIZE_BOT, {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess: authorizeSuccess,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore TODO: Convert useFetch to Typescript\n onError: handleError,\n });\n\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const REDIRECT_URI = `${APP_URL}${RoutesList.BOT_AUTHORIZE_FN(sso)}`;\n const isCodePresent = parsedParams && parsedParams.code;\n const hasError = parsedParams && parsedParams.error;\n if (isCodePresent) {\n const { code } = parsedParams;\n setIsVerifyingCode(true);\n fireRequest({\n payload: { code, redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n }\n if (hasError) {\n push(\n `${RoutesList.ADMIN_WORKSPACE_INTEGRATIONS}?error=${parsedParams.error}&bot=${sso}`,\n );\n }\n }, [sso, search, fireRequest, push]);\n\n return {\n isVerifyingCode,\n verifyError,\n };\n};\nexport default useVerifyBotCode;\n","import React from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport { useParams } from 'react-router-dom';\n\nimport useFetchBotConfig from '../../../interactionLayer/useFetchBotConfig/useFetchBotConfig';\nimport useVerifyBotCode from '../../../interactionLayer/useVerifyBotCode/useVerifyBotCode';\n\nimport Body from '../../atoms/Body';\nimport LoadingPulse from '../../atoms/LoadingPulse';\nimport {\n BotTypeOptions,\n BotTypeManager,\n BotManager,\n} from '../../../Utils/data/botManager/common';\n\nconst BotManagerAuthorize = () => {\n const { botType } = useParams<{ botType: BotTypeOptions }>();\n const { isVerifyingCode } = useVerifyBotCode(botType);\n const { models } = useFetchBotConfig(botType);\n\n if (models.isConnectingBot || isVerifyingCode) {\n const { displayName } = BotManager[BotTypeManager[botType]];\n return (\n \n \n {models.isConnectingBot\n ? `Connecting to ${displayName}`\n : `Verifying ${displayName}`}\n \n \n \n );\n }\n return null;\n};\n\nexport default BotManagerAuthorize;\n","import { useEffect, useState, useCallback } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport _ from 'lodash';\nimport { parse } from 'qs';\n\nimport useFetch from '../../hooks/useFetch';\nimport RoutesList from '../../aV2/routes/routesList';\nimport { GET_SSO_OAUTH_CONFIG } from '../../hooks/useFetch/endpoints';\nimport { APP_URL } from '../../config';\n\nconst useFetchIMConfig = (sso: string) => {\n const REDIRECT_URI = `${APP_URL}${RoutesList.IM_AUTHORIZE_SSO(sso)}`;\n\n const [imConfig, setIMConfig] = useState(null);\n const [isConnectingIM, setIsConnectingIM] = useState(false);\n const [isAutoLogin, setIsAutoLogin] = useState(false);\n\n const { search } = useLocation();\n\n const redirectToIM = (authorizeUri: string) => {\n window.location.href = authorizeUri;\n };\n\n const onGetSSOConfigSuccess = useCallback(\n (data) => {\n if (isAutoLogin) {\n setIsConnectingIM(true);\n const authorizeUri = _.get(data, ['data', 'authorizeUri'], '');\n redirectToIM(authorizeUri);\n } else {\n setIMConfig(data);\n }\n },\n [isAutoLogin],\n );\n\n const handleError = () => {\n // dispatch(showErrorMessage(message));\n // TODO: Handle errors\n };\n\n const { makeRequest } = useFetch({\n apiEndpoint: GET_SSO_OAUTH_CONFIG,\n onSuccess: onGetSSOConfigSuccess,\n onFailure: handleError,\n });\n\n useEffect(() => {\n makeRequest({\n params: { redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const { auto, code } = parsedParams;\n if (auto === 'true' && !code) {\n setIsConnectingIM(true);\n setIsAutoLogin(true);\n }\n }, [makeRequest, search, sso, REDIRECT_URI]);\n\n const onClick = useCallback(() => {\n setIsConnectingIM(true);\n const authorizeUri = _.get(imConfig, ['data', 'authorizeUri'], '');\n redirectToIM(authorizeUri);\n }, [imConfig]);\n\n return {\n models: {\n isConnectingIM,\n imConfigData: imConfig,\n },\n operations: {\n onAuthorizeClick: onClick,\n },\n };\n};\n\nexport default useFetchIMConfig;\n","import { useEffect, useState, useCallback } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport CookieHandler from 'react-cookies';\nimport get from 'lodash/get';\nimport { parse } from 'qs';\n\nimport RoutesList from '../../aV2/routes/routesList';\nimport useFetch from '../../hooks/useFetch';\nimport {\n userSessionCreatedAction,\n handleUserSignin,\n} from '../../modules/Session';\nimport { AUTHORIZE_SSO, SIGN_IN_SSO } from '../../hooks/useFetch/endpoints';\nimport { COOKIE_CONSTANTS } from '../../Utils/constants';\nimport { APP_URL } from '../../config';\nimport { ApiResponseError } from '../../interfaces/identityManager/common';\n\nconst useVerifyIMCode = (sso: string) => {\n const REDIRECT_URI = `${APP_URL}${RoutesList.IM_AUTHORIZE_SSO(sso)}`;\n const { search } = useLocation();\n const { push } = useHistory();\n const [isVerifyingCode, setIsVerifyingCode] = useState(false);\n const [verifyError, setVerifyError] = useState(null);\n const dispatch = useDispatch();\n\n const handleError = useCallback(\n ({ message }: ApiResponseError) => {\n setIsVerifyingCode(false);\n setVerifyError(message);\n if (message) {\n push(\n // Adding sso to query param as we are handling both IM and Sign in using\n // same URL for ADP. When it error outs, on Sign in flow, it will get\n // redirected to /signin with the error query param. So adding sso\n // query param, we can identify from which sso it was redirected.\n `${RoutesList.ADMIN_USER_MANAGE_IDENTITY}/${sso}?error=${message}&sso=${sso}`,\n );\n }\n },\n [push, sso],\n );\n\n const authorizeSuccess = () => {\n setIsVerifyingCode(false);\n CookieHandler.remove(COOKIE_CONSTANTS.FROM_IDENTITY_MANAGER_AUTHORIZE, {\n path: '/',\n });\n push(`${RoutesList.ADMIN_USER_MANAGE_IDENTITY}/${sso}`);\n };\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore TODO: Convert useFetch to Typescript\n const signInSuccess = (response) => {\n setIsVerifyingCode(false);\n const data = get(response, ['data'], null);\n if (data) {\n dispatch(userSessionCreatedAction(data.user, data.jwtToken));\n handleUserSignin(data.user);\n }\n };\n\n const { makeRequest: makeAuthorizeRequest } = useFetch({\n apiEndpoint: AUTHORIZE_SSO,\n onSuccess: authorizeSuccess,\n onFailure: handleError,\n });\n\n const { makeRequest: makeSigninRequest } = useFetch({\n apiEndpoint: SIGN_IN_SSO,\n onSuccess: signInSuccess,\n onFailure: handleError,\n });\n\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const isCodePresent = parsedParams && parsedParams.code;\n if (isCodePresent) {\n const { code } = parsedParams;\n setIsVerifyingCode(true);\n const isFromAuthorize = CookieHandler.load(\n COOKIE_CONSTANTS.FROM_IDENTITY_MANAGER_AUTHORIZE,\n );\n if (isFromAuthorize === 'true') {\n makeAuthorizeRequest({\n data: { code, redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n } else {\n makeSigninRequest({\n data: { code, redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n }\n }\n const hasError = parsedParams && parsedParams.error;\n if (hasError) {\n push(\n `${RoutesList.ADMIN_USER_MANAGE_IDENTITY}/${sso}?error=${parsedParams.error}`,\n );\n }\n }, [\n sso,\n search,\n REDIRECT_URI,\n makeAuthorizeRequest,\n makeSigninRequest,\n push,\n ]);\n\n return {\n isVerifyingCode,\n verifyError,\n };\n};\nexport default useVerifyIMCode;\n","export default __webpack_public_path__ + \"static/media/assembly-logo.08cde7f0.svg\";","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { string, func } from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Link from '../../atoms/LinkItem';\nimport Image from '../../atoms/Image';\nimport AssemblyLogo from '../../../img/svgs/assembly-logo.svg';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles({\n root: {\n top: 0,\n left: 'auto',\n right: 0,\n position: 'fixed',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n height: '64px',\n width: '100%',\n maxWidth: '100%',\n background: ThemeV2.palette.gray1,\n borderBottom: `1px solid ${ThemeV2.palette.gray5}`,\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',\n padding: '0px 24px',\n outline: 'none',\n },\n headerLogoLink: {\n display: 'inline-flex',\n outline: 'none',\n },\n});\n\nconst HeaderNavbar = (props) => {\n const classes = useStyles(props);\n const { customLogo, logoOnClick } = props;\n return (\n \n \n \"brand\n \n \n );\n};\n\nHeaderNavbar.propTypes = {\n customLogo: string,\n logoOnClick: func.isRequired,\n};\n\nHeaderNavbar.defaultProps = {\n customLogo: '',\n};\n\nexport default HeaderNavbar;\n","import React, { useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useHistory } from 'react-router-dom';\n\nimport HeaderNavbar from '../../organism/HeaderNavbar';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: 'calc(100vh)',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: ThemeV2.palette.geekBlue2,\n },\n}));\n\ninterface SSOOnboardingTemplateProps {\n logoURL: string;\n children: React.ReactNode;\n}\n\nconst SSOOnboardingTemplate = ({\n logoURL,\n children,\n}: SSOOnboardingTemplateProps) => {\n const classes = useStyles();\n const { push } = useHistory();\n const onLogoClick = useCallback(() => {\n push(logoURL);\n }, [push, logoURL]);\n\n return (\n
\n \n {children}\n
\n );\n};\n\nSSOOnboardingTemplate.defaultProps = {\n logoURL: '/',\n};\n\nexport default SSOOnboardingTemplate;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\n\nimport SVGIcon from '../SVGIcon/index';\nimport theme from '../../../componentsV2/theme';\nimport Body from '../Body';\nimport { ButtonContent } from '../../../Utils/data/ssoManager/common';\nimport { PropsClasses } from '../../../interfaces/ClassesProps';\n\nconst useStyles = makeStyles({\n root: {\n padding: '12px 6px',\n width: '184px',\n height: '44px',\n borderRadius: '6px',\n border: `1px solid ${theme.palette.lightGray2}`,\n opacity: 1,\n textTransform: 'unset',\n\n transition: '0.3s ease all',\n '&:hover': {\n backgroundColor: theme.palette.gray1,\n boxShadow: '0px 2px 6px rgba(44, 44, 44, 0.24)',\n },\n '&:active': {\n backgroundColor: theme.palette.gray3,\n },\n '&:disabled': {\n filter: 'grayscale(1)',\n background: theme.palette.gray3,\n border: `1px solid ${theme.palette.lightGray2}`,\n },\n '& .MuiButton-startIcon': {\n margin: '0px',\n marginRight: '8px',\n },\n '& .MuiButton-label': {\n justifyContent: 'center',\n '& b': {\n marginLeft: '4px',\n },\n '& svg': {\n maxWidth: '18px',\n maxHeight: '18px',\n },\n },\n },\n bodyText: {\n letterSpacing: 'normal',\n },\n});\nexport interface SSOProps {\n ssoParam: string;\n logo: string;\n displayName: string;\n iconColor?: string;\n}\n\nexport enum LoginType {\n SignIn = 'signin',\n SignUp = 'signup',\n ComingSoon = 'comingSoon',\n}\ninterface ButtonSSOProps {\n sso: SSOProps;\n disabled?: boolean;\n loginType: LoginType;\n onClick?(): void;\n classes?: PropsClasses;\n}\n\nconst ButtonSSO = (props: ButtonSSOProps) => {\n const { onClick, sso, loginType, disabled } = props;\n const classes = useStyles(props);\n\n const RenderSvg = () => (\n \n );\n\n let ButtonText: string | null = null;\n if (loginType === LoginType.SignIn) {\n ButtonText = ButtonContent.SIGN_IN;\n } else if (loginType === LoginType.SignUp) {\n ButtonText = ButtonContent.SIGN_UP;\n } else {\n ButtonText = ButtonContent.COMING_SOON;\n }\n\n return (\n \n \n {ButtonText} {loginType !== LoginType.ComingSoon && sso.displayName}\n \n \n );\n};\n\nexport default ButtonSSO;\n","import React from 'react';\nimport { useParams } from 'react-router-dom';\nimport Grid from '@material-ui/core/Grid';\n\nimport useFetchIMConfig from '../../../interactionLayer/useFetchIMConfig/useFetchIMConfig';\nimport useVerifyIMCode from '../../../interactionLayer/useVerifyIMCode/useVerifyIMCode';\n\nimport SSOOnboardingTemplate from '../../templates/SSOOnboardingTemplate/SSOOnboardingTemplate';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport LoadingPulse from '../../atoms/LoadingPulse';\nimport IntegrationButton from '../../molecules/IntegrationButton';\nimport {\n IdentitySSO,\n getSSOIDByParam,\n} from '../../../Utils/identity/allowedSSOs';\n\ninterface IdentityManagerAuthorizeParams {\n sso: string;\n}\n\nconst IdentityManagerAuthorize = () => {\n const { sso } = useParams();\n const { isVerifyingCode } = useVerifyIMCode(sso);\n const { models, operations } = useFetchIMConfig(sso);\n const ssoId = getSSOIDByParam(sso);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /* @ts-ignore */\n const { logo, displayName } = IdentitySSO[ssoId];\n\n const isConnectingOrVerifying = models.isConnectingIM || isVerifyingCode;\n const connectionBody = models.isConnectingIM\n ? `Connecting to ${displayName}`\n : `Verifying ${displayName}`;\n const welcomeHeading = `Welcome! Sign in with ${displayName} to access your Assembly.`;\n const welcomeBody = `Give recognition, redeem your earned points, peep the leader boards, and\n more. Click the ${displayName} button to sign in to Assembly.`;\n\n // Starting of Presentation Component\n // TODO: Split Dumb & Smart Components\n if (isConnectingOrVerifying) {\n return (\n \n {connectionBody}\n \n \n );\n }\n\n return (\n \n {welcomeHeading}\n \n {welcomeBody}\n \n \n \n \n \n );\n};\n\nexport default IdentityManagerAuthorize;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nexport default function (ComposedComponent) {\n class NotAuthentication extends Component {\n componentDidMount() {\n if (this.props.authenticated) {\n this.props.history.push('/');\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.authenticated) {\n // this.props.history.push('/home');\n }\n }\n\n PropTypes = {\n router: PropTypes.object,\n };\n\n render() {\n return ;\n }\n }\n\n function mapStateToProps(state) {\n return { authenticated: state.auth.authenticated };\n }\n\n return connect(mapStateToProps)(NotAuthentication);\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { employerSelector } from '../../modules/admin/selector';\nimport { meSelector } from '../../modules/me/selector';\nimport LoadingPulse from '../../screens/shared/LoadingPulse';\n\nconst auth = (ComposedComponent) => {\n class Authentication extends Component {\n PropTypes = {\n router: PropTypes.object,\n };\n\n componentDidMount() {\n if (!this.props.authenticated) {\n const { history, location } = this.props;\n let fullPath = location.pathname;\n if (location.search) {\n fullPath = `${location.pathname}${location.search}`;\n }\n history.push({\n pathname: '/signin',\n state: { origin: fullPath },\n search: '',\n });\n } else {\n // const { me } = this.props;\n // if (me) {\n // if (!me.isOnboardingComplete) {\n // this.props.dispatch(uiActions.showIncompleteOnboarding());\n // }\n // }\n }\n }\n\n componentDidUpdate() {\n if (!this.props.authenticated) {\n const { location } = this.props;\n let fullPath = location.pathname;\n if (location.search) {\n fullPath = `${location.pathname}${location.search}`;\n }\n this.props.history.push({\n pathname: '/signin',\n state: { origin: fullPath },\n search: '',\n });\n }\n }\n\n render() {\n const { authenticated, me, employer } = this.props;\n if (authenticated) {\n if (me && employer) {\n return ;\n }\n return (\n
\n \n
\n );\n }\n\n return
;\n }\n }\n\n function mapStateToProps(state) {\n return {\n authenticated: state.auth.authenticated,\n me: meSelector(state),\n employer: employerSelector(state),\n };\n }\n\n return connect(mapStateToProps)(Authentication);\n};\n\nexport default auth;\n","import { useEffect, useState, useCallback, useMemo } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport { get } from 'lodash';\nimport { parse } from 'qs';\nimport { APP_URL } from '../../../config';\nimport RoutesList from '../../../aV2/routes/routesList';\nimport useRequest from '../../../hooks/useRequest/useRequest';\nimport {\n GET_SSO_SIGNIN_CONFIG,\n GET_SSO_SIGNUP_CONFIG,\n} from '../../../constants/endpoints';\nimport { SSOOptions, SSOTypes } from '../../../Utils/data/ssoManager/common';\nimport { isSourceMSTeams, MS_TEAMS } from '../../../Utils/msteams';\n\nconst useFetchSSOConfig = (\n sso: string,\n ssoType: SSOTypes,\n authInModal: boolean,\n) => {\n const [isConnectingSSO, setIsConnectingSSO] = useState(false);\n const [ssoAuthorizeURI, setSSOAuthorizeURI] = useState('');\n const { push } = useHistory();\n const { search } = useLocation();\n const isFromMSTeams = isSourceMSTeams();\n\n const redirectToIM = useCallback((authorizeUri: string) => {\n window.location.href = authorizeUri;\n }, []);\n\n const ssoURL = useMemo(\n () =>\n `/${RoutesList.SSO_AUTHORIZE_MODAL_FN(\n sso,\n ssoType,\n )}?auto=true&source=${MS_TEAMS}`,\n [sso, ssoType],\n );\n const msTeamsOAuthStart = useCallback(() => {\n microsoftTeams.initialize();\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n microsoftTeams.authentication.authenticate({\n url: ssoURL,\n width: 600,\n height: 535,\n successCallback(result) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { code } = result;\n push(\n `/${RoutesList.SSO_AUTHORIZE_FN(sso, ssoType)}?code=${code}&from=tab`,\n );\n },\n failureCallback(reason) {\n push(`/${RoutesList.SSO_ERRORS_FN(sso, ssoType, reason)}`);\n },\n });\n }, [push, sso, ssoType, ssoURL]);\n\n const onGetSSOConfigSuccess = useCallback(\n (data) => {\n const authorizeURI = get(data, ['data', 'authorizeUri'], null);\n setSSOAuthorizeURI(authorizeURI);\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const { auto, code } = parsedParams;\n if (auto === 'true' && !code) {\n setIsConnectingSSO(true);\n if (!isFromMSTeams || authInModal) {\n redirectToIM(authorizeURI);\n }\n }\n },\n [authInModal, isFromMSTeams, redirectToIM, search],\n );\n\n const handleError = useCallback(() => {\n // dispatch(showErrorMessage(message));\n }, []);\n const { fireRequest: signinSSORequest, isLoading: signinRequestLoading } =\n useRequest(GET_SSO_SIGNIN_CONFIG, {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess: onGetSSOConfigSuccess,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onError: handleError,\n });\n\n const { fireRequest: signupSSORequest, isLoading: signupRequestLoading } =\n useRequest(GET_SSO_SIGNUP_CONFIG, {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess: onGetSSOConfigSuccess,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onError: handleError,\n });\n\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const { auto, code } = parsedParams;\n if (auto === 'true' && !code) {\n setIsConnectingSSO(true);\n }\n\n if (sso !== SSOOptions.GOOGLE && sso !== SSOOptions.LIFION) {\n if (auto === 'true' && isFromMSTeams && !authInModal) {\n msTeamsOAuthStart();\n } else {\n if (ssoType === SSOTypes.SIGN_IN) {\n let REDIRECT_URI;\n if (sso === SSOOptions.ADP) {\n // ADP uses single URL for Redirection, so reusing IM URL\n REDIRECT_URI = `${APP_URL}${RoutesList.IM_AUTHORIZE_SSO(sso)}`;\n } else if (authInModal) {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_AUTHORIZE_MODAL_FN(\n sso,\n ssoType,\n )}`;\n } else {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n sso,\n )}`;\n }\n signinSSORequest({\n params: { redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n }\n // Skipping for ADP as we redirect user to ADP Marketplace on Sign Up\n if (ssoType === SSOTypes.SIGN_UP && sso !== SSOOptions.ADP) {\n let REDIRECT_URI;\n if (authInModal) {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_AUTHORIZE_MODAL_FN(\n sso,\n ssoType,\n )}`;\n } else {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_SIGNUP_AUTHORIZE_FN(\n sso,\n )}`;\n }\n signupSSORequest({\n params: { redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n }\n }\n }\n }, [\n sso,\n signinSSORequest,\n ssoType,\n signupSSORequest,\n search,\n isFromMSTeams,\n msTeamsOAuthStart,\n authInModal,\n ]);\n\n return {\n models: {\n ssoAuthorizeURI,\n isLoading:\n signupRequestLoading || signinRequestLoading || isConnectingSSO,\n },\n operations: {\n msTeamsOAuthStart,\n },\n };\n};\n\nexport default useFetchSSOConfig;\n","import { useMemo } from 'react';\nimport get from 'lodash/get';\nimport { useSelector } from 'react-redux';\n\nimport useRequest from '../../hooks/useRequest/useRequest';\nimport { GET_PREFERRED_SSO } from '../../constants/endpoints';\n\nconst preferredSSOSelector = (state: any) =>\n get(state, ['API', GET_PREFERRED_SSO, 'response', 'data', 'sso'], null);\n\nconst useIntegrationLayer = () => {\n const { fireRequest } = useRequest(GET_PREFERRED_SSO);\n const preferredSSO = useSelector(preferredSSOSelector);\n const actions = useMemo(() => {\n return {\n fireGetPreferredSSORequest: fireRequest,\n };\n }, [fireRequest]);\n const data = useMemo(() => {\n return {\n preferredSSO,\n };\n }, [preferredSSO]);\n return {\n actions,\n data,\n };\n};\n\nexport default useIntegrationLayer;\n","import { useEffect, useMemo } from 'react';\nimport * as microsoftTeams from '@microsoft/teams-js';\n\nimport useIntegrationLayer from './useInteractionLayer';\nimport { isSourceMSTeams } from '../../Utils/msteams';\n\nconst usePreferredSSO = () => {\n const { actions, data } = useIntegrationLayer();\n const isFromMSTeams = isSourceMSTeams();\n useEffect(() => {\n if (isFromMSTeams) {\n microsoftTeams.initialize();\n\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n microsoftTeams.getContext((context: microsoftTeams.Context) => {\n if (context.loginHint) {\n actions.fireGetPreferredSSORequest({\n params: { email: context.loginHint },\n });\n }\n });\n }\n }, [actions, isFromMSTeams]);\n\n const models = useMemo(() => {\n let { preferredSSO } = data;\n if (preferredSSO) {\n preferredSSO = preferredSSO.toLowerCase();\n }\n return {\n preferredSSO,\n };\n }, [data]);\n\n return {\n models,\n };\n};\n\nexport default usePreferredSSO;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { parse } from 'qs';\n\nimport ButtonSSO, { LoginType } from '../../atomic/atoms/ButtonSSO';\nimport useFetchSSOConfig from './useFetchSSOConfig/useFetchSSOConfig';\nimport {\n SSOOptions,\n SSOContent,\n SSOTypes,\n} from '../../Utils/data/ssoManager/common';\nimport { SSOComponentProps } from './interfaces';\nimport RoutesList from '../../aV2/routes/routesList';\nimport usePreferredSSO from '../../controllers/MSTeams/usePreferredSSO';\nimport { isSourceMSTeams } from '../../Utils/msteams';\nimport GSuiteSSOController, {\n GOOGLE_SSO_FLOW,\n GSuiteSSOChildrenProps,\n} from '../../controllers/GSuiteSSOController';\nimport {\n getSSOErrorData,\n SSOErrorCodes,\n} from '../../Utils/data/ssoManager/error';\nimport InfoAlert from '../../atomic/molecules/InfoAlert';\nimport ThemeV2 from '../../componentsV2/theme';\nimport Button from '../../atomic/atoms/Button';\nimport { signInWithText } from '../../languages/en/signIn';\n\nconst useStyles = makeStyles({\n errorInfoAlert: {\n margin: '16px 0',\n },\n buttons: {\n display: 'flex',\n flexDirection: 'row',\n alignContent: 'center',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n width: 'calc(100% + 16px)',\n margin: '12px -12px -8px -12px',\n },\n buttonWrapper: {\n padding: '8px',\n flexGrow: 0,\n maxWidth: '50%',\n flexBasis: '50%',\n '@media(max-width:640px)': {\n maxWidth: '100%',\n flexBasis: '100%',\n },\n },\n buttonWrapperFull: {\n padding: '8px',\n flexGrow: 0,\n maxWidth: '100%',\n flexBasis: '100%',\n '@media(max-width:640px)': {\n maxWidth: '100%',\n flexBasis: '100%',\n },\n },\n buttonRoot: {\n width: '100%',\n },\n});\n\nconst SSOComponent = ({\n onSSOClick,\n ssoType,\n showPreferred,\n showAsPrimary,\n}: SSOComponentProps) => {\n const { push } = useHistory();\n const { search } = useLocation();\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const [errorMessage, setErrorMessage] = useState('');\n const { models: slackModels, operations: slackOperations } =\n useFetchSSOConfig(SSOOptions.SLACK, ssoType, false);\n const { models: officeModels, operations: officeOperations } =\n useFetchSSOConfig(SSOOptions.OFFICE365, ssoType, false);\n const { models: adpModels, operations: adpOperations } = useFetchSSOConfig(\n SSOOptions.ADP,\n ssoType,\n false,\n );\n const { models } = usePreferredSSO();\n const isFromMSTeams = isSourceMSTeams();\n const classes = useStyles();\n\n useEffect(() => {\n // Handling Sign in error flow for ADP, since we are using same URL\n // for both Sign In and IM for ADP. During Sign In flow, the user will\n // not be in session, so it will be redirected to /signin route.\n // We capture error and sso from query param to handle error.\n if (parsedParams.error && parsedParams.sso) {\n push(\n `/${RoutesList.SSO_ERRORS_FN(\n parsedParams.sso,\n ssoType,\n parsedParams.error,\n )}`,\n );\n }\n }, [parsedParams.error, parsedParams.sso, push, ssoType]);\n\n const redirectToURL = useCallback((authorizeUri: string) => {\n window.location.href = authorizeUri;\n }, []);\n\n const handleSlackClick = useCallback(() => {\n onSSOClick(SSOContent[SSOOptions.SLACK].displayName);\n if (isFromMSTeams) {\n slackOperations.msTeamsOAuthStart();\n } else {\n redirectToURL(slackModels.ssoAuthorizeURI);\n }\n }, [\n onSSOClick,\n isFromMSTeams,\n slackOperations,\n redirectToURL,\n slackModels.ssoAuthorizeURI,\n ]);\n\n const handleOfficeClick = useCallback(() => {\n onSSOClick(SSOContent[SSOOptions.OFFICE365].displayName);\n if (isFromMSTeams) {\n officeOperations.msTeamsOAuthStart();\n } else {\n redirectToURL(officeModels.ssoAuthorizeURI);\n }\n }, [\n isFromMSTeams,\n officeModels.ssoAuthorizeURI,\n officeOperations,\n onSSOClick,\n redirectToURL,\n ]);\n\n const verifyGoogleSSOCode = useCallback(\n (code) => {\n const basePath =\n ssoType === SSOTypes.SIGN_IN\n ? RoutesList.SSO_SIGNIN_AUTHORIZE_FN(SSOOptions.GOOGLE)\n : RoutesList.SSO_SIGNUP_AUTHORIZE_FN(SSOOptions.GOOGLE);\n push(`/${basePath}?code=${code}`);\n },\n [push, ssoType],\n );\n\n const handleGoogleSSOError = useCallback(\n (error) => {\n const { error: errorCode } = error;\n if (errorCode === SSOErrorCodes.COOKIES_NOT_ALLOWED) {\n const message = getSSOErrorData(errorCode, ssoType, SSOOptions.GOOGLE);\n setErrorMessage(message.bodyText);\n } else {\n push(\n `/${RoutesList.SSO_ERRORS_FN(SSOOptions.GOOGLE, ssoType, errorCode)}`,\n );\n }\n },\n [push, ssoType],\n );\n const loginType =\n ssoType === SSOTypes.SIGN_IN ? LoginType.SignIn : LoginType.SignUp;\n\n const handleADPClick = useCallback(() => {\n if (loginType === LoginType.SignUp) {\n window.location.href = 'https://apps.adp.com/apps/316525';\n } else {\n onSSOClick(SSOContent[SSOOptions.ADP].displayName);\n if (isFromMSTeams) {\n adpOperations.msTeamsOAuthStart();\n } else {\n redirectToURL(adpModels.ssoAuthorizeURI);\n }\n }\n }, [\n adpModels.ssoAuthorizeURI,\n adpOperations,\n isFromMSTeams,\n onSSOClick,\n redirectToURL,\n loginType,\n ]);\n\n const gSuiteSSOFlow =\n ssoType === SSOTypes.SIGN_UP\n ? GOOGLE_SSO_FLOW.SIGN_UP\n : GOOGLE_SSO_FLOW.SIGN_IN;\n\n const SlackButton = useMemo(() => {\n if (showPreferred === SSOOptions.SLACK) {\n return (\n \n {signInWithText.SLACK}\n \n );\n }\n return (\n \n );\n }, [\n classes.buttonRoot,\n handleSlackClick,\n loginType,\n showPreferred,\n showAsPrimary,\n slackModels.isLoading,\n ]);\n\n const OfficeButton = useMemo(() => {\n if (showPreferred === SSOOptions.OFFICE365) {\n return (\n \n {signInWithText.OFFICE365}\n \n );\n }\n return (\n \n );\n }, [\n classes.buttonRoot,\n handleOfficeClick,\n loginType,\n officeModels.isLoading,\n showPreferred,\n showAsPrimary,\n ]);\n\n const ADPButton = useMemo(() => {\n if (showPreferred === SSOOptions.ADP) {\n return (\n \n {signInWithText.ADP}\n \n );\n }\n return (\n \n );\n }, [\n adpModels.isLoading,\n classes.buttonRoot,\n handleADPClick,\n loginType,\n showPreferred,\n showAsPrimary,\n ]);\n\n const LifionButton = useMemo(() => {\n return (\n \n );\n }, [onSSOClick]);\n\n const GSuiteButton = useMemo(() => {\n return (\n \n {({ signIn, loaded, initError }: GSuiteSSOChildrenProps) => {\n const handleClick = () => {\n if (loaded) {\n if (initError) {\n const errorCode = initError as SSOErrorCodes;\n const message = getSSOErrorData(\n errorCode,\n ssoType,\n SSOOptions.GOOGLE,\n );\n setErrorMessage(message.bodyText);\n } else {\n signIn();\n }\n }\n };\n if (showPreferred === SSOOptions.GOOGLE) {\n return (\n \n {signInWithText.GOOGLE}\n \n );\n }\n return (\n \n );\n }}\n \n );\n }, [\n classes.buttonRoot,\n gSuiteSSOFlow,\n handleGoogleSSOError,\n loginType,\n ssoType,\n verifyGoogleSSOCode,\n showPreferred,\n showAsPrimary,\n ]);\n\n const doNotShowErrorMessage = useCallback(() => {\n setErrorMessage('');\n }, []);\n\n const infoAlertDismissible = useMemo(\n () => ({\n closeIconColor: ThemeV2.palette.dustRed6,\n onCloseClick: doNotShowErrorMessage,\n onCloseKeyPress: doNotShowErrorMessage,\n }),\n [doNotShowErrorMessage],\n );\n\n const showSingleSignInButton = isFromMSTeams || showPreferred;\n\n if (showSingleSignInButton) {\n const preferredSSO = models.preferredSSO || showPreferred;\n switch (preferredSSO) {\n case SSOOptions.SLACK:\n return
{SlackButton}
;\n case SSOOptions.OFFICE365:\n return
{OfficeButton}
;\n case SSOOptions.ADP:\n return
{ADPButton}
;\n case SSOOptions.GOOGLE:\n return
{GSuiteButton}
;\n case SSOOptions.LIFION:\n return
{LifionButton}
;\n default:\n return
{OfficeButton}
;\n }\n }\n\n return (\n
\n {errorMessage !== '' && (\n \n )}\n
\n
{SlackButton}
\n
{OfficeButton}
\n
{ADPButton}
\n
{GSuiteButton}
\n
\n
\n );\n};\n\nexport default SSOComponent;\n","import styled from 'styled-components';\n\nimport Heading from '../../atoms/Heading';\nimport IconInfo from '../../molecules/IconInfo';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const StyledIconInfo = styled(IconInfo)`\n margin: 8px 0 20px;\n`;\n\nexport const StyledWrapper = styled.div<{ isExpandOnFocusEnabled: boolean }>`\n width: 100%;\n background: ${ThemeV2.palette.gray1};\n ${({ isExpandOnFocusEnabled }) =>\n !isExpandOnFocusEnabled &&\n `\n padding: 24px;\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n border-radius: 2px;\n `}\n`;\n\nexport const StyledHeading = styled(Heading)`\n text-align: center;\n margin: 0 auto 24px;\n`;\n\nexport const StyledNewPasswordTextFieldWrapper = styled.div`\n margin-bottom: 16px;\n`;\n\nexport const StyledReEnterPasswordTextFieldWrapper = styled.div`\n margin: 24px 0;\n`;\n","import React, { useState } from 'react';\n\nimport {\n StyledIconInfo,\n StyledWrapper,\n StyledHeading,\n StyledNewPasswordTextFieldWrapper,\n StyledReEnterPasswordTextFieldWrapper,\n} from './styles';\n\nimport FormikField from '../../molecules/FormikField';\nimport Button from '../../atoms/Button';\nimport Body from '../../atoms/Body';\nimport NewTextfield from '../../molecules/NewTextfield';\nimport {\n ERROR,\n CREATE_YOUR_PASSWORD,\n CREATE_YOUR_PASSWORD_AND_SIGN_IN,\n CONFIRM_YOUR_PASSWORD,\n} from '../../../languages/en/signIn';\n\nimport { CreateYourPasswordProps } from './interface';\n\nconst CreateYourPassword = (props: CreateYourPasswordProps) => {\n const {\n formik,\n showError = false,\n validationTexts,\n strength,\n isExpandOnFocusEnabled = false,\n isLoading = false,\n } = props;\n const [isFocused, setIsFocused] = useState(!isExpandOnFocusEnabled);\n const onFocusHandler = () => {\n setIsFocused(true);\n };\n const { dirty, isValid, handleSubmit } = formik;\n\n return (\n
\n \n {!isExpandOnFocusEnabled && (\n {CREATE_YOUR_PASSWORD}\n )}\n {showError && (\n \n \n {ERROR}\n \n \n )}\n {!isFocused && (\n {}}\n name=\"dummyTextField\"\n label={CREATE_YOUR_PASSWORD}\n onInputFocus={onFocusHandler}\n />\n )}\n {isFocused && (\n <>\n \n \n \n \n \n \n \n {CREATE_YOUR_PASSWORD_AND_SIGN_IN}\n \n \n )}\n \n
\n );\n};\n\nexport default CreateYourPassword;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { string } from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Divider from '../../atoms/Divider';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { OR } from '../../../languages/en/singleWords';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n textBox: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '20px',\n width: '29px',\n textAlign: 'center',\n },\n orText: ({ color }) => ({\n color,\n }),\n});\n\nconst OrDivider = ({ color, className: parentClassName }) => {\n const { textBox, orText, root } = useStyles({ color });\n const className = `${root} ${parentClassName}`;\n return (\n
\n \n
\n \n {OR}\n \n
\n \n
\n );\n};\n\nOrDivider.propTypes = {\n color: string,\n className: string,\n};\n\nOrDivider.defaultProps = {\n color: ThemeV2.palette.gray6,\n className: '',\n};\n\nexport default OrDivider;\n","import { SSOComponentProps } from '../../../pages/signin/interfaces';\nimport { SigninSubTextProps } from '../../molecules/SigninSubText';\n\nimport { CreateYourPasswordProps } from '../CreateYourPassword/interface';\n\nexport enum SigninOptionsType {\n SAML_ONLY = 'SAML_ONLY',\n SAML_WITH_SSO = 'SAML_WITH_SSO',\n SAML_WITH_PASSWORD = 'SAML_WITH_PASSWORD',\n NO_PREFERRED_SSO = 'NO_PREFERRED_SSO',\n SAML_WITH_NO_PREFERRED_SSO = 'SAML_WITH_NO_PREFERRED_SSO',\n SSO_ENFORCED = 'SSO_ENFORCED',\n CREATE_PASSWORD = 'CREATE_PASSWORD',\n CREATE_PASSWORD_WITH_NO_PREFERRED_SSO = 'CREATE_PASSWORD_WITH_NO_PREFERRED_SSO',\n SAML_WITH_CREATE_PASSWORD = 'SAML_WITH_CREATE_PASSWORD',\n}\n\nexport interface HeaderProps {\n headingText: string;\n bodyText?: string;\n}\n\nexport interface SAMLProps extends HeaderProps {\n samlButtonText: string;\n samlIcon: string;\n samlURL: string;\n}\n\nexport interface PasswordInitialValue {\n password: string;\n}\n\nexport interface PasswordProps {\n initialValues: PasswordInitialValue;\n onSubmit: (values: PasswordInitialValue) => void;\n loading?: boolean;\n errors?: string;\n}\n\nexport interface CreatePasswordProps {\n onClick: () => void;\n isLoading?: boolean;\n}\n\ninterface SAMLOnly {\n signinOptionsType: SigninOptionsType.SAML_ONLY;\n samlProps: SAMLProps;\n subTextProps: SigninSubTextProps;\n className?: string;\n}\n\ninterface SAMLWithSSO {\n signinOptionsType: SigninOptionsType.SAML_WITH_SSO;\n samlProps: SAMLProps;\n ssoComponentProps: SSOComponentProps;\n subTextProps: SigninSubTextProps;\n className?: string;\n}\n\ninterface SAMLWithPassword {\n signinOptionsType: SigninOptionsType.SAML_WITH_PASSWORD;\n samlProps: SAMLProps;\n passwordProps: PasswordProps;\n subTextProps: SigninSubTextProps;\n className?: string;\n}\n\ninterface NoPreferredSSO extends HeaderProps {\n signinOptionsType: SigninOptionsType.NO_PREFERRED_SSO;\n passwordProps: PasswordProps;\n subTextProps: SigninSubTextProps;\n ssoComponentProps: SSOComponentProps;\n className?: string;\n}\ninterface SAMLWithNoPreferredSSO {\n signinOptionsType: SigninOptionsType.SAML_WITH_NO_PREFERRED_SSO;\n ssoComponentProps: SSOComponentProps;\n samlProps: SAMLProps;\n subTextProps: SigninSubTextProps;\n className?: string;\n}\n\ninterface CreatePassword extends HeaderProps {\n signinOptionsType: SigninOptionsType.CREATE_PASSWORD;\n createPasswordProps: CreatePasswordProps;\n subTextProps: SigninSubTextProps;\n ssoComponentProps: SSOComponentProps;\n className?: string;\n}\n\ninterface SSOEnforced extends HeaderProps {\n signinOptionsType: SigninOptionsType.SSO_ENFORCED;\n subTextProps: SigninSubTextProps;\n ssoComponentProps: SSOComponentProps;\n className?: string;\n}\n\ninterface CreatePasswordWithNoPreferredSSO extends HeaderProps {\n signinOptionsType: SigninOptionsType.CREATE_PASSWORD_WITH_NO_PREFERRED_SSO;\n ssoComponentProps: SSOComponentProps;\n createPasswordProps: CreateYourPasswordProps;\n subTextProps: SigninSubTextProps;\n className?: string;\n}\n\ninterface SAMLWithCreatePassword {\n signinOptionsType: SigninOptionsType.SAML_WITH_CREATE_PASSWORD;\n samlProps: SAMLProps;\n createPasswordProps: CreateYourPasswordProps;\n subTextProps: SigninSubTextProps;\n className?: string;\n}\n\n/* Interface required for SigninOptions */\nexport type SigninOptionsProps =\n | SAMLOnly\n | SAMLWithSSO\n | SAMLWithPassword\n | NoPreferredSSO\n | SAMLWithNoPreferredSSO\n | CreatePassword\n | SSOEnforced\n | CreatePasswordWithNoPreferredSSO\n | SAMLWithCreatePassword;\n\n/* Interface required for SigninOptionsLayout starts here */\nexport enum SigninOptionsLayoutType {\n SAML = 'SAML',\n NO_PREFERRED_SSO = 'NO_PREFERRED_SSO',\n SAML_WITH_NO_PREFERRED_SSO = 'SAML_WITH_NO_PREFERRED_SSO',\n SSO_ENFORCED = 'SSO_ENFORCED',\n}\ninterface SigninOptionsLayoutSAMLProps {\n templateType: SigninOptionsLayoutType.SAML;\n samlProps: SAMLProps;\n subTextProps: SigninSubTextProps;\n children?: React.ReactNode;\n className?: string;\n}\n\ninterface SigninOptionsLayoutTypeNoPreferredSSOProps {\n templateType: SigninOptionsLayoutType.NO_PREFERRED_SSO;\n headingText: string;\n bodyText?: string;\n children: React.ReactNode;\n subTextProps: SigninSubTextProps;\n ssoComponentProps: SSOComponentProps;\n className?: string;\n}\ninterface SigninOptionsLayoutTypeSAMLWithNoPreferredSSOProps {\n templateType: SigninOptionsLayoutType.SAML_WITH_NO_PREFERRED_SSO;\n samlProps: SAMLProps;\n subTextProps: SigninSubTextProps;\n ssoComponentProps: SSOComponentProps;\n className?: string;\n}\n\ninterface SigninOptionsLayoutTypeSSOEnforcedProps {\n templateType: SigninOptionsLayoutType.SSO_ENFORCED;\n headingText: string;\n bodyText?: string;\n subTextProps: SigninSubTextProps;\n ssoComponentProps: SSOComponentProps;\n className?: string;\n}\n\nexport type SigninOptionsLayoutProps =\n | SigninOptionsLayoutSAMLProps\n | SigninOptionsLayoutTypeNoPreferredSSOProps\n | SigninOptionsLayoutTypeSAMLWithNoPreferredSSOProps\n | SigninOptionsLayoutTypeSSOEnforcedProps;\n/* Interface required for SigninOptionsLayout ends here */\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Body from '../../atoms/Body';\nimport LinkV2 from '../../atoms/Link_V2';\nimport { Flex } from '../../../Utils/styles/display';\n\nconst StyledLink = styled(LinkV2)`\n text-decoration: none;\n margin: 0 2px;\n`;\n\nexport interface SigninSubTextProps {\n text: string;\n linkOneText: string;\n linkOnePath: string;\n linkTwoText?: string;\n linkTwoPath?: string;\n className?: string;\n}\n\nconst SigninSubText = (props: SigninSubTextProps) => {\n const {\n text,\n linkOneText,\n linkOnePath,\n linkTwoText,\n linkTwoPath,\n className,\n } = props;\n return (\n \n \n {text}\n \n {linkOneText}\n {linkTwoText && linkTwoPath && (\n <>\n \n or\n \n {linkTwoText}\n \n )}\n \n );\n};\n\nexport default SigninSubText;\n","import styled from 'styled-components';\n\nimport OrDivider from '../../molecules/OrDivider';\nimport SigninSubText from '../../molecules/SigninSubText';\nimport Button from '../../atoms/Button';\n\nexport const StyledDivider = styled(OrDivider)`\n width: 100%;\n margin: 24px 0;\n > div:nth-child(odd) {\n width: unset;\n flex: 1;\n }\n`;\n\nexport const StyledSigninSubText = styled(SigninSubText)`\n margin-top: 24px;\n justify-content: center;\n`;\n\nexport const StyledSubmitButton = styled(Button)`\n margin-top: 12px;\n`;\n","import React, { useCallback, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Formik } from 'formik';\nimport * as microsoftTeams from '@microsoft/teams-js';\n\nimport RoutesList from '../../../aV2/routes/routesList';\nimport Button from '../../atoms/Button';\nimport { StyledRoot, StyledHeading, StyledBody } from '../../pages/SSOInfoCard';\nimport SSOComponent from '../../../pages/signin/SSOComponent';\nimport Field from '../../molecules/Field';\nimport CreateYourPassword from '../CreateYourPassword';\n\nimport {\n StyledDivider,\n StyledSigninSubText,\n StyledSubmitButton,\n} from './styles';\nimport {\n SigninOptionsProps,\n SigninOptionsType,\n SigninOptionsLayoutType,\n PasswordProps,\n HeaderProps,\n SigninOptionsLayoutProps,\n} from './interface';\nimport { AUTH_SAML } from '../../../constants/routes';\nimport {\n SIGN_IN_BUTTON_TEXT,\n CREATE_PASSWORD,\n} from '../../../languages/en/signIn';\nimport { SSOTypes } from '../../../Utils/data/ssoManager/common';\nimport { isSourceMSTeams, MS_TEAMS } from '../../../Utils/msteams';\n\nconst PasswordComponent = (props: PasswordProps) => {\n const { initialValues, onSubmit, loading } = props;\n return (\n \n {({ dirty, isValid, handleSubmit }) => (\n
\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n \n {SIGN_IN_BUTTON_TEXT}\n \n \n )}\n
\n );\n};\n\nconst SigninOptionsLayoutHeader = (props: HeaderProps) => {\n const { headingText, bodyText } = props;\n return (\n <>\n {headingText}\n {bodyText && (\n \n {bodyText}\n \n )}\n \n );\n};\n\nconst SigninOptionsLayout = (props: SigninOptionsLayoutProps) => {\n const [samlButtonLoading, setSAMLButtonLoading] = useState(false);\n let samlURL = '';\n if (\n props.templateType === SigninOptionsLayoutType.SAML ||\n props.templateType === SigninOptionsLayoutType.SAML_WITH_NO_PREFERRED_SSO\n ) {\n samlURL = props.samlProps.samlURL;\n }\n const isFromMSTeams = isSourceMSTeams();\n const { push } = useHistory();\n const onSAMLClick = useCallback(() => {\n if (samlURL) {\n setSAMLButtonLoading(true);\n\n if (isFromMSTeams) {\n const encodedSAMLUrl = encodeURIComponent(samlURL);\n const modalURL = `${RoutesList.SAML_AUTHORIZE_MODAL}?source=${MS_TEAMS}&samlURL=${encodedSAMLUrl}`;\n\n microsoftTeams.initialize();\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n\n microsoftTeams.authentication.authenticate({\n url: modalURL,\n width: 600,\n height: 535,\n successCallback(result) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { code } = result;\n push(`${AUTH_SAML}?token=${code}&from=tab`);\n },\n failureCallback(reason) {\n push(`${AUTH_SAML}/error=${reason}`);\n },\n });\n } else {\n window.location.href = samlURL;\n }\n }\n }, [isFromMSTeams, push, samlURL]);\n switch (props.templateType) {\n case SigninOptionsLayoutType.SAML: {\n const { samlProps, children, subTextProps, className } = props;\n const { headingText, bodyText } = samlProps;\n const headerProps = { headingText, bodyText };\n return (\n \n \n \n {samlProps.samlButtonText}\n \n {children && }\n {children && children}\n \n \n );\n }\n case SigninOptionsLayoutType.NO_PREFERRED_SSO: {\n const {\n headingText,\n bodyText,\n subTextProps,\n ssoComponentProps,\n children,\n className,\n } = props;\n const headerProps = { headingText, bodyText };\n return (\n \n \n \n \n {children}\n \n \n );\n }\n case SigninOptionsLayoutType.SAML_WITH_NO_PREFERRED_SSO: {\n const { samlProps, subTextProps, ssoComponentProps, className } = props;\n const { headingText, bodyText } = samlProps;\n const headerProps = { headingText, bodyText };\n return (\n \n \n \n {samlProps.samlButtonText}\n \n \n \n \n \n );\n }\n default: {\n const {\n headingText,\n bodyText,\n subTextProps,\n ssoComponentProps,\n className,\n } = props;\n const headerProps = { headingText, bodyText };\n return (\n \n \n \n \n \n );\n }\n }\n};\n\nconst SigninOptions = (props: SigninOptionsProps) => {\n switch (props.signinOptionsType) {\n case SigninOptionsType.SAML_ONLY: {\n return (\n \n );\n }\n case SigninOptionsType.SAML_WITH_SSO: {\n const { ssoComponentProps, ...rest } = props;\n return (\n \n \n \n );\n }\n case SigninOptionsType.SAML_WITH_PASSWORD: {\n const { passwordProps, ...rest } = props;\n return (\n \n \n \n );\n }\n case SigninOptionsType.NO_PREFERRED_SSO: {\n const { passwordProps, ...rest } = props;\n return (\n \n \n \n );\n }\n case SigninOptionsType.CREATE_PASSWORD: {\n const { createPasswordProps, ...rest } = props;\n return (\n \n \n {CREATE_PASSWORD}\n \n \n );\n }\n case SigninOptionsType.SAML_WITH_NO_PREFERRED_SSO: {\n return (\n \n );\n }\n case SigninOptionsType.CREATE_PASSWORD_WITH_NO_PREFERRED_SSO: {\n const { createPasswordProps, ...rest } = props;\n return (\n \n \n \n );\n }\n case SigninOptionsType.SAML_WITH_CREATE_PASSWORD: {\n const { createPasswordProps, ...rest } = props;\n return (\n \n \n \n );\n }\n default: {\n return (\n \n );\n }\n }\n};\n\nexport default SigninOptions;\n","export default __webpack_public_path__ + \"static/media/email-verification.c9631355.svg\";","import React from 'react';\nimport styled from 'styled-components';\n\nimport Body from '../../atoms/Body';\nimport Heading from '../../atoms/Heading';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nimport PlaceHolderImage from '../../../img/email-verification.svg';\nimport {\n IS_THIS_CORRECT_TEXT,\n RETURN_TO_SIGN_IN_TEXT,\n VALIDATE_YOUR_EMAIL,\n} from '../../../languages/en/signIn';\nimport SigninSubText from '../../molecules/SigninSubText';\nimport { DEFAULT_PATH } from '../../../constants/routes';\n\nconst StyledWrapper = styled.div`\n width: 100%;\n padding: 24px;\n background: ${ThemeV2.palette.gray1};\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n border-radius: 2px;\n`;\n\nconst StyledHeading = styled(Heading)`\n text-align: center;\n margin: 0 auto 4px;\n`;\n\nconst StyledBody = styled(Body)`\n text-align: center;\n margin-bottom: 24px;\n`;\n\nconst StyledImage = styled.img`\n display: block;\n margin: 0 auto;\n`;\n\nexport const StyledSigninSubText = styled(SigninSubText)`\n margin-top: 24px;\n justify-content: center;\n`;\n\nconst ValidateYourEmail = () => {\n const subTextProps = {\n text: IS_THIS_CORRECT_TEXT,\n linkOneText: RETURN_TO_SIGN_IN_TEXT,\n linkOnePath: DEFAULT_PATH,\n };\n return (\n \n {VALIDATE_YOUR_EMAIL.HEADING}\n \n {VALIDATE_YOUR_EMAIL.BODY}\n \n \n \n \n );\n};\n\nexport default ValidateYourEmail;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport _ from 'lodash';\nimport { HeadersWithoutAuthV2 } from '../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2, API_URL_WITH_V3 } from '../../../config';\n\nconst apiEndpoints = {\n LOGIN_USER: `${API_URL_WITH_V2}/auth/session/login`,\n USERS: `${API_URL_WITH_V3}/users/`,\n LOGIN_OPTIONS: `${API_URL_WITH_V3}/users/signInOptions`,\n FORGOT_PASSWORD: `${API_URL_WITH_V2}/auth/session/forgotPassword`,\n VERIFY_FORGOT_PASSWORD: `${API_URL_WITH_V2}/auth/session/forgotPassword/verify/`,\n RESET_PASSWORD: `${API_URL_WITH_V2}/auth/session/resetPassword`,\n};\n\nconst LOGIN_USER = '@sessions/V2/LOGIN_USER';\nexport const LOGIN_OPTIONS = '@sessions/V2/LOGIN_OPTIONS';\nexport const LOGIN_WITH_PASSWORD = '@sessions/V2/LOGIN_WITH_PASSWORD';\nexport const FORGOT_PASSWORD = '@sessions/V2/FORGOT_PASSWORD';\nexport const TRIGGER_SET_PASSWORD = '@sessions/V2/TRIGGER_SET_PASSWORD';\nexport const FORGOT_PASSWORD_VERIFY_TOKEN =\n '@sessions/V2/FORGOT_PASSWORD_VERIFY_TOKEN';\nexport const RESET_PASSWORD = '@sessions/V2/RESET_PASSWORD';\n\nexport const loginUser = ({ email, password, rememberMe = true }) => ({\n type: LOGIN_USER,\n request: {\n url: apiEndpoints.LOGIN_USER,\n data: {\n email,\n password,\n rememberMe,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const loginOptions = ({ email }) => ({\n type: LOGIN_OPTIONS,\n request: {\n url: `${apiEndpoints.LOGIN_OPTIONS}?email=${email}`,\n method: 'get',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const loginWithPassword = ({ password, email }) => ({\n type: LOGIN_WITH_PASSWORD,\n request: {\n url: `${apiEndpoints.USERS}passwordSignin`,\n data: {\n password,\n userEmail: email,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const forgotPassword = ({ email }) => ({\n type: FORGOT_PASSWORD,\n request: {\n url: apiEndpoints.FORGOT_PASSWORD,\n data: {\n email,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const triggerSetPassword = ({ email }) => ({\n type: TRIGGER_SET_PASSWORD,\n request: {\n url: `${apiEndpoints.USERS}sendEmailToSetPassword`,\n data: {\n userEmail: email,\n },\n method: 'put',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const forgotPasswordVerifyToken = ({ token }) => ({\n type: FORGOT_PASSWORD_VERIFY_TOKEN,\n request: {\n url: `${apiEndpoints.VERIFY_FORGOT_PASSWORD}${token}`,\n method: 'get',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const resetPassword = ({ userId, password }) => ({\n type: RESET_PASSWORD,\n request: {\n url: `${apiEndpoints.RESET_PASSWORD}`,\n data: {\n userId,\n password,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport default requestsReducer({\n actionType: LOGIN_USER,\n mutations: {\n [FORGOT_PASSWORD_VERIFY_TOKEN]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(FORGOT_PASSWORD_VERIFY_TOKEN): {\n const data = _.get(action, ['data', 'data'], null);\n return { ...state.data, data };\n }\n default:\n return { ...state.data };\n }\n },\n },\n [LOGIN_OPTIONS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(LOGIN_OPTIONS): {\n const data = _.get(action, ['data'], null);\n return { ...state.data, data };\n }\n default:\n return { ...state.data };\n }\n },\n },\n [FORGOT_PASSWORD]: { updateData: false },\n [TRIGGER_SET_PASSWORD]: { updateData: false },\n [LOGIN_WITH_PASSWORD]: { updateData: false },\n [RESET_PASSWORD]: { updateData: false },\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport {\n FORGOT_PASSWORD,\n FORGOT_PASSWORD_VERIFY_TOKEN,\n RESET_PASSWORD,\n LOGIN_OPTIONS,\n LOGIN_WITH_PASSWORD,\n TRIGGER_SET_PASSWORD,\n} from './index';\n\nexport const getRequestLoadingStatus = (state) => state.v2Session.pending > 0;\n\nexport const getForgotPasswordRequestLoadingStatus = (state) =>\n _.get(state, ['v2Session', 'mutations', FORGOT_PASSWORD, 'pending'], 0) > 0;\n\nexport const getTriggerResetPasswordRequestLoadingStatus = (state) =>\n _.get(state, ['v2Session', 'mutations', TRIGGER_SET_PASSWORD, 'pending'], 0) >\n 0;\n\nexport const getVerfiyTokenRequestLoadingStatus = (state) =>\n state.v2Session.mutations[FORGOT_PASSWORD_VERIFY_TOKEN].pending > 0;\n\nexport const getResetPasswordRequestLoadingStatus = (state) =>\n state.v2Session.mutations[RESET_PASSWORD].pending > 0;\n\nexport const getEmailIdForResetPassword = (state) =>\n _.get(state, ['v2Session', 'data', 'data', 'email'], null);\n\nexport const getSigninOptionsRequestLoadingStatus = (state) =>\n _.get(state, ['v2Session', 'mutations', LOGIN_OPTIONS, 'pending'], 0) > 0;\n\nexport const getSigninWithPasswordRequestLoadingStatus = (state) =>\n _.get(state, ['v2Session', 'mutations', LOGIN_WITH_PASSWORD, 'pending'], 0) >\n 0;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport qs from 'qs';\nimport RoutesList from '../routes/routesList';\n\nexport const parseURL = (search) => {\n const parsed = qs.parse(search, { ignoreQueryPrefix: true });\n return { code: parsed.code, state: parsed.state };\n};\n\nexport const errorCodes = {\n NO_SLACK_TEAM_IN_ASSEMBLY: 'NO_SLACK_TEAM_IN_ASSEMBLY',\n SLACK_SIGN_IN_DISABLED: 'SLACK_SIGN_IN_DISABLED',\n SLACK_TEAM_MISMATCH: 'SLACK_TEAM_MISMATCH',\n ONLY_ADMIN_OWNER_ALLOWED_TO_ADD_TO_SLACK:\n 'ONLY_ADMIN_OWNER_ALLOWED_TO_ADD_TO_SLACK',\n SLACK_ONBOARDING_INCOMPLETE: 'SLACK_ONBOARDING_INCOMPLETE',\n NON_WORK_EMAIL_NOT_ALLOWED: 'NON_WORK_EMAIL_NOT_ALLOWED',\n SLACK_USER_NOT_IN_ASSEMBLY: 'SLACK_USER_NOT_IN_ASSEMBLY',\n ADMIN_APPROVAL_REQUESTED: 'ADMIN_APPROVAL_REQUESTED',\n};\n\nexport const SLACK_ERROR_MESSAGES = {\n ACCESS_DENIED:\n 'Sorry, your Slack permissions prevent you from adding Assembly. Please talk to your Slack workspace admin and try again.',\n};\n\nexport const SLACK_ERROR_TYPES = {\n ACCESS_DENIED: 'access_denied',\n};\n\nexport const ONBOARDING_FLOW = {\n SIGN_IN_WITH_SLACK: 'SIGN_IN_WITH_SLACK',\n ADD_TO_SLACK: 'ADD_TO_SLACK',\n};\n\nexport const MEMBER_GROUPS = {\n ALL: 'all-members',\n FULL: 'only-full-slack',\n SPECIFIC: 'specific-members',\n};\n\nexport const SLACK_ONBOARDING_STEPS = {\n PENDING_INTEGRATION: 'PENDING_INTEGRATION',\n DEFAULT_CHANNEL_SELECTED: 'DEFAULT_CHANNEL_SELECTED',\n MEMBERS_INVITED: 'MEMBERS_INVITED',\n MEMBERS_ONBOARDED: 'MEMBERS_ONBOARDED',\n SET_CUSTOM_CURRENCY: 'SET_CUSTOM_CURRENCY',\n WELCOME_MESSAGE_SENT: 'WELCOME_MESSAGE_SENT',\n};\n\nexport const getPathToSlackComplete = (onboardingStep) => {\n switch (onboardingStep) {\n case SLACK_ONBOARDING_STEPS.PENDING_INTEGRATION:\n return RoutesList.SLACK_SELECT_DEFAULT_CHANNEL;\n case SLACK_ONBOARDING_STEPS.DEFAULT_CHANNEL_SELECTED:\n return RoutesList.SLACK_SPECIFIC_MEMBERS;\n case SLACK_ONBOARDING_STEPS.MEMBERS_INVITED:\n return RoutesList.SLACK_SPECIFIC_MEMBERS;\n case SLACK_ONBOARDING_STEPS.MEMBERS_ONBOARDED:\n return RoutesList.SLACK_SELECT_DEFAULT_CURRENCY;\n case SLACK_ONBOARDING_STEPS.SET_CUSTOM_CURRENCY:\n return RoutesList.SLACK_ASSEMBLY_ANNOUNCEMENT;\n default:\n return RoutesList.SLACK_SIGN_IN;\n }\n};\n\nexport const shoulShowSlackOnboardingAlert = (onboardingStep) => {\n if (\n !onboardingStep ||\n onboardingStep === SLACK_ONBOARDING_STEPS.WELCOME_MESSAGE_SENT\n ) {\n return false;\n }\n return true;\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport _ from 'lodash';\nimport {\n HeadersWithoutAuthV2,\n AuthHeadersV2,\n} from '../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2 } from '../../../config';\nimport { MEMBER_GROUPS } from '../../utils/Slack';\n\nconst apiEndpoints = {\n AUTHORIZE_SIGNIN_WITH_SLACK: `${API_URL_WITH_V2}/integrations/slack/onboard/SignInWithSlack`,\n AUTHORIZE_SIGNIN_WITH_SLACK_V2: `${API_URL_WITH_V2}/integrations/slack/onboard/SignInWithSlackV2`,\n AUTHORIZE_USER_AUTH_SLACK: `${API_URL_WITH_V2}/integrations/slack/onboard/UserAuthSlack`,\n AUTHORIZE_ADD_TO_SLACK: `${API_URL_WITH_V2}/integrations/slack/onboard/AddToSlack`,\n SLACK_APP_INFO: `${API_URL_WITH_V2}/integrations/slack/config/app`,\n SLACK_VERIFY_MESSAGE: `${API_URL_WITH_V2}/integrations/slack/employer/verify/message`,\n SLACK_CHANNELS: `${API_URL_WITH_V2}/integrations/slack/employer/channels`,\n SLACK_ACTIVE_CHANNELS: `${API_URL_WITH_V2}/integrations/slack/employer/channels/active`,\n DEFAULT_SLACK_CHANNEL: `${API_URL_WITH_V2}/integrations/slack/employer/channels/default`,\n SLACK_CUSTOM_EMOJIS: `${API_URL_WITH_V2}/integrations/slack/employer/customEmojis`,\n CREATE_DEFAULT_SLACK_CHANNEL: `${API_URL_WITH_V2}/integrations/slack/employer/channels/default/create`,\n SLACK_MEMBERS: `${API_URL_WITH_V2}/integrations/slack/employer/members/v2`,\n INVITE_SLACK_MEMBERS: `${API_URL_WITH_V2}/integrations/slack/employer/invite/members/v2`,\n ONBOARD_SLACK_MEMBERS: `${API_URL_WITH_V2}/integrations/slack/employer/onboard/members/v2`,\n SLACK_HRIS_SETTINGS: `${API_URL_WITH_V2}/integrations/slack/employer/settings/hris`,\n SLACK_MEMBERS_ALL: `${API_URL_WITH_V2}/integrations/slack/employer/InviteAllSlackMembers`,\n SLACK_MEMBERS_FULL: `${API_URL_WITH_V2}/integrations/slack/employer/InviteFullSlackMembers`,\n SLACK_MEMBERS_SPECIFIC: `${API_URL_WITH_V2}/integrations/slack/employer/InviteSelectedSlackMembers`,\n SLACK_START_MEMBER_ONBOARDING: `${API_URL_WITH_V2}/integrations/slack/employer/StartMembersOnboarding`,\n SLACK_ANNOUNCEMENT: `${API_URL_WITH_V2}/integrations/slack/employer/SendWelcomeMessage`,\n CUSTOM_CURRENCY: `${API_URL_WITH_V2}/employer/employer_info/setCustomCurrency`,\n SKIP_CUSTOM_CURRENCY: `${API_URL_WITH_V2}/employer/employer_info/skipCustomCurrency`,\n SLACK_MEMBER_ONBOARDING_STATUS: `${API_URL_WITH_V2}/integrations/slack/employer/MembersOnboardingStatus`,\n};\n\nconst AUTHORIZE_SIGNIN_WITH_SLACK =\n '@slackOnboard/V2/AUTHORIZE_SIGNIN_WITH_SLACK';\nconst AUTHORIZE_SIGNIN_WITH_SLACK_V2 =\n '@slackOnboard/V2/AUTHORIZE_SIGNIN_WITH_SLACK_V2';\nconst AUTHORIZE_USER_AUTH_SLACK = '@slackOnboard/V2/AUTHORIZE_USER_AUTH_SLACK';\nconst AUTHORIZE_ADD_TO_SLACK = '@slackOnboard/V2/AUTHORIZE_ADD_TO_SLACK';\nconst SLACK_APP_INFO = '@slackOnboard/V2/SLACK_APP_INFO';\nconst SLACK_VERIFY_MESSAGE = '@slackOnboard/V2/SLACK_VERIFY_MESSAGE';\nconst SLACK_CHANNELS = '@slackOnboard/V2/SLACK_CHANNELS';\nconst GET_ACTIVE_SLACK_CHANNELS = '@slackOnboard/V2/GET_ACTIVE_SLACK_CHANNELS';\nconst GET_SLACK_CUSTOM_EMOJIS = '@slackOnboard/V2/GET_SLACK_CUSTOM_EMOJIS';\nexport const UPDATE_ACTIVE_SLACK_CHANNELS =\n '@slackOnboard/V2/UPDATE_ACTIVE_SLACK_CHANNELS';\nconst GET_DEFAULT_SLACK_CHANNEL = '@slackOnboard/V2/GET_DEFAULT_SLACK_CHANNEL';\nexport const UPDATE_DEFAULT_SLACK_CHANNEL =\n '@slackOnboard/V2/UPDATE_DEFAULT_SLACK_CHANNEL';\nexport const CREATE_DEFAULT_SLACK_CHANNEL =\n '@slackOnboard/V2/CREATE_DEFAULT_SLACK_CHANNEL';\nexport const GET_SLACK_MEMBERS = '@slackOnboard/V2/GET_SLACK_MEMBERS';\nexport const INVITE_SLACK_MEMBERS = '@slackOnboard/V2/INVITE_SLACK_MEMBERS';\nexport const UPDATE_SLACK_MEMBERS_IN_STORE =\n '@slackOnboard/V2/UPDATE_SLACK_MEMBERS_IN_STORE';\nexport const ONBOARD_SLACK_MEMBERS = '@slackOnboard/V2/ONBOARD_SLACK_MEMBERS';\nexport const GET_SLACK_HRIS_SETTINGS =\n '@slackOnboard/V2/GET_SLACK_HRIS_SETTINGS';\nexport const UPDATE_SLACK_HRIS_SETTINGS =\n '@slackOnboard/V2/UPDATE_SLACK_HRIS_SETTINGS';\nexport const UPDATE_SLACK_MEMBERS = '@slackOnboard/V2/UPDATE_SLACK_MEMBERS';\nexport const UPDATE_SPECIFIC_SLACK_MEMBERS =\n '@slackOnboard/V2/UPDATE_SPECIFIC_SLACK_MEMBERS';\nexport const SLACK_START_MEMBER_ONBOARDING =\n '@slackOnboard/V2/SLACK_START_MEMBER_ONBOARDING';\nexport const GET_SLACK_MEMBER_ONBOARDING_STATUS =\n '@slackOnboard/V2/GET_SLACK_MEMBER_ONBOARDING_STATUS';\nconst SLACK_ANNOUNCEMENT = '@slackOnboard/V2/SLACK_ANNOUNCEMENT';\nconst SET_COMPANY_CURRENCY_SLACK =\n '@slackOnboard/V2/SET_COMPANY_CURRENCY_SLACK';\nconst SKIP_COMPANY_CURRENCY_SLACK =\n '@slackOnboard/V2/SKIP_COMPANY_CURRENCY_SLACK';\n\nconst baseUrl = window.location.href;\n\nexport const authorizeSignInWithSlack = ({ code }) => ({\n type: AUTHORIZE_SIGNIN_WITH_SLACK,\n request: {\n url: apiEndpoints.AUTHORIZE_SIGNIN_WITH_SLACK,\n data: {\n code,\n baseUrl,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n code,\n },\n});\n\nexport const authorizeSignInWithSlackV2 = ({ code }) => ({\n type: AUTHORIZE_SIGNIN_WITH_SLACK_V2,\n request: {\n url: apiEndpoints.AUTHORIZE_SIGNIN_WITH_SLACK_V2,\n data: {\n code,\n baseUrl,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n code,\n },\n});\n\nexport const authorizeUserAuthSlack = ({ code }) => ({\n type: AUTHORIZE_USER_AUTH_SLACK,\n request: {\n url: apiEndpoints.AUTHORIZE_USER_AUTH_SLACK,\n data: {\n code,\n baseUrl,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n code,\n },\n});\n\nexport const authorizeAddToSlack = ({ code }, userAuthenticated = false) => {\n const headers = userAuthenticated ? AuthHeadersV2() : HeadersWithoutAuthV2();\n return {\n type: AUTHORIZE_ADD_TO_SLACK,\n request: {\n url: apiEndpoints.AUTHORIZE_ADD_TO_SLACK,\n data: {\n code,\n baseUrl,\n },\n method: 'post',\n ...headers,\n },\n meta: {\n code,\n },\n };\n};\n\nexport const slackVerifyMessage = ({ message }) => ({\n type: SLACK_VERIFY_MESSAGE,\n request: {\n url: apiEndpoints.SLACK_VERIFY_MESSAGE,\n data: {\n message,\n baseUrl,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n meta: {\n message,\n },\n});\n\nexport const getSlackAppInfo = () => ({\n type: SLACK_APP_INFO,\n request: {\n url: apiEndpoints.SLACK_APP_INFO,\n method: 'get',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const getSlackChannels = () => ({\n type: SLACK_CHANNELS,\n request: {\n url: apiEndpoints.SLACK_CHANNELS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getSlackActiveChannels = () => ({\n type: GET_ACTIVE_SLACK_CHANNELS,\n request: {\n url: apiEndpoints.SLACK_ACTIVE_CHANNELS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const updateSlackActiveChannels = (channels) => ({\n type: UPDATE_ACTIVE_SLACK_CHANNELS,\n request: {\n url: apiEndpoints.SLACK_ACTIVE_CHANNELS,\n data: {\n channels,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getDefaultSlackChannel = () => ({\n type: GET_DEFAULT_SLACK_CHANNEL,\n request: {\n url: apiEndpoints.DEFAULT_SLACK_CHANNEL,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getSlackCustomEmojis = () => ({\n type: GET_SLACK_CUSTOM_EMOJIS,\n request: {\n url: apiEndpoints.SLACK_CUSTOM_EMOJIS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const setCompanyCurrency = (customCurrency) => ({\n type: SET_COMPANY_CURRENCY_SLACK,\n request: {\n url: apiEndpoints.CUSTOM_CURRENCY,\n data: {\n customCurrency,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const updateDefaultSlackChannel = (channel) => ({\n type: UPDATE_DEFAULT_SLACK_CHANNEL,\n request: {\n url: apiEndpoints.DEFAULT_SLACK_CHANNEL,\n data: {\n channel,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const createDefaultSlackChannel = (channelName) => ({\n type: CREATE_DEFAULT_SLACK_CHANNEL,\n request: {\n url: apiEndpoints.CREATE_DEFAULT_SLACK_CHANNEL,\n data: {\n channelName,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getSlackMembers = () => ({\n type: GET_SLACK_MEMBERS,\n request: {\n url: apiEndpoints.SLACK_MEMBERS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const inviteSlackMembers = ({ members }) => ({\n type: INVITE_SLACK_MEMBERS,\n request: {\n url: apiEndpoints.INVITE_SLACK_MEMBERS,\n data: {\n members,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const updateSlackMembersInStore = ({ members }) => ({\n type: UPDATE_SLACK_MEMBERS_IN_STORE,\n data: {\n members,\n },\n});\n\nexport const onboardSlackMembers = () => ({\n type: ONBOARD_SLACK_MEMBERS,\n request: {\n url: apiEndpoints.ONBOARD_SLACK_MEMBERS,\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getSlackHRISSettings = () => ({\n type: GET_SLACK_HRIS_SETTINGS,\n request: {\n url: apiEndpoints.SLACK_HRIS_SETTINGS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const updateSlackHRISSettings = ({ hrisSettings }) => ({\n type: UPDATE_SLACK_HRIS_SETTINGS,\n request: {\n url: apiEndpoints.SLACK_HRIS_SETTINGS,\n method: 'post',\n data: {\n hrisSettings,\n },\n ...AuthHeadersV2(),\n },\n});\n\nexport const updateSlackMembers = (selectionType) => ({\n type: UPDATE_SLACK_MEMBERS,\n request: {\n url:\n selectionType === MEMBER_GROUPS.ALL\n ? apiEndpoints.SLACK_MEMBERS_ALL\n : apiEndpoints.SLACK_MEMBERS_FULL,\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const updateSpecificSlackMembers = (members) => ({\n type: UPDATE_SPECIFIC_SLACK_MEMBERS,\n request: {\n url: apiEndpoints.SLACK_MEMBERS_SPECIFIC,\n data: {\n members,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const startSlackMembersOnboarding = () => ({\n type: SLACK_START_MEMBER_ONBOARDING,\n request: {\n url: apiEndpoints.SLACK_START_MEMBER_ONBOARDING,\n data: {},\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const getSlackMembersOnboardingStatus = () => ({\n type: GET_SLACK_MEMBER_ONBOARDING_STATUS,\n request: {\n url: apiEndpoints.SLACK_MEMBER_ONBOARDING_STATUS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const skipSlackOnboardSetCustomCurrency = () => ({\n type: SKIP_COMPANY_CURRENCY_SLACK,\n request: {\n url: apiEndpoints.SKIP_CUSTOM_CURRENCY,\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const postSlackAnnouncement = (sendMessage) => ({\n type: SLACK_ANNOUNCEMENT,\n request: {\n url: apiEndpoints.SLACK_ANNOUNCEMENT,\n method: 'post',\n data: {\n sendMessage,\n },\n ...AuthHeadersV2(),\n },\n});\n\nexport default requestsReducer({\n actionType: AUTHORIZE_SIGNIN_WITH_SLACK,\n getData: (state, action, config) => {\n switch (action.type) {\n // case success(AUTHORIZE_SIGNIN_WITH_SLACK): {\n // return { ...state, data: action.data };\n // }\n default:\n return state.data;\n }\n },\n onError: (state, action, config) => {\n return { ...state };\n },\n mutations: {\n [SLACK_APP_INFO]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(SLACK_APP_INFO): {\n const data = _.get(action, ['data', 'data'], null);\n return { ...state.data, ...data };\n }\n default:\n return state;\n }\n },\n },\n [SLACK_CHANNELS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(SLACK_CHANNELS): {\n const slackChannels = _.get(action, [\n 'data',\n 'data',\n 'channels',\n 'channels',\n ]);\n return { ...state.data, slackChannels };\n }\n default:\n return state;\n }\n },\n },\n [UPDATE_ACTIVE_SLACK_CHANNELS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(UPDATE_ACTIVE_SLACK_CHANNELS): {\n const activeChannels = _.get(action, ['data', 'data', 'channels']);\n return { ...state.data, activeChannels };\n }\n default:\n return state;\n }\n },\n },\n [GET_ACTIVE_SLACK_CHANNELS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(GET_ACTIVE_SLACK_CHANNELS): {\n const activeChannels = _.get(action, ['data', 'data', 'channels']);\n return { ...state.data, activeChannels };\n }\n default:\n return state;\n }\n },\n },\n [GET_DEFAULT_SLACK_CHANNEL]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(GET_DEFAULT_SLACK_CHANNEL): {\n const defaultChannel = _.get(action, ['data', 'data', 'channel']);\n return { ...state.data, defaultChannel };\n }\n default:\n return state;\n }\n },\n },\n [UPDATE_DEFAULT_SLACK_CHANNEL]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(UPDATE_DEFAULT_SLACK_CHANNEL): {\n const defaultChannel = _.get(action, ['data', 'data', 'channel']);\n return { ...state.data, defaultChannel };\n }\n default:\n return state;\n }\n },\n },\n [CREATE_DEFAULT_SLACK_CHANNEL]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(CREATE_DEFAULT_SLACK_CHANNEL): {\n const defaultChannel = _.get(action, ['data', 'data', 'channel']);\n return { ...state.data, defaultChannel };\n }\n default:\n return state;\n }\n },\n },\n [GET_SLACK_MEMBERS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(GET_SLACK_MEMBERS): {\n const slackMembers = _.get(action, ['data', 'data', 'members']);\n return { ...state.data, slackMembers };\n }\n default:\n return state;\n }\n },\n },\n [INVITE_SLACK_MEMBERS]: {\n updateData: false,\n },\n [ONBOARD_SLACK_MEMBERS]: {\n updateData: false,\n },\n [GET_SLACK_HRIS_SETTINGS]: {\n updateData: false,\n },\n [UPDATE_SLACK_HRIS_SETTINGS]: {\n updateData: false,\n },\n [GET_SLACK_CUSTOM_EMOJIS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(GET_SLACK_CUSTOM_EMOJIS): {\n let customEmojis = _.get(action, ['data', 'data', 'emojis'], []);\n customEmojis = customEmojis.map((emoji) => {\n return {\n name: emoji.emoji,\n short_names: [emoji.emoji],\n text: '',\n keywords: ['slack'],\n imageUrl: emoji.image,\n customCategory: 'Slack',\n };\n });\n return { ...state.data, customEmojis };\n }\n default:\n return state;\n }\n },\n },\n [UPDATE_SLACK_MEMBERS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(UPDATE_SLACK_MEMBERS): {\n const slackMembersAdded = _.get(\n action,\n ['data', 'data', 'userIds'],\n [],\n );\n return { ...state.data, slackMembersAdded };\n }\n default:\n return state;\n }\n },\n },\n [UPDATE_SPECIFIC_SLACK_MEMBERS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(UPDATE_SPECIFIC_SLACK_MEMBERS): {\n const slackMembersAdded = _.get(\n action,\n ['data', 'data', 'userIds'],\n [],\n );\n return { ...state.data, slackMembersAdded };\n }\n default:\n return state;\n }\n },\n },\n [UPDATE_SLACK_MEMBERS_IN_STORE]: {\n updateData: (state, action) => {\n switch (action.type) {\n case UPDATE_SLACK_MEMBERS_IN_STORE: {\n const members = _.get(action, ['data', 'members'], []);\n return { ...state.data, slackMembers: members };\n }\n default:\n return state;\n }\n },\n local: true,\n },\n },\n});\n","export const MEMBER_TYPES = {\n ALL: {\n id: 'all',\n label: 'All Members',\n },\n FULL_MEMBERS: {\n id: 'fullMembers',\n label: 'Full Members',\n },\n MULTI_CHANNEL_GUEST: {\n id: 'multiChannel',\n label: 'Multi Channel Guests',\n },\n SINGLE_CHANNEL_GUEST: {\n id: 'singleChannel',\n label: 'Single Channel Guests',\n },\n OUTSIDE_GUESTS: {\n id: 'outside',\n label: 'Outside Guests',\n },\n // INACTIVE: {\n // id: 'inactive',\n // label: 'Inactive Slack Members',\n // },\n};\n\nexport const SLACK_MEMBER_STATUS = {\n CAN_BE_DESELECTED: 'CAN_BE_DESELECTED',\n OWNER_CANNOT_BE_DESELECTED: 'OWNER_CANNOT_BE_DESELECTED',\n SELF_CANNOT_BE_DESELECTED: 'SELF_CANNOT_BE_DESELECTED',\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport titlelize from 'titleize';\nimport { createSelector } from 'reselect';\nimport { MEMBER_TYPES } from '../../utils/constants/slackOnboarding';\nimport {\n UPDATE_DEFAULT_SLACK_CHANNEL,\n UPDATE_ACTIVE_SLACK_CHANNELS,\n UPDATE_SLACK_MEMBERS,\n UPDATE_SPECIFIC_SLACK_MEMBERS,\n CREATE_DEFAULT_SLACK_CHANNEL,\n GET_SLACK_MEMBERS,\n INVITE_SLACK_MEMBERS,\n GET_SLACK_HRIS_SETTINGS,\n ONBOARD_SLACK_MEMBERS,\n UPDATE_SLACK_HRIS_SETTINGS,\n} from '.';\n\nexport const getUpdateDefaultChannelsLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', UPDATE_DEFAULT_SLACK_CHANNEL, 'pending'],\n false,\n );\n\nexport const getCreateDefaultChannelsLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', CREATE_DEFAULT_SLACK_CHANNEL, 'pending'],\n false,\n );\n\nexport const getUpdateActiveChannelsLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', UPDATE_ACTIVE_SLACK_CHANNELS, 'pending'],\n false,\n );\n\nexport const getSlackUsersLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', GET_SLACK_MEMBERS, 'pending'],\n false,\n );\n\nexport const updateSlackUsersLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', INVITE_SLACK_MEMBERS, 'pending'],\n 0,\n );\n\nexport const getSlackHRISLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', GET_SLACK_HRIS_SETTINGS, 'pending'],\n 0,\n );\n\nexport const getSlackMembersOnboardLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', ONBOARD_SLACK_MEMBERS, 'pending'],\n 0,\n );\n\nexport const getSlackHRISUpdateLoadingStatus = (state) =>\n _.get(\n state,\n ['v2SlackOnboard', 'mutations', UPDATE_SLACK_HRIS_SETTINGS, 'pending'],\n 0,\n );\n\nexport const getSelectUsersLoadingStatus = (state) => {\n const isUsersRequesting = _.get(\n state,\n ['v2SlackOnboard', 'mutations', UPDATE_SLACK_MEMBERS, 'pending'],\n 0,\n );\n\n const isSpecificUsersRequesting = _.get(\n state,\n ['v2SlackOnboard', 'mutations', UPDATE_SPECIFIC_SLACK_MEMBERS, 'pending'],\n 0,\n );\n return isUsersRequesting > 0 || isSpecificUsersRequesting > 0;\n};\n\nexport const getSlackConfigInfo = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'SLACK_APP'], null);\n\nexport const getSlackChannelsInfo = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'slackChannels'], []);\n\nexport const getActiveSlackChannelsInfo = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'activeChannels'], []);\n\nexport const getDefaultSlackChannelInfo = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'defaultChannel'], null);\n\nexport const slackMembersSelector = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'slackMembers'], []);\n\nexport const slackCustomSelector = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'customEmojis'], []);\n\nconst serializeSlackMembers = (slackMembers) => {\n return slackMembers\n .filter((member) => !member.deleted)\n .map((member) => {\n const user = { id: member.id };\n user.username = member.name;\n user.fullName = titlelize(member.profile.real_name);\n user.thumbImage = member.profile.image_48;\n user.image = member.profile.image_512;\n return user;\n });\n};\nexport const getSlackMembersInfo = createSelector(\n slackMembersSelector,\n (slackMembers) => serializeSlackMembers(slackMembers),\n);\n\nexport const invitedSlackMembersSelector = (state) =>\n _.get(state, ['v2SlackOnboard', 'data', 'slackMembersAdded'], []);\n\nexport const getSlackMembersSerialzed = createSelector(\n slackMembersSelector,\n (slackMembers) =>\n slackMembers.map((slackMember) => {\n let memberTypeString;\n let memberType;\n switch (slackMember.slackMemberType) {\n case 'ADMIN':\n case 'OWNER':\n case 'REGULAR':\n memberTypeString = 'Full Member';\n memberType = MEMBER_TYPES.FULL_MEMBERS.id;\n break;\n case 'SINGLE_CHANNEL_GUEST':\n memberTypeString = 'Single Channel Guest';\n memberType = MEMBER_TYPES.SINGLE_CHANNEL_GUEST.id;\n break;\n case 'MULTI_CHANNEL_GUEST':\n memberTypeString = 'Multi Channel Guest';\n memberType = MEMBER_TYPES.MULTI_CHANNEL_GUEST.id;\n break;\n case 'STRANGER':\n memberTypeString = 'Outside Guests';\n memberType = MEMBER_TYPES.OUTSIDE_GUESTS.id;\n break;\n default:\n break;\n }\n return {\n ...slackMember,\n name: titlelize(slackMember.name),\n memberTypeString,\n memberType,\n };\n }),\n);\n\nexport const getAssemblySlackMembersSerialzed = createSelector(\n getSlackMembersSerialzed,\n (slackMembers) => slackMembers.filter((member) => member.isAssemblyUser),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Link, { AnchorLink } from '../../../componentsV2/core/Link';\nimport Typography from '../../../componentsV2/core/Typography';\nimport themeV2 from '../../../componentsV2/theme';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: 24,\n },\n existing: {\n color: themeV2.palette.darkText,\n alignitems: 'center',\n textAlign: 'center',\n fontSize: 14,\n fontWeight: 500,\n marginTop: 10,\n },\n link: {\n fontSize: 14,\n color: `${themeV2.palette.blue} !important`,\n },\n}));\n\nexport default function Existing(props) {\n const classes = useStyles();\n const { text, linkText, to, link } = props;\n return (\n
\n \n {text} \n {link ? (\n \n {linkText}\n \n ) : (\n \n {linkText}\n \n )}\n \n
\n );\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\nimport { SplitTreatments } from '@splitsoftware/splitio-react';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport { parse } from 'qs';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport Button from '../../../atomic/atoms/Button';\nimport TextField from '../../../atomic/molecules/NewTextfield';\nimport SignInOptions from '../../../atomic/organism/SigninOptions';\nimport { SigninOptionsType } from '../../../atomic/organism/SigninOptions/interface';\nimport { StyledDivider } from '../../../atomic/organism/SigninOptions/styles';\nimport ValidateYourEmail from '../../../atomic/organism/ValidateYourEmail';\nimport Card from '../../../componentsV2/core/Card';\nimport Link from '../../../componentsV2/core/Link';\nimport Typography from '../../../componentsV2/core/Typography';\nimport themeV2 from '../../../componentsV2/theme';\nimport { DEFAULT_PATH, RESET_PASSWORD } from '../../../constants/routes';\nimport {\n SplitNames,\n TreatmentTypes,\n} from '../../../hooks/useSplitSdkConfig/constants';\nimport {\n CREATE_PASSWORD_BODY_TEXT,\n CREATE_PASSWORD_HEADER_TEXT,\n ENTER_EMAIL_TO_CREATE_PASSWORD,\n IS_THIS_CORRECT_TEXT,\n LIFION_ENFORCED_BODY_TEXT,\n LIFION_ENFORCED_HEADER_TEXT,\n NO_PREFERRED_SSO_BODY_TEXT,\n NO_PREFERRED_SSO_HEADER_TEXT,\n RESET_PASSWORD_TEXT,\n RETURN_TO_SIGN_IN_TEXT,\n SAML_DISABLED_MESSAGE,\n SAML_ONLY_BODY_TEXT,\n SAML_ONLY_HEADER_TEXT,\n SAML_WITH_NO_PREFERRED_SSO_BODY_TEXT,\n SAML_WITH_NO_PREFERRED_SSO_TEXT,\n SAML_WITH_PASSWORD_TEXT,\n SAML_WITH_SSO_TEXT,\n SIGNIN_TO_ENTER,\n SIGN_IN_WITH_SAML_TEXT,\n SSO_ENFORCED_BODY_TEXT,\n SSO_ENFORCED_HEADER_TEXT,\n WELCOME_BACK,\n} from '../../../languages/en/signIn';\nimport {\n handleUserSignin,\n userSessionCreatedAction,\n} from '../../../modules/Session';\nimport SSOComponent from '../../../pages/signin/SSOComponent';\nimport LoadingPulse from '../../../screens/shared/LoadingPulse';\nimport { SAMLAuthErrorCodes } from '../../../Utils/data/SAML/error';\nimport { SSOContent, SSOOptions } from '../../../Utils/data/ssoManager/common';\nimport { isValidEmail } from '../../../Utils/validation';\nimport Layout from '../../Layout/onboarding';\nimport {\n loginOptions,\n loginWithPassword,\n triggerSetPassword,\n} from '../../modules/login';\nimport {\n getRequestLoadingStatus,\n getSigninOptionsRequestLoadingStatus,\n getSigninWithPasswordRequestLoadingStatus,\n getTriggerResetPasswordRequestLoadingStatus,\n} from '../../modules/login/selectors';\nimport { authorizeSignInWithSlack } from '../../modules/slackOnboard';\nimport { getSlackConfigInfo } from '../../modules/slackOnboard/selectors';\nimport RoutesList from '../../routes/routesList';\nimport Existing from '../shared/ExistingAssemblyDiv';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 500,\n padding: '43px 53px 25px 53px',\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n footer: {},\n link: {\n fontSize: 12,\n },\n terms: {\n color: themeV2.palette.lightGray1,\n },\n});\n\nconst StyledButton = styled(Button)`\n margin-top: 16px;\n margin-bottom: 24px;\n`;\n\nconst StyledWrapper = styled.div`\n max-width: 486px;\n margin: 0 auto;\n`;\n\nconst SIGNIN_STATE = {\n EMAIL: 'EMAIL',\n VERIFY: 'VERIFY',\n PASSWORD_RESET: 'PASSWORD_RESET',\n};\n\nconst SSOSignInOptions = {\n NO_PREFERRED_SSO_FOUND: 'NO_PREFERRED_SSO_FOUND',\n};\n\nconst SigninWithPasswordOptions = {\n ENABLED: 'ENABLED',\n EMPTY: 'EMPTY',\n};\n\nexport class SignIn extends Component {\n constructor(props) {\n super(props);\n this.state = {\n signinState: SIGNIN_STATE.EMAIL,\n email: '',\n emailErrors: null,\n emailTouched: false,\n ssoLoading: false,\n ssoType: null,\n verifyData: null,\n };\n }\n\n onSubmitPassword = (values, { setFieldError }) => {\n let { password } = values;\n password = password.trim();\n\n let { email } = this.state;\n email = email.trim();\n\n let goThrough = true;\n\n if (!password) {\n setFieldError('password', 'Password is required');\n goThrough = false;\n }\n if (goThrough) {\n this.props\n .loginWithPassword({ email, password })\n .then((successAction) => {\n const data = _.get(successAction, ['data']);\n const { user, jwtToken } = data;\n this.props.userSessionCreatedAction(user, jwtToken);\n const { history } = this.props;\n const toPath =\n _.get(history, ['location', 'state', 'origin'], null) ||\n RoutesList.HOME;\n if (toPath.includes('signin') || toPath.includes('signout')) {\n handleUserSignin(user);\n } else {\n handleUserSignin(user, toPath);\n }\n })\n .catch((errorOrAbortAction) => {\n const error = _.get(errorOrAbortAction, [\n 'error',\n 'response',\n 'data',\n 'message',\n ]);\n if (\n error === 'INVALID_PASSWORD' ||\n error === 'INVALID_PARAMETER' ||\n error === 'MISSING_REQUIRED_PARAMETERS'\n ) {\n setFieldError('password', 'Invalid password');\n }\n });\n }\n };\n\n onForgotPassword = () => {\n let { email } = this.state;\n email = email.trim();\n\n if (email) {\n this.props\n .triggerSetPassword({ email })\n .then((successAction) => {\n this.setState({\n signinState: SIGNIN_STATE.PASSWORD_RESET,\n });\n })\n .catch((errorOrAbortAction) => {});\n }\n };\n\n onNextClick = (e) => {\n e.preventDefault();\n let { email } = this.state;\n email = email.trim();\n\n let goThrough = true;\n if (!email) {\n this.setState({ emailErrors: 'Email is required' });\n goThrough = false;\n }\n\n if (!isValidEmail(email)) {\n this.setState({ emailErrors: 'Enter a valid email' });\n goThrough = false;\n }\n\n if (goThrough) {\n const encodedEmail = encodeURIComponent(email);\n this.props\n .loginOptions({ email: encodedEmail })\n .then((successAction) => {\n const data = _.get(successAction, ['data']);\n\n const samlData = _.get(successAction, ['data', 'saml'], null);\n const passwordData = _.get(successAction, ['data', 'password'], null);\n\n if (!samlData && passwordData === SigninWithPasswordOptions.EMPTY) {\n if (this.hasSAMLDisconnectedError()) {\n this.onForgotPassword();\n } else {\n this.setState({\n signinState: SIGNIN_STATE.VERIFY,\n verifyData: data,\n });\n }\n } else {\n this.setState({\n signinState: SIGNIN_STATE.VERIFY,\n verifyData: data,\n });\n }\n })\n .catch((errorOrAbortAction) => {\n const error = _.get(errorOrAbortAction, [\n 'error',\n 'response',\n 'data',\n 'message',\n ]);\n this.setState({\n emailErrors: 'Email not found',\n });\n if (error === 'USER_NOT_FOUND' || error === 'ASSEMBLY_NOT_FOUND') {\n this.setState({\n emailErrors: 'Invalid email',\n });\n }\n if (\n error === 'MISSING_REQUIRED_PARAMETERS' ||\n error === 'INVALID_PARAMETER'\n ) {\n this.setState({\n emailErrors: 'Invalid email',\n });\n }\n });\n }\n };\n\n handleSSOClick = (ssoOption) => {\n this.setState({ ssoLoading: true, ssoType: ssoOption });\n };\n\n handleChange = (name) => (event) => {\n this.setState({\n [name]: event.target.value,\n emailErrors: null,\n [`${name}Touched`]: true,\n });\n };\n\n getSSOOptionsForSSO = (sso) => {\n switch (sso) {\n case 'SLACK':\n return SSOOptions.SLACK;\n case 'GSUITE':\n return SSOOptions.GOOGLE;\n case 'OFFICE365':\n return SSOOptions.OFFICE365;\n case 'ADP':\n return SSOOptions.ADP;\n case 'LIFION':\n return SSOOptions.LIFION;\n default:\n return SSOOptions.SLACK;\n }\n };\n\n getSAMLName = (samlData) => {\n return samlData.name || 'SAML';\n };\n\n getSubTextProps = (hasTwoLinks = false) => {\n const subTextProps = {\n text: IS_THIS_CORRECT_TEXT,\n linkOneText: RETURN_TO_SIGN_IN_TEXT,\n linkOnePath: DEFAULT_PATH,\n };\n if (hasTwoLinks) {\n subTextProps.linkTwoText = RESET_PASSWORD_TEXT;\n subTextProps.linkTwoPath = RESET_PASSWORD;\n }\n return subTextProps;\n };\n\n hasSAMLDisconnectedError = () => {\n const { location } = this.props;\n const parsedParams = parse(location.search, {\n ignoreQueryPrefix: true,\n });\n const errorCodeFromURL = parsedParams && parsedParams.error;\n return (\n errorCodeFromURL &&\n errorCodeFromURL === SAMLAuthErrorCodes.SAML_NOT_ENABLED\n );\n };\n\n renderVerifyState = () => {\n const { verifyData } = this.state;\n const samlData = _.get(verifyData, ['saml'], null);\n const passwordData = _.get(verifyData, ['password'], null);\n const ssoData = _.get(verifyData, ['sso'], null);\n\n let signinOptionsType = SigninOptionsType.NO_PREFERRED_SSO;\n if (samlData) {\n if (ssoData && ssoData !== SSOSignInOptions.NO_PREFERRED_SSO_FOUND) {\n signinOptionsType = SigninOptionsType.SAML_WITH_SSO;\n }\n if (ssoData && ssoData === SSOSignInOptions.NO_PREFERRED_SSO_FOUND) {\n signinOptionsType = SigninOptionsType.SAML_WITH_NO_PREFERRED_SSO;\n }\n if (!ssoData && !passwordData) {\n signinOptionsType = SigninOptionsType.SAML_ONLY;\n }\n if (passwordData && passwordData === SigninWithPasswordOptions.ENABLED) {\n signinOptionsType = SigninOptionsType.SAML_WITH_PASSWORD;\n }\n } else if (ssoData && ssoData !== SSOSignInOptions.NO_PREFERRED_SSO_FOUND) {\n signinOptionsType = SigninOptionsType.SSO_ENFORCED;\n } else if (\n passwordData &&\n passwordData === SigninWithPasswordOptions.EMPTY\n ) {\n signinOptionsType = SigninOptionsType.CREATE_PASSWORD;\n } else {\n signinOptionsType = SigninOptionsType.NO_PREFERRED_SSO;\n }\n switch (signinOptionsType) {\n case SigninOptionsType.SAML_WITH_SSO: {\n const samlName = this.getSAMLName(samlData);\n const ssoOption = this.getSSOOptionsForSSO(ssoData);\n const ssoName = SSOContent[ssoOption].displayName;\n const samlProps = {\n samlButtonText: SIGN_IN_WITH_SAML_TEXT(samlName),\n samlIcon: 'key',\n samlURL: samlData.uri,\n headingText: `${SIGN_IN_WITH_SAML_TEXT(samlName)}?`,\n bodyText: SAML_WITH_SSO_TEXT(samlName, ssoName),\n };\n const subTextProps = this.getSubTextProps();\n\n const ssoComponentProps = {\n showPreferred: ssoOption,\n onSSOClick: this.handleSSOClick,\n };\n return (\n \n \n \n );\n }\n case SigninOptionsType.SAML_WITH_PASSWORD: {\n const samlName = this.getSAMLName(samlData);\n const samlProps = {\n samlButtonText: SIGN_IN_WITH_SAML_TEXT(samlName),\n samlIcon: 'key',\n samlURL: samlData.uri,\n headingText: `${SIGN_IN_WITH_SAML_TEXT(samlName)}?`,\n bodyText: SAML_WITH_PASSWORD_TEXT(samlName),\n };\n const subTextProps = this.getSubTextProps(true);\n const { loadingSigninWithPassword } = this.props;\n const passwordProps = {\n initialValues: {\n password: '',\n },\n onSubmit: this.onSubmitPassword,\n loading: loadingSigninWithPassword,\n };\n return (\n \n \n \n );\n }\n case SigninOptionsType.SAML_ONLY: {\n const samlName = this.getSAMLName(samlData);\n const samlProps = {\n samlButtonText: SIGN_IN_WITH_SAML_TEXT(samlName),\n samlIcon: 'key',\n samlURL: samlData.uri,\n headingText: SAML_ONLY_HEADER_TEXT(samlName),\n bodyText: SAML_ONLY_BODY_TEXT(samlName),\n };\n const subTextProps = this.getSubTextProps();\n return (\n \n \n \n );\n }\n case SigninOptionsType.SAML_WITH_NO_PREFERRED_SSO: {\n const samlName = this.getSAMLName(samlData);\n const samlProps = {\n samlButtonText: SIGN_IN_WITH_SAML_TEXT(samlName),\n samlIcon: 'key',\n samlURL: samlData.uri,\n headingText: SAML_WITH_NO_PREFERRED_SSO_TEXT(samlName),\n bodyText: SAML_WITH_NO_PREFERRED_SSO_BODY_TEXT(samlName),\n };\n const subTextProps = this.getSubTextProps();\n return (\n \n \n \n );\n }\n case SigninOptionsType.SSO_ENFORCED: {\n const ssoOption = this.getSSOOptionsForSSO(ssoData);\n const ssoName = SSOContent[ssoOption].displayName;\n const headingText =\n ssoOption === SSOOptions.LIFION\n ? LIFION_ENFORCED_HEADER_TEXT\n : SSO_ENFORCED_HEADER_TEXT;\n const bodyText =\n ssoOption === SSOOptions.LIFION\n ? LIFION_ENFORCED_BODY_TEXT\n : SSO_ENFORCED_BODY_TEXT(ssoName);\n const subTextProps = this.getSubTextProps();\n\n const onSSOClick = () => {\n const lifionURI = _.get(verifyData, ['authorizeUri'], null);\n if (ssoOption === SSOOptions.LIFION && lifionURI) {\n window.location.href = lifionURI;\n }\n this.handleSSOClick(ssoName);\n };\n\n const ssoComponentProps = {\n showPreferred: ssoOption,\n onSSOClick:\n ssoOption === SSOOptions.LIFION ? onSSOClick : this.handleSSOClick,\n };\n return (\n \n \n \n );\n }\n case SigninOptionsType.NO_PREFERRED_SSO: {\n const headingText = NO_PREFERRED_SSO_HEADER_TEXT;\n const bodyText = NO_PREFERRED_SSO_BODY_TEXT;\n const subTextProps = this.getSubTextProps(true);\n const ssoComponentProps = {\n onSSOClick: this.handleSSOClick,\n };\n const { loadingSigninWithPassword } = this.props;\n const passwordProps = {\n initialValues: {\n password: '',\n },\n onSubmit: this.onSubmitPassword,\n loading: loadingSigninWithPassword,\n };\n return (\n \n \n \n );\n }\n case SigninOptionsType.CREATE_PASSWORD: {\n const headingText = CREATE_PASSWORD_HEADER_TEXT;\n const bodyText = CREATE_PASSWORD_BODY_TEXT;\n const subTextProps = this.getSubTextProps();\n\n const { loading } = this.props;\n const createPasswordProps = {\n onClick: this.onForgotPassword,\n isLoading: loading,\n };\n return (\n \n \n \n );\n }\n\n default:\n return null;\n }\n };\n\n render() {\n const { classes, loading } = this.props;\n const {\n email,\n emailErrors,\n emailTouched,\n ssoLoading,\n ssoType,\n signinState,\n } = this.state;\n\n let isButtonDisabled = !emailTouched || emailErrors;\n if (email.length !== 0 && !emailErrors) {\n isButtonDisabled = false;\n }\n\n if (ssoLoading) {\n return (\n \n \n \n {ssoLoading ? `Connecting to ${ssoType}` : 'Verifying Slack'}\n \n \n \n \n );\n }\n\n if (signinState === SIGNIN_STATE.VERIFY) {\n return this.renderVerifyState();\n }\n\n if (signinState === SIGNIN_STATE.PASSWORD_RESET) {\n return (\n \n \n \n \n \n );\n }\n\n let headerText = WELCOME_BACK;\n let bodyText = SIGNIN_TO_ENTER;\n if (this.hasSAMLDisconnectedError()) {\n headerText = SAML_DISABLED_MESSAGE;\n bodyText = ENTER_EMAIL_TO_CREATE_PASSWORD;\n }\n\n return (\n \n \n
\n
\n
\n \n {headerText}\n \n \n {bodyText}\n \n
\n \n
\n \n \n\n \n Next\n \n \n {({ treatments: { REMOVE_PASSWORD_BASED_AUTH } }) =>\n REMOVE_PASSWORD_BASED_AUTH.treatment !==\n TreatmentTypes.ON && (\n \n Forgot your password? \n \n Reset password\n \n \n )\n }\n \n \n
\n
\n
\n \n
\n );\n }\n}\n\nSignIn.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading:\n getRequestLoadingStatus(state) ||\n getSigninOptionsRequestLoadingStatus(state) ||\n getTriggerResetPasswordRequestLoadingStatus(state),\n loadingSigninWithPassword: getSigninWithPasswordRequestLoadingStatus(state),\n\n slackConfigInfo: getSlackConfigInfo(state),\n});\n\nexport default connect(mapStateToProps, {\n loginOptions,\n loginWithPassword,\n userSessionCreatedAction,\n authorizeSignInWithSlack,\n triggerSetPassword,\n})(withStyles(styles)(SignIn));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { withRouter } from 'react-router-dom';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport TextField from '../../../componentsV2/core/TextField';\nimport Button from '../../../componentsV2/core/Button';\nimport Link from '../../../componentsV2/core/Link';\nimport themeV2 from '../../../componentsV2/theme';\n\nimport RoutesList from '../../routes/routesList';\nimport { forgotPassword } from '../../modules/login';\nimport { getForgotPasswordRequestLoadingStatus } from '../../modules/login/selectors';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport { isValidEmail } from '../../../Utils/validation';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n height: 348,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n textFieldStyle: {\n marginTop: 24,\n },\n subtitleStyle: {\n fontSize: 14,\n fontWeight: `${themeV2.typography.fontWeightRegular} !important`,\n fontStyle: 'normal',\n fontStretch: 'normal',\n lineHeight: 'normal',\n letterSpacing: 'normal',\n color: themeV2.palette.darkText,\n },\n link: {\n fontSize: 12,\n },\n terms: {\n color: themeV2.palette.lightGray1,\n },\n});\n\nclass ForgotPassword extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n email: '',\n emailErrors: null,\n emailTouched: false,\n };\n }\n\n onButtonClick = (e) => {\n e.preventDefault();\n let { email } = this.state;\n email = email.trim();\n\n let goThrough = true;\n if (!email) {\n this.setState({ emailErrors: 'Email is required' });\n goThrough = false;\n }\n\n if (!isValidEmail(email)) {\n this.setState({ emailErrors: 'Enter a valid email' });\n }\n\n if (goThrough) {\n this.props\n .forgotPassword({ email })\n .then((successAction) => {\n this.props.history.push(RoutesList.FORGOT_PASSWORD_SUCCESS);\n })\n .catch((errorOrAbortAction) => {\n // handle error or aborted request\n const error = handleErrorAction(errorOrAbortAction);\n if (error) {\n this.setState({ emailErrors: error.message });\n }\n });\n }\n };\n\n handleChange = (event) => {\n this.setState({\n email: event.target.value,\n emailErrors: null,\n emailTouched: true,\n });\n };\n\n render() {\n const { classes, loading } = this.props;\n const { email, emailErrors, emailTouched } = this.state;\n\n const isButtonDisabled = !emailTouched || !!emailErrors;\n return (\n \n \n
\n \n Forgot your password?\n \n \n No problem. Enter your email and we'll send you instructions for\n resetting your password!\n \n \n \n {loading ? 'Sending email...' : 'Send email'}\n \n \n Remember your password?{' '}\n Sign In\n \n \n
\n
\n );\n }\n}\n\nForgotPassword.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getForgotPasswordRequestLoadingStatus(state),\n});\n\nexport default withRouter(\n connect(mapStateToProps, { forgotPassword })(\n withStyles(styles)(ForgotPassword),\n ),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n root: {\n display: 'flex',\n alignItems: 'center',\n margin: 'auto',\n justifyContent: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n paddingLeft: 20,\n paddingRight: 20,\n },\n};\n\nfunction VerticallyCenteredLayout(props) {\n const { children, classes } = props;\n const { offsetHeight } = props;\n\n return (\n \n {children}\n
\n );\n}\n\nVerticallyCenteredLayout.propTypes = {\n classes: PropTypes.object.isRequired,\n offsetHeight: PropTypes.number,\n};\n\nVerticallyCenteredLayout.defaultProps = {\n offsetHeight: 90,\n};\n\nexport default withStyles(styles)(VerticallyCenteredLayout);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { withRouter, Link } from 'react-router-dom';\nimport Layout from '../../../Layout/onboarding';\nimport VerticallyCenteredLayout from '../../../Layout/verticallyCentered';\nimport Typography from '../../../../componentsV2/core/Typography';\nimport Button from '../../../../componentsV2/core/Button';\nimport RoutesList from '../../../routes/routesList';\nimport themeV2 from '../../../../componentsV2/theme';\n\nconst styles = (theme) => ({\n emailStyle: {\n fontWeight: theme.typography.fontWeightBold,\n },\n buttonStyle: {\n width: 360,\n [theme.breakpoints.down('xs')]: {\n width: 200,\n },\n marginTop: 30,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.white} !important`,\n },\n },\n});\n\nconst SignInLink = React.forwardRef((props, ref) => (\n \n));\n\nfunction EmailSent(props) {\n const { classes } = props;\n return (\n \n \n
\n \n Your password reset request has been sent!\n \n
\n
\n \n Please check your inbox to reset your password\n \n
\n
\n \n Go back to Sign In\n \n
\n
\n
\n );\n}\n\nEmailSent.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withRouter(withStyles(styles)(EmailSent));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport _ from 'lodash';\nimport Button from '../../../../componentsV2/core/Button';\nimport RoutesList from '../../../routes/routesList';\nimport Layout from '../../../Layout/onboarding';\nimport VerticallyCenteredLayout from '../../../Layout/verticallyCentered';\nimport Link from '../../../../componentsV2/core/Link';\nimport Typography from '../../../../componentsV2/core/Typography';\nimport { getVerfiyTokenRequestLoadingStatus } from '../../../modules/login/selectors';\nimport { forgotPasswordVerifyToken } from '../../../modules/login';\nimport themeV2 from '../../../../componentsV2/theme';\n\nconst styles = (theme) => ({\n buttonStyle: {\n width: 360,\n [theme.breakpoints.down('xs')]: {\n width: 200,\n },\n marginTop: 30,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.white} !important`,\n },\n },\n});\n\nconst ForgotPasswordLink = React.forwardRef((props, ref) => (\n \n));\n\nclass VerifyToken extends Component {\n constructor(props) {\n super(props);\n const { verifyToken } = props.match.params;\n this.state = {\n verifyFailed: !verifyToken,\n };\n }\n\n componentDidMount() {\n const { verifyToken } = this.props.match.params;\n if (verifyToken) {\n this.props\n .forgotPasswordVerifyToken({ token: verifyToken })\n .then((successAction) => {\n const data = _.get(successAction, ['data', 'data']);\n const { userId } = data;\n this.props.history.push(`${RoutesList.RESET_PASSWORD}/${userId}`);\n })\n .catch(() => {\n this.setState({ verifyFailed: true });\n });\n }\n }\n\n render() {\n const { classes, loading } = this.props;\n const { verifyFailed } = this.state;\n let mainText = 'Verifying your reset token...';\n if (verifyFailed) {\n mainText = 'Verification failed';\n } else if (loading) {\n mainText = 'Verifying your reset token...';\n } else {\n mainText = 'Verification Successfully';\n }\n\n return (\n \n \n
\n \n {mainText}\n \n
\n {verifyFailed && (\n \n
\n \n Your token is invalid. Please try again.\n \n
\n
\n \n Forgot Password\n \n
\n
\n )}\n
\n
\n );\n }\n}\n\nVerifyToken.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getVerfiyTokenRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, { forgotPasswordVerifyToken })(\n withStyles(styles)(VerifyToken),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport * as Yup from 'yup';\nimport Fuse from 'fuse.js';\nimport {\n STRENGTH_WEAK,\n STRENGTH_NORMAL,\n STRENGTH_STRONG,\n STRENGTH_NONE,\n} from '../../constants/progressValidator';\n\nexport const PASSWORD_LANGUAGE = {\n requiredPassword: 'Password is Required',\n minLength: 'Must be more than 8 characters',\n upperCase: 'At least one upper and one lowercase letter',\n numberAndSymbol: 'Must have one number and symbol',\n charactersLimit: 'Password should not be more than 128 characters long',\n emailUsernameSimilar: 'Do not use your username or email id as password',\n};\n\nexport const passwordValidators = [\n {\n text: PASSWORD_LANGUAGE.upperCase,\n validation: Yup.string().matches(/^(?=.*[A-Z])(?=.*[a-z])/),\n },\n {\n text: PASSWORD_LANGUAGE.minLength,\n validation: Yup.string().min(8),\n },\n {\n text: PASSWORD_LANGUAGE.numberAndSymbol,\n validation: Yup.string().matches(\n /^(?=.*[0-9])(?=.*[!#$%^&*[\\]{}:;\"'().<,>?@_/|\\\\=+~\\-`])/,\n ),\n },\n];\n\n/**\n * Pass the password and a list of validators to check the password valid\n * Returns isValid boolean and list of errors strings\n *\n * @param {string} password Pass in the password string to validate\n * @param {*} validators List of Validators which the password is validated\n */\nexport const validatePassword = (password, validators) => {\n let isValid = true;\n const errors = [];\n if (password) {\n validators.forEach(({ validation, text }) => {\n try {\n validation.validateSync(password);\n } catch (e) {\n errors.push(text);\n isValid = false;\n }\n });\n return { isValid, errors };\n }\n return { isValid: false, errors };\n};\n\n/**\n * Returns the validation texts based on the password, validatePassword's\n * errors and validators\n *\n * @param {string} password Password string to be validated\n * @param {*} errors Output from validatePassword for the same password\n * @param {*} validators List of Validators which the password is validated\n */\nexport const calculateValidationTexts = (password, errors, validators) => {\n const validationTexts = [];\n if (password) {\n for (let i = 0; i < validators.length; i += 1) {\n const { text } = validators[i];\n validationTexts.push({ text, checked: true });\n }\n for (let i = 0; i < errors.length; i += 1) {\n for (let j = 0; j < validationTexts.length; j += 1) {\n const error = errors[i];\n const validationText = validationTexts[j];\n if (error === validationText.text) {\n validationText.checked = false;\n }\n }\n }\n } else {\n for (let i = 0; i < validators.length; i += 1) {\n const { text } = validators[i];\n validationTexts.push({ text, checked: false });\n }\n }\n return validationTexts;\n};\n\n/**\n * Returns the password strength based on the password and calculateValidationText's\n * validationTexts\n *\n * @param {string} password Password string to be validated\n * @param {*} validationTexts Output from calculateValidationTexts for the same password\n */\nexport const calculateStrength = (password, validationTexts) => {\n let strength = STRENGTH_NONE;\n if (password) {\n let validCount = 0;\n validationTexts.forEach(({ checked }) => {\n if (checked) {\n validCount += 1;\n }\n });\n if (validCount !== 0 && validCount === 1) {\n strength = STRENGTH_WEAK;\n } else if (validCount !== 0 && validCount === 2) {\n strength = STRENGTH_NORMAL;\n } else if (validCount !== 0 && validCount === validationTexts.length) {\n strength = STRENGTH_STRONG;\n }\n }\n return strength;\n};\n\nexport const checkPasswordMaxLength = (password, maxLen = 128) => {\n return password.length > maxLen;\n};\n\nexport const checkForNameAndMailId = (password, keys) => {\n const fuseSearchOptions = {\n shouldSort: true,\n threshold: 0.6,\n location: 0,\n distance: 100,\n maxPatternLength: 32,\n minMatchCharLength: 1,\n keys: ['mailId', 'fullName'],\n };\n\n let invalidPasswordFound = [];\n const passwordChecker = [];\n passwordChecker.push(keys);\n\n const fuse = new Fuse(passwordChecker, fuseSearchOptions);\n invalidPasswordFound = fuse.search(password);\n return invalidPasswordFound;\n};\n\nexport const checkPasswordStrength = (password?) => {\n const { errors } = validatePassword(password, passwordValidators);\n const newValidationTexts = calculateValidationTexts(\n password,\n errors,\n passwordValidators,\n );\n\n const newStrength = calculateStrength(password, newValidationTexts);\n\n return { newValidationTexts, newStrength };\n};\n\nexport const checkPasswordsEquality = (password1, password2) => {\n let reEnterPasswordError = true;\n let saveButtonDisabled = true;\n if (password1) {\n if (\n password1.length >= 8 &&\n password2.length >= 8 &&\n password1 === password2\n ) {\n reEnterPasswordError = false;\n saveButtonDisabled = false;\n }\n }\n return { reEnterPasswordError, saveButtonDisabled };\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { Redirect, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport TextField from '../../../componentsV2/core/TextField';\nimport Button from '../../../componentsV2/core/Button';\nimport themeV2 from '../../../componentsV2/theme';\n\nimport RoutesList from '../../routes/routesList';\nimport { resetPassword } from '../../modules/login';\nimport {\n getResetPasswordRequestLoadingStatus,\n getEmailIdForResetPassword,\n} from '../../modules/login/selectors';\n\nimport ProgressValidator from '../../../atomic/molecules/ProgressValidator';\nimport ValidationText from '../../../atomic/molecules/ValidationText';\nimport {\n checkPasswordStrength,\n passwordValidators,\n checkPasswordMaxLength,\n checkForNameAndMailId,\n PASSWORD_LANGUAGE,\n} from '../../../Utils/validators/password';\nimport {\n STRENGTH_NONE,\n STRENGTH_STRONG,\n} from '../../../constants/progressValidator';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n marginTop24: {\n marginTop: '24px',\n },\n marginBottom12: {\n marginBottom: '12px',\n },\n button: {\n width: '100%',\n marginTop: '24px',\n },\n subtitleStyle: {\n fontSize: 14,\n fontWeight: `${themeV2.typography.fontWeightSemibold} !important`,\n fontStyle: 'normal',\n fontStretch: 'normal',\n lineHeight: 'normal',\n letterSpacing: 'normal',\n color: themeV2.palette.darkText,\n },\n link: {\n fontSize: 12,\n },\n terms: {\n color: themeV2.palette.lightGray1,\n },\n});\n\nclass ResetPassword extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n password: '',\n confirmPassword: '',\n passwordErrors: null,\n passwordTouched: false,\n confirmPasswordTouched: false,\n\n validationTexts: passwordValidators,\n strength: STRENGTH_NONE,\n };\n }\n\n onButtonClick = (e) => {\n e.preventDefault();\n const { match, mailId } = this.props;\n const { userId } = match.params;\n const { password, confirmPassword } = this.state;\n\n let goThrough = true;\n\n if (password && password.length < 6) {\n this.setState({\n passwordErrors: 'Password must be atleast 6 characters long',\n });\n goThrough = false;\n }\n\n const isPasswordReachedMaxLength = checkPasswordMaxLength(password);\n if (isPasswordReachedMaxLength) {\n this.setState({ passwordErrors: PASSWORD_LANGUAGE.charactersLimit });\n goThrough = false;\n }\n\n const hasMailId = checkForNameAndMailId(password, {\n mailId,\n });\n if (hasMailId.length > 0) {\n goThrough = false;\n this.setState({\n passwordErrors: PASSWORD_LANGUAGE.emailUsernameSimilar,\n });\n }\n\n if (password !== confirmPassword) {\n this.setState({ passwordErrors: 'Password’s do not match' });\n goThrough = false;\n }\n\n if (goThrough) {\n this.props\n .resetPassword({ userId, password })\n .then(() => {\n this.props.history.push(RoutesList.RESET_PASSWORD_SUCCESS);\n })\n .catch(() => {});\n }\n };\n\n handlePasswordChange = (event) => {\n const password = event.target.value;\n\n const { newValidationTexts, newStrength } = checkPasswordStrength(password);\n\n this.setState({\n password: event.target.value,\n passwordErrors: null,\n passwordTouched: true,\n\n validationTexts: newValidationTexts,\n strength: newStrength,\n });\n };\n\n handleConfirmPasswordChange = (event) => {\n this.setState({\n confirmPassword: event.target.value,\n passwordErrors: null,\n confirmPasswordTouched: true,\n });\n };\n\n render() {\n const { classes, loading, match } = this.props;\n const {\n password,\n confirmPassword,\n confirmPasswordTouched,\n passwordTouched,\n passwordErrors,\n validationTexts,\n strength,\n } = this.state;\n\n const isPasswordStrengthStrong = strength !== STRENGTH_STRONG;\n const isButtonDisabled =\n !passwordTouched || !confirmPasswordTouched || !!passwordErrors;\n\n const { userId } = match.params;\n if (!userId) {\n return ;\n }\n return (\n \n \n
\n \n Reset password\n \n \n Enter your new password below. You must create a new unique\n password and not reuse an old one.\n \n \n \n {strength && (\n \n )}\n {validationTexts && (\n
\n {validationTexts.map((item) => (\n \n {item.text}\n \n ))}\n
\n )}\n \n {loading ? 'Resetting password...' : 'Reset Password'}\n \n \n
\n
\n );\n }\n}\n\nResetPassword.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getResetPasswordRequestLoadingStatus(state),\n mailId: getEmailIdForResetPassword(state),\n});\n\nexport default withRouter(\n connect(mapStateToProps, { resetPassword })(\n withStyles(styles)(ResetPassword),\n ),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { withRouter, Link } from 'react-router-dom';\nimport Layout from '../../../Layout/onboarding';\nimport VerticallyCenteredLayout from '../../../Layout/verticallyCentered';\nimport Typography from '../../../../componentsV2/core/Typography';\nimport Button from '../../../../componentsV2/core/Button';\nimport RoutesList from '../../../routes/routesList';\nimport themeV2 from '../../../../componentsV2/theme';\n\nconst styles = (theme) => ({\n emailStyle: {\n fontWeight: theme.typography.fontWeightBold,\n },\n buttonStyle: {\n width: 360,\n [theme.breakpoints.down('xs')]: {\n width: 200,\n },\n marginTop: 30,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.white} !important`,\n },\n },\n});\n\nconst SignInLink = (props) => ;\n\nfunction ResetPasswordSuccess(props) {\n const { classes } = props;\n return (\n \n \n
\n \n Your password has been successfully reset!\n \n
\n
\n \n Please go back to sign in to your account.\n \n
\n
\n \n Go back to Sign In\n \n
\n
\n
\n );\n}\n\nResetPasswordSuccess.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withRouter(withStyles(styles)(ResetPasswordSuccess));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer } from 'redux-saga-requests';\nimport {\n HeadersWithoutAuthV2,\n AuthHeadersV2,\n} from '../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2, API_URL_WITH_V3 } from '../../../config';\n\nconst apiEndpoints = {\n REGISTER_EMPLOYEE_WITH_EMAIL: `${API_URL_WITH_V2}/auth/onboard/employee/register`,\n REGISTER_EMPLOYEE_WITH_DOMAIN: `${API_URL_WITH_V2}/auth/onboard/employee/register/domain`,\n GET_EMPLOYER_DETAILS: `${API_URL_WITH_V3}/assembly/`,\n VERIFY_MAGIC_LINK: `${API_URL_WITH_V2}/auth/onboard/employee/verify/magiclink/`,\n VERIFY_INVITE_TOKEN: `${API_URL_WITH_V2}/auth/onboard/token/`,\n SET_PROFILE_FOR_INVITE_TOKEN: `${API_URL_WITH_V2}/auth/onboard/employee/inviteToken/completeProfile`,\n SET_PROFILE_FOR_EMPLOYEE: `${API_URL_WITH_V2}/auth/onboard/employee/magiclink/completeProfile`,\n SET_DETAILS_FOR_USER: `${API_URL_WITH_V2}/auth/onboard/employee/completeProfile`,\n SET_SKIP_DETAILS_FOR_USER: `${API_URL_WITH_V3}/assembly/members/setOnboardingStatus`,\n};\n\nconst REGISTER_EMPLOYEE_WITH_EMAIL =\n '@sessions/V2/REGISTER_EMPLOYEE_WITH_EMAIL';\nexport const REGISTER_EMPLOYEE_WITH_DOMAIN =\n '@sessions/V2/REGISTER_EMPLOYEE_WITH_DOMAIN';\nconst GET_EMPLOYER_DETAILS = '@sessions/V2/GET_EMPLOYER_DETAILS';\nconst VERIFY_MAGIC_LINK = '@sessions/V2/VERIFY_MAGIC_LINK';\nconst VERIFY_INVITE_TOKEN = '@sessions/V2/VERIFY_INVITE_TOKEN';\nexport const SET_PROFILE_FOR_INVITE_TOKEN =\n '@sessions/V2/SET_PROFILE_FOR_INVITE_TOKEN';\nexport const SET_PROFILE_FOR_EMPLOYEE = '@sessions/V2/SET_PROFILE_FOR_EMPLOYEE';\nexport const SET_DETAILS_FOR_USER = '@sessions/V2/SET_DETAILS_FOR_USER';\nexport const SET_SKIP_DETAILS_FOR_USER =\n '@sessions/V2/SET_SKIP_DETAILS_FOR_USER';\n\nexport const registerEmployeeWithEmail = ({ email, employerId }) => ({\n type: REGISTER_EMPLOYEE_WITH_EMAIL,\n request: {\n url: apiEndpoints.REGISTER_EMPLOYEE_WITH_EMAIL,\n data: {\n email,\n employerId,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const registerEmployeeWithDomain = ({ email }) => ({\n type: REGISTER_EMPLOYEE_WITH_DOMAIN,\n request: {\n url: apiEndpoints.REGISTER_EMPLOYEE_WITH_DOMAIN,\n data: {\n email,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const getEmployerName = ({ employerId }) => ({\n type: GET_EMPLOYER_DETAILS,\n request: {\n url: `${apiEndpoints.GET_EMPLOYER_DETAILS}${employerId}/name`,\n method: 'get',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const getMagicLinkVerified = ({ magicLink }) => ({\n type: VERIFY_MAGIC_LINK,\n request: {\n url: `${apiEndpoints.VERIFY_MAGIC_LINK}${magicLink}`,\n method: 'get',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const getInviteTokenVerified = ({ inviteToken }) => ({\n type: VERIFY_INVITE_TOKEN,\n request: {\n url: `${apiEndpoints.VERIFY_INVITE_TOKEN}${inviteToken}`,\n method: 'get',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const setProfileForInviteToken = ({\n inviteToken,\n password,\n fullName,\n}) => ({\n type: SET_PROFILE_FOR_INVITE_TOKEN,\n request: {\n url: apiEndpoints.SET_PROFILE_FOR_INVITE_TOKEN,\n data: {\n password,\n fullName,\n inviteToken,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const setProfileForEmployee = ({ userId, password, fullName }) => ({\n type: SET_PROFILE_FOR_EMPLOYEE,\n request: {\n url: apiEndpoints.SET_PROFILE_FOR_EMPLOYEE,\n data: {\n password,\n fullName,\n userId,\n },\n method: 'post',\n ...HeadersWithoutAuthV2(),\n },\n});\n\nexport const setDetailsForEmployee = ({\n username,\n birthday,\n hiredDate,\n hiredday,\n}) => ({\n type: SET_DETAILS_FOR_USER,\n request: {\n url: apiEndpoints.SET_DETAILS_FOR_USER,\n data: {\n username,\n birthday,\n hiredDate,\n hiredday,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport const setSkipDetailsForEmployee = (isOnboardingComplete = true) => ({\n type: SET_SKIP_DETAILS_FOR_USER,\n request: {\n url: apiEndpoints.SET_SKIP_DETAILS_FOR_USER,\n data: {\n isOnboardingComplete,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport default requestsReducer({\n actionType: REGISTER_EMPLOYEE_WITH_EMAIL,\n mutations: {\n [REGISTER_EMPLOYEE_WITH_DOMAIN]: { updateData: false },\n [SET_PROFILE_FOR_INVITE_TOKEN]: { updateData: false },\n [SET_PROFILE_FOR_EMPLOYEE]: { updateData: false },\n [SET_DETAILS_FOR_USER]: { updateData: false },\n [SET_SKIP_DETAILS_FOR_USER]: { updateData: false },\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport {\n SET_PROFILE_FOR_INVITE_TOKEN,\n SET_PROFILE_FOR_EMPLOYEE,\n REGISTER_EMPLOYEE_WITH_DOMAIN,\n SET_DETAILS_FOR_USER,\n} from '.';\n\nexport const getSetProfileRequestLoadingStatus = (state) =>\n _.get(\n state,\n ['v2EmployeeSignup', 'mutations', SET_PROFILE_FOR_INVITE_TOKEN, 'pending'],\n 0,\n ) > 0 ||\n _.get(\n state,\n ['v2EmployeeSignup', 'mutations', SET_PROFILE_FOR_EMPLOYEE, 'pending'],\n 0,\n ) > 0;\n\nexport const getRegisterRequestLoadingStatus = (state) =>\n _.get(state, ['v2EmployeeSignup', 'pending'], 0) > 0 ||\n _.get(\n state,\n ['v2EmployeeSignup', 'mutations', REGISTER_EMPLOYEE_WITH_DOMAIN, 'pending'],\n 0,\n ) > 0;\n\nexport const getSetDetailsRequestLoadingStatus = (state) =>\n state.v2EmployeeSignup.pending > 0 ||\n state.v2EmployeeSignup.mutations[SET_DETAILS_FOR_USER].pending > 0;\n\nexport const getInviteEmployeeUserData = (state) =>\n state.employeeSignup.inviteUser;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { AnchorLink } from '../../../componentsV2/core/Link';\nimport Typography from '../../../componentsV2/core/Typography';\nimport themeV2 from '../../../componentsV2/theme';\nimport { TERMS_URL, PRIVACY_URL } from '../../../config';\n\nconst styles = (theme) => ({\n terms: {\n color: themeV2.palette.lightGray3,\n },\n link: {\n color: themeV2.palette.darkGray3,\n fontSize: 12,\n '&:hover': {\n color: `${themeV2.palette.darkGray3} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.darkGray3} !important`,\n },\n },\n});\n\nfunction TermsAndPrivacy(props) {\n const { classes, buttonText } = props;\n return (\n
\n \n By clicking the "{buttonText}" button, you’re agreeing to our{' '}\n \n Terms of Service\n {' '}\n and{' '}\n \n Privacy Policy\n \n .\n \n
\n );\n}\n\nTermsAndPrivacy.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(styles)(TermsAndPrivacy);\n","import { LeftDrawerCollapsibleNavItemProps } from '../../atomic/molecules/FlowLeftDrawerCollapsibleNavigation/types';\nimport { PageType } from '../../interfaces/Feed';\nimport { MemberRole } from '../../interfaces/member';\nimport { TaskCategories, MiscTaskCategories } from '../../interfaces/notebook';\nimport {\n ACTION_EVENTS,\n FEED_ANALYTICS_EVENTS,\n FLOW_BUILDER_EVENTS,\n LEFT_DRAWER_ANALYTICS_EVENTS as LEFT_DRAWER_EVENTS,\n MAIN_FEED_ACTION_BAR_EVENTS,\n NOTEBOOK_EVENTS,\n NOTEBOOK_TASK_EVENTS,\n PARTICIPATION_ANALYTICS_EVENTS as PARTICIPATION_EVENTS,\n POST_ANALYTICS_EVENTS,\n RIGHT_DRAWER_EVENTS,\n} from './constants';\n\nexport enum RegistrationMethods {\n Google = 'Google',\n ADP = 'ADP',\n Slack = 'Slack',\n Office365 = 'Office365',\n Email = 'Email',\n}\n\nexport type EventPropsType = {\n [key: string]:\n | null\n | Date\n | string\n | number\n | boolean\n | undefined\n | Array\n | Record;\n};\n\nexport type BaseEventProps = {\n show?: string;\n error?: string;\n action?: string;\n event?: typeof ACTION_EVENTS[keyof typeof ACTION_EVENTS];\n};\n\nexport interface UserProps {\n $name: string;\n $email: string;\n $distinct_id: string;\n 'Registration Date': string;\n 'Registration Method': RegistrationMethods;\n 'Company Plan Type': string;\n 'Allowance Points Available': number;\n isAdmin: boolean;\n isManager: boolean;\n Department: string;\n 'Allowance Type': string;\n 'User Status': string;\n 'Total Allowance': number;\n 'Total Points Given': number;\n canSendPrivate: boolean;\n Platform: string;\n Birthday: string;\n Anniversary: string;\n isPaid: boolean;\n planType: string;\n}\n\nexport interface SuperProps {\n Name: string;\n Email: string;\n 'Company Plan Type': string;\n 'Allowance Points Available': number;\n canSendPrivate: boolean;\n Platform: string;\n isAdmin: boolean;\n isManager: boolean;\n Department: string;\n 'Allowance Type': string;\n 'User Status': string;\n 'Total Allowance': number;\n 'Total Points Given': number;\n active: number;\n completed: number;\n archived: number;\n}\n\nexport type LeftDrawerEventProps = BaseEventProps & {\n notificationTypeClicked?: undefined | string;\n flowId?: string;\n flowName?: string;\n flowPerms?: FlowPermissions[];\n flowIsDue?: boolean;\n flowOccurrenceRunning?: boolean;\n isArchived?: boolean;\n postId?: string;\n responseId?: string;\n};\n\nexport type PostAnalyticsEventProps = BaseEventProps & {\n flowId: string;\n flowName?: string;\n isArchived?: boolean;\n feedViewed: PageType;\n postId: string | null;\n numPostComments: number;\n numPostReactions: number;\n responseId: string | null;\n flowPerms?: 'owner' | 'participant' | 'viewer';\n commentMediaAttached?: 'mention' | 'gif' | 'emoji';\n};\n\nexport type FlowBuilderEventProps = BaseEventProps & {\n dueDate?: number;\n shortcut?: boolean;\n flowTitle?: string;\n numBlocks?: number;\n flowEmoji?: string;\n lastEditDate?: Date;\n templateId?: string;\n templateName?: string;\n flowOwnerId?: string;\n flowEdited?: boolean;\n actionSelected?: string;\n numOccurrences?: number;\n flowOwnerEmail?: string;\n flowDescription?: string;\n lastOccurrenceDate?: Date;\n triggerRecurrence?: string;\n firstOccurrenceDate?: Date;\n numBlocksRequired?: number;\n contentBlockType?: string[];\n triggerTypeSelected?: string;\n flowSectionsEdited?: string[];\n flowOwnerPermissions?: string[];\n viewerCriteriaSelected?: string[];\n triggerSettingsConfigured?: string;\n participantCriteriaSelected?: string[];\n scheduleStartDateSelected?: string;\n scheduleStartTimeSelected?: string;\n scheduleEndDateSelected?: string;\n scheduleEndTimeSelected?: string;\n recurrenceSelected?: string;\n dueDateSelected?: string;\n};\n\nexport type OnboardingEventProps = BaseEventProps & {\n path?: string;\n templateId?: string;\n calendarType?: string;\n meetingTitle?: string;\n meetingRecurs?: boolean;\n meetingParticipants?: string[];\n};\n\nexport type FlowInsightsEventProps = BaseEventProps & {\n tab?: string;\n blockType?: string;\n specificFilter?: string[];\n filter?: Record;\n};\n\nexport type NotebookAnalyticsProps = BaseEventProps &\n NotebookSectionalAnalyticsProps &\n NotebookTaskAnalyticsProps;\n\nexport type DrawerTabType = 'filter' | 'about' | 'people' | 'leaderboards';\n\nexport type RightDrawerEventProps = BaseEventProps & {\n feedViewed: PageType;\n drawerTabViewed: DrawerTabType;\n filterApplied?: Array | string;\n flowId?: string;\n flowPerms?: Array | string;\n flowName?: string;\n};\nexport type FlowPermissions = 'owner' | 'participant' | 'viewer';\n\nexport type FeedAnalyticsEventProps = BaseEventProps & {\n feedSort?: string;\n flowPerms?: FlowPermissions[] | null;\n flowName?: string;\n};\nexport type ParticipationAnalyticsEventProps = {\n flowId: string;\n flowName?: string;\n templateId?: string;\n event: Array | string;\n flowOwnerId: string;\n flowOwnerEmail: string;\n flowOwnerPermissions: Array;\n numBlocks: number;\n numBlocksRequired: number;\n blockTypes: Array | null;\n numOccurrences: number | null;\n shortcut: boolean | null;\n trigger: string;\n numVersions: number;\n firstOccurrenceDate: string;\n lastOccurrenceDate: string;\n publishedDate: string;\n flowPerms: FlowPermissions[] | null;\n};\n\nexport type LeftDrawerEventNameType =\n typeof LEFT_DRAWER_EVENTS[keyof typeof LEFT_DRAWER_EVENTS];\nexport type PostEventNameType =\n typeof POST_ANALYTICS_EVENTS[keyof typeof POST_ANALYTICS_EVENTS];\nexport type FlowBuilderEventNameType =\n typeof FLOW_BUILDER_EVENTS[keyof typeof FLOW_BUILDER_EVENTS];\nexport type FeedEventNameType =\n typeof FEED_ANALYTICS_EVENTS[keyof typeof FEED_ANALYTICS_EVENTS];\nexport type ParticipationEventNameType =\n typeof PARTICIPATION_EVENTS[keyof typeof PARTICIPATION_EVENTS];\nexport type RightDrawerEventNameType =\n typeof RIGHT_DRAWER_EVENTS[keyof typeof RIGHT_DRAWER_EVENTS];\n// eslint-disable-next-line max-len\nexport type MainFeedActionBarEventNameType =\n typeof MAIN_FEED_ACTION_BAR_EVENTS[keyof typeof MAIN_FEED_ACTION_BAR_EVENTS];\n\nexport type NotebookEventNameType =\n typeof NOTEBOOK_EVENTS[keyof typeof NOTEBOOK_EVENTS];\nexport type NotebookTaskEventNameType =\n typeof NOTEBOOK_TASK_EVENTS[keyof typeof NOTEBOOK_TASK_EVENTS];\n\nexport type NotebookSectionalAnalyticsProps = {\n section?: TaskCategories | MiscTaskCategories;\n todayTasks?: string[];\n overdueTasks?: string[];\n upcomingTasks?: string[];\n unscheduledTasks?: string[];\n completedTasks?: string[];\n archivedTasks?: string[];\n lastSection?: TaskCategories | MiscTaskCategories;\n type?: string;\n action?: string;\n show?: string;\n error?: string;\n source?: 'notebook';\n subSource?: string;\n errorIds?: string[];\n};\n\nexport type NotebookTaskAnalyticsBaseProps = {\n taskId?: string;\n creatorId?: string;\n assigneeId?: string;\n dueDate?: string;\n creationDate?: string;\n source?: 'notebook';\n subSource?: TaskCategories;\n agent?: string;\n type?: string;\n title?: string;\n status?: string;\n lastTitle?: string;\n lastDueDate?: string;\n lastStatus?: string;\n lastAssigneeId?: string;\n titleLinkURL?: string[];\n tab?: string;\n};\n\nexport type NotebookTaskAnalyticsProps = NotebookTaskAnalyticsBaseProps & {\n action?: NotebookTaskEventNameType;\n show?: NotebookTaskEventNameType;\n error?: NotebookTaskEventNameType;\n};\n\nexport type InviteMembersEventProps = BaseEventProps & {\n inviterId?: string;\n inviteesEmails?: string[];\n inviterRole?: MemberRole[];\n source?: string;\n subSource?: string | string[];\n};\n\nexport type TemplateGalleryEventsProps = BaseEventProps & {\n templateId?: string;\n templateName?: string;\n searchQuery?: string;\n filterApplied?: string;\n source?: string;\n};\n\nexport type TrackLeftDrawerEventProps = LeftDrawerEventProps &\n Partial;\n\nexport type ShareSheetEventProps = BaseEventProps & {\n shareFlowStartSource?: string;\n modalVariant?: string;\n participantCriteriaSelected?: any;\n viewerCriteriaSelected?: any;\n newLinkSettings?: any;\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\nimport Layout from '../../Layout/onboarding';\nimport VerticallyCenteredLayout from '../../Layout/verticallyCentered';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport TextField from '../../../componentsV2/core/TextField';\nimport Button from '../../../componentsV2/core/Button';\nimport Link from '../../../componentsV2/core/Link';\nimport themeV2 from '../../../componentsV2/theme';\n\nimport { createAccount } from '../../modules/onboarding';\nimport { getRequestLoadingStatus } from '../../modules/onboarding/selectors';\nimport { getSlackConfigInfo } from '../../modules/slackOnboard/selectors';\nimport { registerEmployeeWithDomain } from '../../modules/employeeSignup';\nimport { getRegisterRequestLoadingStatus } from '../../modules/employeeSignup/selectors';\nimport { authorizeAddToSlack } from '../../modules/slackOnboard';\nimport SSOComponent from '../../../pages/signin/SSOComponent';\n\nimport { APP_URL } from '../../../config';\nimport RoutesList from '../../routes/routesList';\nimport { openIntercomMessenger } from '../../../Utils/Intercom';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport TermsAndPrivacy from '../shared/TermsAndPrivacy';\nimport { isValidEmail } from '../../../Utils/validation';\nimport { EventType, trackEvent } from '../../../Utils/analytics/Metrics';\nimport TextDivider from '../../../componentsV2/custom/TextDivider';\nimport { SLACK_ERROR_MESSAGES, SLACK_ERROR_TYPES } from '../../utils/Slack';\nimport LoadingPulse from '../../../screens/shared/LoadingPulse';\nimport * as Analytics from '../../../Utils/analytics';\nimport { ANALYTICS_EVENTS } from '../../../Utils/analytics/constants';\nimport { RegistrationMethods } from '../../../Utils/analytics/interfaces';\n\nconst ERROR_STATES = {\n EMAIL: 'email',\n DOMAIN: 'domain',\n};\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 500,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n footer: {},\n link: {\n fontSize: 12,\n },\n terms: {\n color: themeV2.palette.lightGray1,\n },\n buttonStyle: {\n color: `${themeV2.palette.white} !important`,\n textDecoration: 'none',\n width: 360,\n [theme.breakpoints.down('xs')]: {\n width: 200,\n },\n marginTop: 30,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.white} !important`,\n },\n },\n});\n\nconst AdapterCustomLink = (to) =>\n React.forwardRef((props, ref) => );\n\nclass EnterEmail extends Component {\n constructor(props) {\n super(props);\n this.state = {\n email: '',\n emailErrors: null,\n emailTouched: false,\n domainEmployer: null,\n ssoLoading: false,\n ssoType: null,\n slackVerifying: false,\n };\n }\n\n onSigninClick = (e) => {\n e.preventDefault();\n let { email } = this.state;\n email = email.trim();\n\n let goThrough = true;\n if (!email) {\n this.setState({ emailErrors: 'Email is required' });\n goThrough = false;\n }\n\n const isEmailValid = isValidEmail(email);\n if (isEmailValid === false) {\n this.setState({ emailErrors: 'Enter a valid email' });\n goThrough = false;\n }\n\n if (goThrough) {\n this.props\n .createAccount({ email })\n .then((successAction) => {\n const { data } = successAction.data;\n const { history } = this.props;\n\n Analytics.trackEvent(\n ANALYTICS_EVENTS.ACCOUNT_SIGN_UP,\n {\n $distinct_id: data.userId,\n $email: email,\n 'Registration Method': RegistrationMethods.Email,\n 'Registration Date': new Date().toString(),\n },\n {\n 'Registration Method': RegistrationMethods.Email,\n },\n {\n Email: email,\n },\n );\n trackEvent(EventType.REGISTRATION, { userId: data.userId });\n history.push(`${RoutesList.ENTER_CODE}/${data.userId}`);\n })\n .catch((errorOrAbortAction) => {\n const error = handleErrorAction(errorOrAbortAction);\n if (error.code === 100) {\n const emailError = error.values.email;\n if (emailError) {\n const { history } = this.props;\n if (emailError.msg === 'Email exists, sign in') {\n history.push(\n `${RoutesList.ENTER_EMAIL}?error=${ERROR_STATES.EMAIL}`,\n );\n } else if (\n emailError.msg.includes('Account exists') ||\n emailError.msg.includes('invite email and sign up')\n ) {\n history.push(\n `${RoutesList.ENTER_EMAIL}?error=${ERROR_STATES.DOMAIN}`,\n );\n this.setState({ emailErrors: 'Domain exists' });\n } else {\n this.setState({ emailErrors: emailError.msg });\n }\n }\n } else {\n this.setState({ emailErrors: error.message });\n }\n });\n }\n };\n\n handleSSOClick = (ssoOption) => {\n this.setState({ ssoLoading: true, ssoType: ssoOption });\n };\n\n getRedirectUrl = () => APP_URL;\n\n handleEmailChange = (event) => {\n this.setState({\n email: event.target.value,\n emailErrors: null,\n emailTouched: true,\n });\n };\n\n chatClick = (e) => {\n e.preventDefault();\n openIntercomMessenger();\n };\n\n renderErrorLayout = (errorState) => {\n const { classes } = this.props;\n\n let headeText = 'Sorry, this domain is already in use!';\n let subText = 'You can create a new account using a different email';\n let buttonText = 'Use Different Email';\n let RedirectComponent = AdapterCustomLink(RoutesList.ENTER_EMAIL);\n if (errorState === ERROR_STATES.EMAIL) {\n headeText = 'Whoops, you already have an account!';\n subText = 'What would you like to do?';\n buttonText = 'Go Back to Sign In';\n RedirectComponent = AdapterCustomLink(RoutesList.SIGN_IN);\n }\n\n return (\n \n \n
\n \n {headeText}\n \n
\n
\n \n {subText}\n \n
\n
\n \n {buttonText}\n \n
\n
\n \n Not sure about this,{' '}\n \n chat with us now\n \n \n
\n
\n
\n );\n };\n\n render() {\n const { location } = this.props;\n const { slackVerifying, ssoLoading, ssoType } = this.state;\n const params = new URLSearchParams(location.search);\n const errorState = params.get('error');\n let slackErrorMessage = null;\n if (\n errorState === ERROR_STATES.DOMAIN ||\n errorState === ERROR_STATES.EMAIL\n ) {\n return this.renderErrorLayout(errorState);\n }\n if (errorState === SLACK_ERROR_TYPES.ACCESS_DENIED) {\n slackErrorMessage = SLACK_ERROR_MESSAGES.ACCESS_DENIED;\n }\n\n const { classes, loading } = this.props;\n const { email, emailErrors, emailTouched } = this.state;\n const isButtonDisabled = !emailTouched || !!emailErrors;\n\n return (\n \n {slackVerifying || ssoLoading ? (\n \n \n {ssoLoading ? `Connecting to ${ssoType}` : 'Verifying Slack'}\n \n \n \n ) : (\n <>\n \n
\n
\n
\n \n Create a new Assembly\n \n \n Please confirm your email below or simply choose your\n preferred authenticator to get started with your Assembly.\n \n
\n \n
\n {slackErrorMessage && (\n \n {slackErrorMessage}\n \n )}\n \n \n \n {loading ? 'Confirming...' : 'Confirm'}\n \n \n Already an Assembly member?{' '}\n Sign in\n \n \n
\n \n
\n
\n {/* */}\n \n )}\n
\n );\n }\n}\n\nEnterEmail.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getRequestLoadingStatus(state),\n slackConfigInfo: getSlackConfigInfo(state),\n signupRequestLoading: getRegisterRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, {\n createAccount,\n registerEmployeeWithDomain,\n authorizeAddToSlack,\n})(withStyles(styles)(EnterEmail));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component, PureComponent } from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport themeV2 from '../../theme';\n\n// keyCode constants\nconst BACKSPACE = 8;\nconst LEFT_ARROW = 37;\nconst RIGHT_ARROW = 39;\nconst DELETE = 46;\n\n// Doesn't really check if it's a style Object\n// Basic implemenetation to check if it's not a string\n// of classNames and is an Object\n// TODO: Better implementation\nconst isStyleObject = (obj) => typeof obj === 'object';\n\nconst singleStyle = (theme) => ({\n input: {\n textAlign: 'center',\n width: 68,\n height: 60,\n fontWeight: themeV2.typography.fontWeightBold,\n fontSize: 34,\n border: `solid 1px ${themeV2.palette.lightGray1}`,\n borderWidth: '1px 0.5px 1px 0.5px',\n '&:focus': {\n outline: 'none',\n boxShadow: '0 0 3pt 2pt rgba(255, 68, 0, 0.2)',\n zIndex: 1000,\n },\n [theme.breakpoints.down('xs')]: {\n width: 50,\n },\n },\n firstInput: {\n borderTopLeftRadius: 10,\n borderBottomLeftRadius: 10,\n borderWidth: '1px 0.5px 1px 1px',\n '&:focus': {\n outline: 'none',\n boxShadow: '0 0 3pt 2pt rgba(255, 68, 0, 0.2)',\n borderTopLeftRadius: 10,\n borderBottomLeftRadius: 10,\n },\n },\n lastInput: {\n borderTopRightRadius: 10,\n borderBottomRightRadius: 10,\n borderWidth: '1px 1px 1px 0.5px',\n '&:focus': {\n outline: 'none',\n borderTopRightRadius: 10,\n borderBottomRightRadius: 10,\n },\n },\n errorStyle: {\n borderColor: themeV2.palette.red2,\n color: themeV2.palette.red2,\n },\n});\n\nclass SingleOtpInputWithoutStyles extends PureComponent {\n // Focus on first render\n // Only when shouldAutoFocus is true\n componentDidMount() {\n const {\n input,\n props: { focus, shouldAutoFocus },\n } = this;\n\n if (input && focus && shouldAutoFocus) {\n input.focus();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n input,\n props: { focus },\n } = this;\n\n // Check if focusedInput changed\n // Prevent calling function if input already in focus\n if (prevProps.focus !== focus && input && focus) {\n input.focus();\n input.select();\n }\n }\n\n getClasses = (...classes) =>\n classes.filter((c) => !isStyleObject(c) && c !== false).join(' ');\n\n render() {\n const {\n separator,\n isLastChild,\n isFirstChild,\n inputStyle,\n focus,\n isDisabled,\n hasErrored,\n errorStyle,\n focusStyle,\n disabledStyle,\n shouldAutoFocus,\n isInputNum,\n value,\n classes,\n ...rest\n } = this.props;\n\n const numValueLimits = isInputNum ? { min: 0, max: 9 } : {};\n\n return (\n
\n {\n this.input = input;\n }}\n disabled={isDisabled}\n value={value || ''}\n {...rest}\n />\n {!isLastChild && separator}\n
\n );\n }\n}\n\nconst SingleOtpInput = withStyles(singleStyle)(SingleOtpInputWithoutStyles);\n\n/* eslint-disable */\nclass OtpInput extends Component {\n static defaultProps = {\n numInputs: 4,\n onChange: (otp) => {},\n isDisabled: false,\n shouldAutoFocus: false,\n value: '',\n };\n\n state = {\n activeInput: 0,\n };\n\n getOtpValue = () =>\n this.props.value ? this.props.value.toString().split('') : [];\n\n // Helper to return OTP from input\n handleOtpChange = (otp) => {\n const { onChange, isInputNum } = this.props;\n const otpValue = otp.join('');\n onChange(isInputNum ? Number(otpValue) : otpValue);\n };\n\n // Focus on input by index\n focusInput = (input) => {\n const { numInputs } = this.props;\n const activeInput = Math.max(Math.min(numInputs - 1, input), 0);\n\n this.setState({ activeInput });\n };\n\n // Focus on next input\n focusNextInput = () => {\n const { activeInput } = this.state;\n this.focusInput(activeInput + 1);\n };\n\n // Focus on previous input\n focusPrevInput = () => {\n const { activeInput } = this.state;\n this.focusInput(activeInput - 1);\n };\n\n // Change OTP value at focused input\n changeCodeAtFocus = (value) => {\n const { activeInput } = this.state;\n const otp = this.getOtpValue();\n otp[activeInput] = value[0];\n\n this.handleOtpChange(otp);\n };\n\n // Handle pasted OTP\n handleOnPaste = (e) => {\n e.preventDefault();\n const { numInputs } = this.props;\n const { activeInput } = this.state;\n const otp = this.getOtpValue();\n\n // Get pastedData in an array of max size (num of inputs - current position)\n const pastedData = e.clipboardData\n .getData('text/plain')\n .slice(0, numInputs - activeInput)\n .split('');\n\n // Paste data from focused input onwards\n for (let pos = 0; pos < numInputs; ++pos) {\n if (pos >= activeInput && pastedData.length > 0) {\n otp[pos] = pastedData.shift();\n }\n }\n\n this.handleOtpChange(otp);\n };\n\n handleOnChange = (e) => {\n this.changeCodeAtFocus(e.target.value);\n this.focusNextInput();\n };\n\n // Handle cases of backspace, delete, left arrow, right arrow\n handleOnKeyDown = (e) => {\n if (e.keyCode === BACKSPACE || e.key === 'Backspace') {\n e.preventDefault();\n this.changeCodeAtFocus('');\n this.focusPrevInput();\n } else if (e.keyCode === DELETE || e.key === 'Delete') {\n e.preventDefault();\n this.changeCodeAtFocus('');\n } else if (e.keyCode === LEFT_ARROW || e.key === 'ArrowLeft') {\n e.preventDefault();\n this.focusPrevInput();\n } else if (e.keyCode === RIGHT_ARROW || e.key === 'ArrowRight') {\n e.preventDefault();\n this.focusNextInput();\n }\n };\n\n checkLength = (e) => {\n if (e.target.value.length > 1) {\n e.preventDefault();\n this.focusNextInput();\n }\n };\n\n renderInputs = () => {\n const { activeInput } = this.state;\n const {\n numInputs,\n inputStyle,\n focusStyle,\n separator,\n isDisabled,\n disabledStyle,\n hasErrored,\n errorStyle,\n shouldAutoFocus,\n isInputNum,\n } = this.props;\n const otp = this.getOtpValue();\n const inputs = [];\n\n for (let i = 0; i < numInputs; i++) {\n inputs.push(\n {\n this.setState({ activeInput: i });\n e.target.select();\n }}\n onBlur={() => this.setState({ activeInput: -1 })}\n separator={separator}\n inputStyle={inputStyle}\n focusStyle={focusStyle}\n isLastChild={i === numInputs - 1}\n isFirstChild={i === 0}\n isDisabled={isDisabled}\n disabledStyle={disabledStyle}\n hasErrored={hasErrored}\n errorStyle={errorStyle}\n shouldAutoFocus={shouldAutoFocus}\n isInputNum={isInputNum}\n />,\n );\n }\n\n return inputs;\n };\n\n render() {\n const { containerStyle } = this.props;\n\n return (\n \n {this.renderInputs()}\n \n );\n }\n}\n\nexport default OtpInput;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CheckIcon from '@material-ui/icons/Check';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Link from '../../../componentsV2/core/Link';\nimport OtpInput from '../../../componentsV2/core/OTPInput/BaseOtpInput';\n\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport { verifyCode, resendCode } from '../../modules/onboarding';\nimport {\n getEmailRegistered,\n getVerifyRequestLoadingStatus,\n getResendCodeRequestLoadingStatus,\n} from '../../modules/onboarding/selectors';\nimport RoutesList from '../../routes/routesList';\nimport themeV2 from '../../../componentsV2/theme';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n height: 593,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n otpContainerStyle: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 20,\n marginBottom: 20,\n },\n body: {\n flex: 1,\n },\n link: {\n fontSize: 12,\n },\n secondaryDivStyle: {\n marginBottom: 20,\n fontWeight: 500,\n fontSize: 14,\n display: 'flex',\n alignItems: 'center',\n },\n progresStyle: {\n color: themeV2.palette.greenLight,\n },\n errorDivStyle: {\n color: themeV2.palette.red2,\n },\n successDivStyle: {\n color: themeV2.palette.greenLight,\n },\n});\n\nclass EnterCode extends Component {\n constructor(props) {\n super(props);\n this.state = {\n code: '',\n codeErrors: null,\n codeVerified: false,\n resendCodeSuccess: false,\n };\n }\n\n handleOtpChange = (code) => {\n this.setState(\n () => ({ code }),\n () => {\n if (code.length === 6) {\n this.verifyCode();\n }\n },\n );\n };\n\n resendCode = (e) => {\n e.preventDefault();\n const { match } = this.props;\n const { userId } = match.params;\n\n this.props\n .resendCode({ userId })\n .then((successAction) => {\n this.setState({ resendCodeSuccess: true });\n })\n .catch((errorOrAbortAction) => {});\n };\n\n verifyCode = () => {\n let { code } = this.state;\n const { match } = this.props;\n const { userId } = match.params;\n code = code.trim();\n\n this.setState({ codeErrors: null });\n if (userId) {\n this.props\n .verifyCode({ userId, codeToVerify: code })\n .then((successAction) => {\n this.setState({ codeVerified: true });\n const { history } = this.props;\n const newUserId = _.get(successAction, ['data', 'data', '_id'], null);\n history.push(\n `${RoutesList.ENTER_COMPANY_NAME}/${newUserId}?code=${code}`,\n );\n })\n .catch((errorOrAbortAction) => {\n handleErrorAction(errorOrAbortAction);\n this.setState({\n codeErrors:\n 'Whoops, this code doesn’t match what we sent, check your email and try again.',\n });\n });\n }\n };\n\n render() {\n const { classes, match, email, isRequestLoading, isResendRequestLoading } =\n this.props;\n const { code, codeErrors, codeVerified, resendCodeSuccess } = this.state;\n\n const { userId } = match.params;\n if (!userId) {\n return ;\n }\n\n return (\n \n \n
\n
\n \n Check your email\n \n \n You will receive a temporary 6 digit confirmation code at{' '}\n {email ? (\n {email}\n ) : (\n 'your email'\n )}\n , enter it quickly.\n \n
\n \n
\n {codeVerified && (\n
\n \n   \n \n {' '}\n Code verified.\n \n
\n )}\n {isRequestLoading && (\n
\n \n   \n \n {' '}\n Verifying code.\n \n
\n )}\n {codeErrors && !isRequestLoading && (\n
\n
{codeErrors}
\n
\n )}\n \n Keep this window open while checking your email. If you can’t\n find your code, check your spam or junk folder or{' '}\n \n resend code\n \n .\n \n {isResendRequestLoading && (\n
\n \n   \n \n {' '}\n Resending code.\n \n
\n )}\n {resendCodeSuccess && !isResendRequestLoading && (\n
\n \n   \n Code resent.\n
\n )}\n
\n
\n
\n
\n );\n }\n}\n\nEnterCode.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n email: getEmailRegistered(state),\n isRequestLoading: getVerifyRequestLoadingStatus(state),\n isResendRequestLoading: getResendCodeRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, { verifyCode, resendCode })(\n withStyles(styles)(EnterCode),\n);\n","import styled from 'styled-components';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Input from 'react-phone-number-input/input';\n\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const PhoneInput = styled(Input)`\n width: 100%;\n border-radius: 10px;\n margin-top: 18px;\n border: solid 1px ${ThemeV2.palette.lightGray1};\n background-color: ${ThemeV2.palette.white};\n color: ${ThemeV2.palette.darkText};\n font-family: ${ThemeV2.typography.fontFamily};\n font-size: 14px;\n box-sizing: border-box;\n padding: 13px 16px;\n transition: all;\n font-weight: ${ThemeV2.typography.fontWeightRegular};\n\n &:focus,\n &:active {\n outline: none;\n border-color: #80bdff;\n box-shadow: 0 0 0 0.1rem rgba(0, 123, 255, 0.25);\n }\n\n &::placeholder {\n color: currentColor;\n opacity: 0.42;\n }\n`;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\n\nimport { INPUT_HEIGHT, useStyles } from '../../../componentsV2/core/TextField';\n\nimport { PhoneInput } from './styles';\n\nexport interface PhoneFieldProps {\n id: string;\n name: string;\n label: string;\n value: string;\n error: string;\n className?: string;\n helperText: string;\n placeholder: string;\n autoComplete: string;\n onInput: (phone: string) => void;\n onChange: (phone: string) => void;\n rootStyle: Record;\n}\n\nconst PhoneField = ({\n id,\n name,\n label,\n value,\n error,\n onInput,\n onChange,\n rootStyle,\n className,\n helperText,\n placeholder,\n autoComplete,\n}: PhoneFieldProps) => {\n const styleProps = {\n height: INPUT_HEIGHT,\n hasLabel: !!label,\n };\n const classes = useStyles(styleProps);\n return (\n \n \n {error || label}\n \n \n onInput(event.target.value)\n }\n onBlur={(event: React.BaseSyntheticEvent) =>\n onInput(event.target.value)\n }\n classes={{\n root: classes.root,\n input: error ? classes.errorInput : classes.input,\n error: classes.error,\n }}\n />\n {helperText && (\n \n {helperText}\n \n )}\n \n );\n};\n\nconst MemoizedPhoneField = React.memo(PhoneField);\nMemoizedPhoneField.displayName = 'PhoneField';\n\nexport default MemoizedPhoneField;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Redirect, withRouter } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport { withStyles } from '@material-ui/core/styles';\nimport { parsePhoneNumber } from 'react-phone-number-input';\nimport Typography from '../../../componentsV2/core/Typography';\nimport TextField from '../../../componentsV2/core/TextField';\nimport PhoneField from '../../../atomic/molecules/PhoneField';\nimport Button from '../../../componentsV2/core/Button';\n\nimport { userSessionCreatedAction } from '../../../modules/Session';\nimport { checkIfProduction } from '../../../Utils/admin';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport { completeProfile } from '../../modules/onboarding';\nimport {\n getCompleteProfileRequestLoadingStatus,\n getCompanyName,\n getEmailRegistered,\n} from '../../modules/onboarding/selectors';\nimport RoutesList from '../../routes/routesList';\nimport {\n validatePassword,\n validateFullName,\n validatePhoneNumber,\n} from '../../../Utils/validation';\nimport { trackEvent, EventType } from '../../../Utils/analytics/Metrics';\nimport ProgressValidator from '../../../atomic/molecules/ProgressValidator';\nimport ValidationText from '../../../atomic/molecules/ValidationText';\nimport {\n passwordValidators,\n checkPasswordMaxLength,\n checkForNameAndMailId,\n checkPasswordStrength,\n PASSWORD_LANGUAGE,\n} from '../../../Utils/validators/password';\nimport {\n STRENGTH_NONE,\n STRENGTH_STRONG,\n} from '../../../constants/progressValidator';\nimport { ONBOARDING_SETUP } from '../../../constants/routes';\n\nconst styles = (theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n marginBottom24: {\n marginBottom: '24px',\n },\n marginBottom12: {\n marginBottom: '12px',\n },\n body: {\n flex: 1,\n },\n bottomDiv: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n});\n\nclass EnterProfile extends Component {\n constructor(props) {\n super(props);\n this.state = {\n fullName: '',\n fullNameErrors: null,\n fullNameTouched: false,\n password: '',\n passwordErrors: null,\n passwordTouched: false,\n phoneNumber: '+1',\n phoneNumberValue: '',\n phoneNumberErrors: null,\n validationTexts: passwordValidators,\n strength: STRENGTH_NONE,\n };\n }\n\n trackCriteo = (userId, email) => {\n if (!userId || !email) {\n return;\n }\n window.criteo_q = window.criteo_q || [];\n const deviceType = /iPad/.test(navigator.userAgent)\n ? 't'\n : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(\n navigator.userAgent,\n )\n ? 'm'\n : 'd';\n window.criteo_q.push(\n { event: 'setAccount', account: 65430 },\n { event: 'setSiteType', type: deviceType },\n { event: 'setEmail', email },\n {\n event: 'trackTransaction',\n id: userId,\n item: [{ id: '1', price: '0', quantity: 1 }],\n },\n );\n };\n\n onSigninClick = (e) => {\n e.preventDefault();\n let { fullName, password, phoneNumber, phoneNumberValue } = this.state;\n const { companyName, match, mailId, location } = this.props;\n const params = new URLSearchParams(location.search);\n const code = params.get('code');\n const { userId } = match.params;\n fullName = fullName.trim();\n password = password.trim();\n\n let goThrough = true;\n const fullNameErrors = validateFullName(fullName);\n if (fullNameErrors) {\n this.setState({ fullNameErrors });\n goThrough = false;\n }\n\n const PHONE_NUMBER_INVALID_ERROR = 'Phone number is invalid';\n let phoneNumberErrors = validatePhoneNumber(phoneNumber);\n\n if (!phoneNumber && phoneNumberValue && phoneNumberValue.length > 0) {\n phoneNumberErrors = PHONE_NUMBER_INVALID_ERROR;\n }\n\n if (phoneNumberErrors) {\n this.setState({ phoneNumberErrors });\n goThrough = false;\n }\n\n const passwordErrors = validatePassword(password);\n if (passwordErrors) {\n this.setState({ passwordErrors });\n goThrough = false;\n }\n\n const isPasswordReachedMaxLength = checkPasswordMaxLength(password);\n if (isPasswordReachedMaxLength) {\n this.setState({ passwordErrors: PASSWORD_LANGUAGE.charactersLimit });\n goThrough = false;\n }\n\n const hasNameAndMailId = checkForNameAndMailId(password, {\n mailId,\n fullName,\n });\n if (hasNameAndMailId.length > 0) {\n goThrough = false;\n this.setState({\n passwordErrors: PASSWORD_LANGUAGE.emailUsernameSimilar,\n });\n }\n\n if (goThrough) {\n const phone = this.mapPhoneNumberToPhone(phoneNumber);\n this.props\n .completeProfile({\n companyName,\n userId,\n fullName,\n password,\n phone,\n code,\n })\n .then((successAction) => {\n const data = _.get(successAction, ['data', 'data']);\n const { user, token, employer } = data;\n trackEvent(EventType.PROFILE_COMPLETE, {\n userId: user._id,\n employerId: employer._id,\n });\n this.trackCriteo(user._id, user.email);\n this.props.userSessionCreatedAction(user, token);\n const { history } = this.props;\n history.push(ONBOARDING_SETUP);\n })\n .catch((errorOrAbortAction) => {\n handleErrorAction(errorOrAbortAction);\n });\n }\n };\n\n mapPhoneNumberToPhone = (phoneNumber) => {\n if (!phoneNumber || !parsePhoneNumber(phoneNumber)) {\n return null;\n }\n\n const phone = parsePhoneNumber(phoneNumber.toString());\n return {\n countryCode: `+${phone.countryCallingCode}`,\n number: +phone.nationalNumber,\n };\n };\n\n handleNameChange = (event) => {\n this.setState({\n fullName: event.target.value,\n fullNameErrors: null,\n fullNameTouched: true,\n });\n };\n\n handlePhoneNumberInput = (event) => {\n this.setState({ phoneNumberValue: event, phoneNumberErrors: null });\n };\n\n handlePhoneNumberChange = (event) => {\n this.setState({\n phoneNumber: event,\n phoneNumberErrors: null,\n });\n };\n\n handlePasswordChange = (event) => {\n const password = event.target.value;\n\n const { newValidationTexts, newStrength } = checkPasswordStrength(password);\n\n this.setState({\n password: event.target.value,\n passwordErrors: null,\n passwordTouched: true,\n\n validationTexts: newValidationTexts,\n strength: newStrength,\n });\n };\n\n render() {\n const { classes, loading, companyName, match } = this.props;\n const {\n password,\n passwordErrors,\n passwordTouched,\n fullName,\n phoneNumber,\n fullNameTouched,\n fullNameErrors,\n phoneNumberErrors,\n validationTexts,\n strength,\n } = this.state;\n\n const isPasswordStrengthStrong = strength !== STRENGTH_STRONG;\n const isButtonDisabled =\n !passwordTouched ||\n !!passwordErrors ||\n !!phoneNumberErrors ||\n !fullNameTouched ||\n !!fullNameErrors;\n\n const { userId } = match.params;\n if (!userId) {\n return ;\n }\n if (!companyName) {\n return ;\n }\n\n return (\n
\n \n {checkIfProduction() && (\n \n )}\n \n
\n
\n \n Set your name and password\n \n \n \n \n {strength && (\n \n )}\n {validationTexts && (\n \n {validationTexts.map((item) => (\n \n {item.text}\n \n ))}\n
\n )}\n
\n \n Step 1 of 2\n \n \n {loading ? 'Saving...' : 'Save'}\n \n
\n \n
\n \n );\n }\n}\n\nEnterProfile.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getCompleteProfileRequestLoadingStatus(state),\n companyName: getCompanyName(state),\n mailId: getEmailRegistered(state),\n});\n\nexport default withRouter(\n connect(mapStateToProps, { completeProfile, userSessionCreatedAction })(\n withStyles(styles)(EnterProfile),\n ),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Button from '../../../componentsV2/core/Button';\nimport TextField from '../../../componentsV2/core/TextField';\n\nimport { setCompanyName } from '../../modules/onboarding';\nimport { getEmailRegistered } from '../../modules/onboarding/selectors';\nimport RoutesList from '../../routes/routesList';\nimport EnterProfile from './EnterProfile';\nimport Modal from '../../../componentsV2/core/Modal';\nimport { fireConversionForSignup } from '../../../Utils/analytics/gtag';\nimport { INVALID_COMPANY_NAME_ERROR } from '../../../Utils/identity/languages';\nimport { httpRegExp } from '../../../Utils/text';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n height: 593,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n});\n\nclass EnterCompanyName extends Component {\n constructor(props) {\n super(props);\n this.state = {\n companyName: '',\n companyNameErrors: null,\n companyNameTouched: false,\n };\n }\n\n componentDidMount() {\n const { match } = this.props;\n const { userId } = match.params;\n if (userId) {\n fireConversionForSignup(userId);\n }\n }\n\n onCreateCompanyClick = (e) => {\n e.preventDefault();\n const { companyName } = this.state;\n this.props.setCompanyName({ companyName });\n // this.setState({ isEnterProfileOpen: true });\n const { history, match, location } = this.props;\n const { userId } = match.params;\n const params = new URLSearchParams(location.search);\n const code = params.get('code');\n history.push(\n `${RoutesList.ENTER_COMPANY_NAME}/${userId}?setProfile=setName&code=${code}`,\n );\n };\n\n handleChange = (event) => {\n const { value } = event.target;\n\n this.setState({\n companyName: value,\n companyNameErrors: value.match(httpRegExp)\n ? INVALID_COMPANY_NAME_ERROR\n : null,\n companyNameTouched: true,\n });\n };\n\n closeEnterProfileModal = () => {\n // this.setState({\n // isEnterProfileOpen: false,\n // });\n };\n\n render() {\n const { classes, match, location } = this.props;\n const { companyName, companyNameErrors } = this.state;\n\n const { userId } = match.params;\n if (!userId) {\n return ;\n }\n\n const params = new URLSearchParams(location.search);\n const setProfile = params.get('setProfile');\n\n return (\n \n \n
\n
\n
\n \n What’s the name of your company or team?\n \n \n \n Create My Assembly\n \n \n
\n
\n
\n \n {setProfile === 'setName' && (\n \n )}\n \n
\n );\n }\n}\n\nEnterCompanyName.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n email: getEmailRegistered(state),\n});\n\nexport default connect(mapStateToProps, { setCompanyName })(\n withStyles(styles)(EnterCompanyName),\n);\n","import { checkIfProduction } from '../admin';\n\nexport const fireConversionForSignup = (userId: string) => {\n if (checkIfProduction()) {\n const script = document.createElement('script');\n const scriptText = document.createTextNode(`gtag('event', 'conversion', {\n 'send_to': 'AW-979429994/Zp4nCNu03aQBEOrUg9MD',\n 'value': 40.0,\n 'currency': 'USD',\n 'transaction_id': '${userId}',\n });`);\n script.appendChild(scriptText);\n document.body.appendChild(script);\n }\n};\n\nexport const fireConversionForEmployerOnboard = () => {\n if (checkIfProduction()) {\n const script = document.createElement('script');\n const scriptText = document.createTextNode(`gtag('event', 'conversion', {\n 'send_to': 'AW-979429994/IyZ_CJ2YpI4DEOrUg9MD'\n });`);\n script.appendChild(scriptText);\n document.body.appendChild(script);\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport React, { Component } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport noRequireAuth from '../../../containers/hoc/NoAuthentication';\nimport Layout from '../../Layout/onboarding';\nimport VerticallyCenteredLayout from '../../Layout/verticallyCentered';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport TextField from '../../../componentsV2/core/TextField';\nimport Button from '../../../componentsV2/core/Button';\nimport Link, { AnchorLink } from '../../../componentsV2/core/Link';\nimport themeV2 from '../../../componentsV2/theme';\nimport TermsAndPrivacy from '../shared/TermsAndPrivacy';\nimport { openIntercomMessenger } from '../../../Utils/Intercom';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\n\nimport {\n getEmployerName,\n registerEmployeeWithEmail,\n registerEmployeeWithDomain,\n} from '../../modules/employeeSignup';\n\nimport { getRegisterRequestLoadingStatus } from '../../modules/employeeSignup/selectors';\nimport RoutesList from '../../routes/routesList';\nimport { LANDER_URL } from '../../../config';\nimport { isValidEmail } from '../../../Utils/validation';\n\nconst CreateAssemblyLink = React.forwardRef((props, ref) => (\n \n));\n\nconst LanderLink = React.forwardRef((props, ref) => (\n \n));\n\nexport const SET_ASSEMBLY_TYPE = {\n FROM_DOMAIN: 'FROM_DOMAIN',\n FROM_INVITE: 'FROM_INVITE',\n};\n\nexport const ENTER_EMAIL_COMP_STATUS = {\n ERROR: 'error',\n SUCCESS: 'success',\n DOMAIN_RESTRICTED_ERROR: 'domain-restricted',\n DOMAIN_UNAVAILABLE_ERROR: 'domain-unavailable',\n};\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n height: 593,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n footer: {},\n link: {\n fontSize: 12,\n },\n terms: {\n color: themeV2.palette.lightGray1,\n },\n buttonStyle: {\n color: `${themeV2.palette.white} !important`,\n textDecoration: 'none',\n width: 360,\n [theme.breakpoints.down('xs')]: {\n width: 200,\n },\n marginTop: 30,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.white} !important`,\n },\n },\n});\n\nclass EnterEmail extends Component {\n constructor(props) {\n super(props);\n this.state = {\n email: '',\n emailErrors: null,\n emailTouched: false,\n employerName: null,\n message: null,\n domain: null,\n };\n }\n\n componentDidMount = () => {\n const { source } = this.props;\n if (!source) {\n this.loadEmployerDetails();\n }\n };\n\n onSignupClick = (e) => {\n e.preventDefault();\n const { source } = this.props;\n const { companyId } = this.props.match.params;\n let { email } = this.state;\n email = email.trim();\n\n let goThrough = true;\n if (!email) {\n this.setState({ emailErrors: 'Email is required' });\n goThrough = false;\n }\n\n if (!isValidEmail(email)) {\n this.setState({ emailErrors: 'Enter a valid email' });\n goThrough = false;\n }\n\n if (goThrough) {\n if (source === SET_ASSEMBLY_TYPE.FROM_DOMAIN) {\n this.props\n .registerEmployeeWithDomain({ email })\n .then((successAction) => {\n const { history } = this.props;\n history.push(\n `${history.location.pathname}?status=${ENTER_EMAIL_COMP_STATUS.SUCCESS}`,\n );\n })\n .catch((errorOrAbortAction) => {\n const { history } = this.props;\n const error = handleErrorAction(errorOrAbortAction);\n if (error.code === 100) {\n const emailError = error.values.email;\n if (emailError) {\n this.setState({ emailErrors: emailError.msg });\n }\n const { msg } = emailError;\n if (msg === 'You will need an invite with this email') {\n history.push(\n `${history.location.pathname}?status=${ENTER_EMAIL_COMP_STATUS.DOMAIN_RESTRICTED_ERROR}`,\n );\n } else if (msg.includes('No account exists')) {\n const { domain } = error.values;\n this.setState(\n () => ({\n domain,\n }),\n () => {\n history.push(\n `${history.location.pathname}?status=${ENTER_EMAIL_COMP_STATUS.DOMAIN_UNAVAILABLE_ERROR}`,\n );\n },\n );\n } else {\n this.setState({ emailErrors: msg });\n }\n } else if (error.code === 102) {\n const msg = error.message;\n this.setState({ emailErrors: msg });\n }\n });\n } else {\n this.props\n .registerEmployeeWithEmail({ email, employerId: companyId })\n .then((successAction) => {\n const { history } = this.props;\n history.push(\n `${history.location.pathname}?status=${ENTER_EMAIL_COMP_STATUS.SUCCESS}`,\n );\n })\n .catch((errorOrAbortAction) => {\n const error = handleErrorAction(errorOrAbortAction);\n if (error.code === 100) {\n const emailError = error.values.email;\n if (emailError) {\n this.setState({ emailErrors: emailError.msg });\n }\n } else if (error.code === 102) {\n this.setState({ emailErrors: error.message });\n }\n });\n }\n }\n };\n\n getPageStatus = () => {\n const { location } = this.props;\n const params = new URLSearchParams(location.search);\n return params.get('status');\n };\n\n chatClick = (e) => {\n e.preventDefault();\n openIntercomMessenger();\n };\n\n loadEmployerDetails = async () => {\n try {\n const { companyId } = this.props.match.params;\n const { data } = await this.props.getEmployerName({\n employerId: companyId,\n });\n const employerName = _.get(data, 'name', null);\n this.setState({\n employerName,\n });\n } catch (err) {\n this.setState(\n () => ({\n message: 'This does not look like a valid Assembly link',\n }),\n () => {\n const { history } = this.props;\n history.push(\n `${history.location.pathname}?status=${ENTER_EMAIL_COMP_STATUS.ERROR}`,\n );\n },\n );\n }\n };\n\n handleEmailChange = (event) => {\n this.setState({\n email: event.target.value,\n emailErrors: null,\n emailTouched: true,\n });\n };\n\n renderDomainErrors = () => {\n const status = this.getPageStatus();\n const { classes } = this.props;\n if (status === ENTER_EMAIL_COMP_STATUS.DOMAIN_RESTRICTED_ERROR) {\n return (\n \n \n
\n \n Sorry, this account is invite only.\n \n
\n
\n \n Ask another cowoker or somone that might be an admin about\n access\n \n
\n
\n \n Back to Assembly for Now\n \n
\n
\n \n Not sure about this,{' '}\n \n chat with us now\n \n \n
\n
\n
\n );\n }\n const { domain } = this.state;\n let message = 'No Assembly with your domain, but you can create one!';\n if (domain) {\n message = `No Assembly with the domain ${domain}, but you can create one!`;\n }\n return (\n \n \n
\n \n Hmm, we didn’t find an active Assembly.\n \n
\n
\n \n {message}\n \n
\n
\n \n Create a new Assembly\n \n
\n
\n \n Not sure about this,{' '}\n \n chat with us now\n \n \n
\n
\n
\n );\n };\n\n renderError = () => {\n const { message } = this.state;\n return (\n \n \n
\n \n Oops! the link is not right\n \n
\n
\n \n {message}\n \n
\n
\n \n Not sure about this,{' '}\n \n chat with us now\n \n \n
\n
\n
\n );\n };\n\n renderSuccess() {\n const { loading } = this.props;\n return (\n \n \n
\n \n Almost done, please check your email.\n \n
\n
\n \n Click on the link in your email to finish signing up -- Don't\n forget to check your spam/junk.\n \n
\n
\n \n {loading ? 'Resending' : 'Resend Email'}\n \n
\n
\n
\n );\n }\n\n renderScreen() {\n const { classes, loading } = this.props;\n const { email, emailErrors, emailTouched, employerName } = this.state;\n const isButtonDisabled = !emailTouched || !!emailErrors;\n const { source } = this.props;\n\n return (\n \n \n
\n
\n
\n \n {source ? 'Find your Assembly' : 'Welcome to Assembly'}\n \n {!source ? (\n \n Join the rest of your{' '}\n \n {employerName || ''}\n {' '}\n team by entering your work email address to confirm your\n account.\n \n ) : (\n \n We'll send you an email to confirm your address and find an\n existing Assembly you can join.\n \n )}\n \n {source === SET_ASSEMBLY_TYPE.FROM_DOMAIN ? (\n \n {loading ? 'Confirming...' : 'Confirm'}\n \n ) : (\n \n {loading ? 'Signing up...' : 'Sign up'}\n \n )}\n\n \n Already an Assembly member?{' '}\n Sign in\n \n \n
\n \n
\n
\n
\n );\n }\n\n render() {\n const { source } = this.props;\n if (source === SET_ASSEMBLY_TYPE.FROM_DOMAIN) {\n return ;\n }\n const status = this.getPageStatus();\n if (status === ENTER_EMAIL_COMP_STATUS.ERROR) {\n return this.renderError();\n }\n if (status === ENTER_EMAIL_COMP_STATUS.SUCCESS) {\n return this.renderSuccess();\n }\n if (\n status === ENTER_EMAIL_COMP_STATUS.DOMAIN_RESTRICTED_ERROR ||\n status === ENTER_EMAIL_COMP_STATUS.DOMAIN_UNAVAILABLE_ERROR\n ) {\n return this.renderDomainErrors();\n }\n return this.renderScreen();\n }\n}\n\nEnterEmail.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getRegisterRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, {\n getEmployerName,\n registerEmployeeWithEmail,\n registerEmployeeWithDomain,\n})(withStyles(styles)(noRequireAuth(EnterEmail)));\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport history from '../../history';\nimport { API_URL_WITH_V2 } from '../../config';\nimport processErrorResponse, {\n ErrorMessages,\n} from '../../containers/helpers/ErrorHelper';\n\nimport { AuthHeaders, HeadersWithoutAuth } from '../shared/HeaderToken';\nimport { authenticateUser } from '../Session';\nimport Logger from '../../Utils/Logger';\nimport { updateMyDetails } from '../Me';\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n GET_DATA_FOR_TOKEN: `${API_URL_WITH_V2}/auth/onboard/token/`,\n SET_PASSWORD_FOR_TOKEN: `${API_URL_WITH_V2}/auth/onboard/employee/inviteToken/setPassword`,\n REGISTER_EMPLOYEE_WITH_EMAIL: `${API_URL_WITH_V2}/auth/onboard/employee/register`,\n VERIFY_MAGIC_LINK: `${API_URL_WITH_V2}/auth/onboard/employee/verify/magiclink/`,\n SET_PASSWORD_VERIFIED_USER: `${API_URL_WITH_V2}/auth/onboard/employee/magiclink/setPassword`,\n USER_PROFILE: `${API_URL_WITH_V2}/auth/onboard/setProfile`,\n};\n\nconst processError = (error = {}, dispatch) => {\n const statusCode = error.response ? error.response.status : 0;\n switch (statusCode) {\n case 400: // bad request\n dispatch(actions.requestFailed(ErrorMessages.serverError));\n break;\n case 401: // Not authorised\n // (Log out user)\n break;\n case 403: // Forbidden\n // redirect to home\n break;\n case 404: // Page not found\n history.push('/404');\n break;\n // mostly my error\n case 422:\n case 500:\n if (error.response && error.response.data) {\n const responseData = error.response.data;\n const msg = processErrorResponse(responseData);\n Logger(msg);\n Logger(responseData);\n dispatch(actions.requestFailed(msg));\n }\n break;\n default:\n dispatch(actions.requestFailed(ErrorMessages.networkError));\n break;\n }\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const UPDATE_INVITE_USER_DATA = 'UPDATE_INVITE_USER_DATA';\nexport const REMOVE_INVITE_USER_DATA = 'REMOVE_INVITE_USER_DATA';\nexport const GOT_DATA_FOR_TOKEN = 'got_data_for_token';\nexport const GOT_EMPLOYER_INFO = 'got_employer_info';\nexport const VERIFIED_MAGIC_LINK = 'verified_magic_link';\nexport const MAGIC_LINK_NOT_VALID = 'magic_link_not_valid';\nexport const SIGNUP_REQUEST_FAILED = 'signup_request_failes';\n// export const REGISTERED_EMPLOYEE_WITH_EMAIL = 'register_employee_with_email';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst updateInviteUserData = (inviteUser) => ({\n type: UPDATE_INVITE_USER_DATA,\n inviteUser,\n});\n\nconst removeInviteUserData = () => ({\n type: UPDATE_INVITE_USER_DATA,\n});\n\nconst gotTokenDetailsSuccess = (user, employer) => ({\n type: GOT_DATA_FOR_TOKEN,\n user,\n employer,\n});\nconst gotEmployerInfoSuccess = (employer) => ({\n type: GOT_EMPLOYER_INFO,\n employer,\n});\n\nconst verifyMagicLinkFailed = (errorMessage) => ({\n type: MAGIC_LINK_NOT_VALID,\n errorMessage,\n});\n\nconst verifiedMagicLinkSuccess = (user, employer) => ({\n type: VERIFIED_MAGIC_LINK,\n user,\n employer,\n});\nconst requestFailed = (errorMessage) => ({\n type: SIGNUP_REQUEST_FAILED,\n error: errorMessage,\n});\n// const registered = (employer) => {\n// return {\n// type: GOT_EMPLOYER_INFO,\n// employer,\n// };\n// };\n\nexport const actions = {\n updateInviteUserData,\n removeInviteUserData,\n gotTokenDetailsSuccess,\n gotEmployerInfoSuccess,\n verifyMagicLinkFailed,\n verifiedMagicLinkSuccess,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const getTokenDetailsAction = (token) => async (dispatch) => {\n try {\n const res = await axios.get(\n `${apiEndpoints.GET_DATA_FOR_TOKEN}${token}`,\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n const user = result.data;\n const company = user.employerId;\n dispatch(actions.gotTokenDetailsSuccess(user, company));\n }\n } catch (error) {\n processError(error, dispatch);\n }\n};\n\nexport const setTokenUserPasswordAction = (props) => {\n const { password, inviteToken } = props;\n return async (dispatch) => {\n try {\n const res = await axios.post(\n apiEndpoints.SET_PASSWORD_FOR_TOKEN,\n { password, inviteToken },\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n const userData = result.data.user;\n updateMyDetails(userData, dispatch);\n localStorage.setItem('token', result.data.token);\n\n // dispatch(sessionActions.authenticated());\n history.push('/signup/name');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\n\nexport const registerEmployeeWithEmail = (props) => {\n Logger(props, false);\n const domain = window.location.hostname;\n const { email, employerId } = props;\n return async (dispatch) => {\n try {\n const res = await axios.post(\n `${apiEndpoints.REGISTER_EMPLOYEE_WITH_EMAIL}`,\n { email, employerId, domain },\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n history.push('/signup/emailsent');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\n\nexport const verifyMagicLink = (magicLink) => async (dispatch) => {\n try {\n const res = await axios.get(\n `${apiEndpoints.VERIFY_MAGIC_LINK}${magicLink}`,\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n const user = result.data;\n const company = user.employerId;\n dispatch(actions.verifiedMagicLinkSuccess(user, company));\n\n history.push('/signup/password/');\n }\n } catch (error) {\n /* Handle the error response */\n // Special case to be handled outside of ProcessError;\n const responseData = error.response.data;\n if (responseData) {\n const msg = processErrorResponse(responseData);\n dispatch(actions.verifyMagicLinkFailed(msg));\n }\n }\n};\nexport const setEmailVerifiedUserPasswordAction = (props) => {\n const { password, userId } = props;\n return async (dispatch) => {\n try {\n const res = await axios.post(\n apiEndpoints.SET_PASSWORD_VERIFIED_USER,\n { password, userId },\n HeadersWithoutAuth(),\n );\n const result = res.data;\n Logger(result, false);\n if (result.success) {\n const userData = result.data.user;\n updateMyDetails(userData, dispatch);\n localStorage.setItem('token', result.data.token);\n\n // dispatch(sessionActions.authenticated());\n history.push('/signup/details');\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\n\nexport const updateUserDetailsAction = (props) => {\n const { firstName, lastName, department, hiredDate, birthDate, username } =\n props; //eslint-disable-line\n\n return async (dispatch) => {\n //eslint-disable-line\n try {\n const res = await axios.post(\n apiEndpoints.USER_PROFILE,\n {\n firstName,\n lastName,\n department,\n hiredDate,\n birthDate,\n username,\n },\n AuthHeaders(),\n );\n\n const result = res.data;\n if (result.success) {\n const userData = result.data;\n authenticateUser(userData, dispatch);\n window.location.href = `${APP_URL}home`;\n }\n } catch (error) {\n processError(error, dispatch);\n }\n };\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case UPDATE_INVITE_USER_DATA:\n return {\n ...state,\n inviteUser: action.inviteUser,\n };\n case REMOVE_INVITE_USER_DATA:\n return {\n ...state,\n inviteUser: null,\n };\n case GOT_DATA_FOR_TOKEN:\n return {\n ...state,\n user: action.user,\n employer: action.employer,\n error: null,\n };\n case GOT_EMPLOYER_INFO:\n return { ...state, employer: action.employer, error: null };\n case MAGIC_LINK_NOT_VALID:\n return { ...state, magicLinkError: action.errorMessage, error: null };\n case VERIFIED_MAGIC_LINK:\n return {\n ...state,\n verifiedUser: action.user,\n employer: action.employer,\n error: null,\n };\n case SIGNUP_REQUEST_FAILED:\n return { ...state, error: action.error };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { Redirect, Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport _ from 'lodash';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Button from '../../../componentsV2/core/Button';\nimport TextField from '../../../componentsV2/core/TextField';\nimport TermsAndPrivacy from '../shared/TermsAndPrivacy';\nimport VerticallyCenteredLayout from '../../Layout/verticallyCentered';\n\nimport {\n setProfileForEmployee,\n setProfileForInviteToken,\n getInviteTokenVerified,\n} from '../../modules/employeeSignup';\nimport { getSetProfileRequestLoadingStatus } from '../../modules/employeeSignup/selectors';\nimport { actions as employeeSignupActions } from '../../../modules/onboarding/EmployeeSignup';\nimport {\n handleUserSignin,\n userSessionCreatedAction,\n} from '../../../modules/Session';\nimport RoutesList from '../../routes/routesList';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport { validatePassword, validateFullName } from '../../../Utils/validation';\nimport noRequireAuth from '../../../containers/hoc/NoAuthentication';\n\nimport ProgressValidator from '../../../atomic/molecules/ProgressValidator';\nimport ValidationText from '../../../atomic/molecules/ValidationText';\nimport {\n passwordValidators,\n checkPasswordMaxLength,\n checkForNameAndMailId,\n checkPasswordStrength,\n PASSWORD_LANGUAGE,\n} from '../../../Utils/validators/password';\nimport {\n STRENGTH_NONE,\n STRENGTH_STRONG,\n} from '../../../constants/progressValidator';\n\nexport const SET_PROFILE_TYPES = {\n FROM_USER_ID: 'FROM_USER_ID',\n FROM_INVITE_TOKEN: 'FROM_INVITE_TOKEN',\n};\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n height: 593,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n marginBottom24: {\n marginBottom: 24,\n },\n marginBottom12: {\n marginBottom: '12px',\n },\n bottomDiv: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n});\n\nclass EnterProfile extends Component {\n constructor(props) {\n super(props);\n this.state = {\n fullName: '',\n fullNameErrors: null,\n fullNameTouched: false,\n password: '',\n passwordErrors: null,\n passwordTouched: false,\n invalidInviteToken: false,\n\n validationTexts: passwordValidators,\n strength: STRENGTH_NONE,\n };\n }\n\n componentDidMount() {\n const { match, source } = this.props;\n const { inviteToken } = match.params;\n if (source === SET_PROFILE_TYPES.FROM_INVITE_TOKEN) {\n this.props\n .getInviteTokenVerified({ inviteToken })\n .then((successAction) => {\n const user = _.get(successAction, ['data', 'data'], null);\n if (user) {\n this.props.updateInviteUserData(user);\n this.setState({\n fullName: `${user.firstName} ${user.lastName}`,\n fullNameTouched: true,\n });\n }\n })\n .catch((errorOrAbortAction) => {\n this.setState({ invalidInviteToken: true });\n });\n }\n }\n\n onNextClick = (e) => {\n e.preventDefault();\n let { fullName, password } = this.state;\n const { match, source } = this.props;\n const { userId, inviteToken } = match.params;\n fullName = fullName.trim();\n password = password.trim();\n\n let goThrough = true;\n const fullNameErrors = validateFullName(fullName);\n if (fullNameErrors) {\n this.setState({ fullNameErrors });\n goThrough = false;\n }\n\n const passwordErrors = validatePassword(password);\n if (passwordErrors) {\n this.setState({ passwordErrors });\n goThrough = false;\n }\n\n const isPasswordReachedMaxLength = checkPasswordMaxLength(password);\n if (isPasswordReachedMaxLength) {\n this.setState({ passwordErrors: PASSWORD_LANGUAGE.charactersLimit });\n goThrough = false;\n }\n\n const hasName = checkForNameAndMailId(password, {\n fullName,\n });\n if (hasName.length > 0) {\n goThrough = false;\n this.setState({\n passwordErrors: PASSWORD_LANGUAGE.emailUsernameSimilar,\n });\n }\n\n if (goThrough) {\n if (source === SET_PROFILE_TYPES.FROM_USER_ID) {\n this.props\n .setProfileForEmployee({ userId, fullName, password })\n .then((successAction) => {\n const data = _.get(successAction, ['data', 'data']);\n this.loginAndRedirectUser(data);\n })\n .catch((errorOrAbortAction) => {\n handleErrorAction(errorOrAbortAction);\n });\n } else {\n this.props\n .setProfileForInviteToken({ inviteToken, fullName, password })\n .then((successAction) => {\n const data = _.get(successAction, ['data', 'data']);\n this.loginAndRedirectUser(data);\n })\n .catch((errorOrAbortAction) => {\n handleErrorAction(errorOrAbortAction);\n });\n }\n }\n };\n\n loginAndRedirectUser = (data) => {\n const { user, token } = data;\n this.props.userSessionCreatedAction(user, token);\n handleUserSignin(user);\n };\n\n handleNameChange = (event) => {\n this.setState({\n fullName: event.target.value,\n fullNameErrors: null,\n fullNameTouched: true,\n });\n };\n\n handlePasswordChange = (event) => {\n const password = event.target.value;\n\n const { newValidationTexts, newStrength } = checkPasswordStrength(password);\n\n this.setState({\n password: event.target.value,\n passwordErrors: null,\n passwordTouched: true,\n\n validationTexts: newValidationTexts,\n strength: newStrength,\n });\n };\n\n redirectToSignup = () => {\n return ;\n };\n\n renderInvalidToken = () => {\n return (\n \n \n
\n \n Your invite is invalid\n \n
\n
\n \n Invite token is invalid, try contacting your Admin.\n \n
\n
\n \n Not sure about this,{' '}\n \n chat with us now\n \n \n
\n
\n
\n );\n };\n\n render() {\n const { classes, loading, match, source } = this.props;\n const {\n password,\n passwordErrors,\n passwordTouched,\n fullName,\n fullNameTouched,\n fullNameErrors,\n invalidInviteToken,\n validationTexts,\n strength,\n } = this.state;\n\n const isPasswordStrengthStrong = strength !== STRENGTH_STRONG;\n const isButtonDisabled =\n !passwordTouched ||\n !!passwordErrors ||\n !fullNameTouched ||\n !!fullNameErrors;\n\n const { userId, inviteToken } = match.params;\n if (!source) {\n return this.redirectToSignup();\n }\n if (source === SET_PROFILE_TYPES.FROM_USER_ID && !userId) {\n return this.redirectToSignup();\n }\n if (source === SET_PROFILE_TYPES.FROM_INVITE_TOKEN && !inviteToken) {\n return this.redirectToSignup();\n }\n\n if (invalidInviteToken) {\n return this.renderInvalidToken();\n }\n\n return (\n \n \n
\n
\n
\n \n Set your name and password\n \n \n \n {strength && (\n \n )}\n {validationTexts && (\n \n {validationTexts.map((item) => (\n \n {item.text}\n \n ))}\n
\n )}\n
\n \n Step 1 of 2\n \n \n {loading ? 'Saving...' : 'Next'}\n \n
\n \n
\n \n \n
\n
\n );\n }\n}\n\nEnterProfile.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n loading: getSetProfileRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, {\n setProfileForEmployee,\n setProfileForInviteToken,\n getInviteTokenVerified,\n userSessionCreatedAction,\n updateInviteUserData: employeeSignupActions.updateInviteUserData,\n})(withStyles(styles)(noRequireAuth(EnterProfile)));\n","import MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core/styles';\nimport themeV2 from '../../../theme';\n\nconst StyledMenuItem = withStyles({\n root: {\n fontFamily: themeV2.typography.fontFamily,\n fontSize: 14,\n fontWeight: themeV2.typography.fontWeightMedium,\n color: themeV2.palette.darkText,\n },\n selected: {\n fontWeight: themeV2.typography.fontWeightSemibold,\n },\n})(MenuItem);\n\nexport default StyledMenuItem;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { makeStyles } from '@material-ui/core/styles';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputBase from '@material-ui/core/InputBase';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport MenuItem from '../../core/Menu/MenuItem';\nimport { useStyles, INPUT_HEIGHT } from '../../core/TextField';\nimport themeV2 from '../../theme';\nimport { getMonthsToShow, getDaysForMonth } from '../../../Utils/date';\n\nexport const useSelectStyles = makeStyles((theme) => ({\n dropIcon: {\n color: themeV2.palette.lightGray1,\n marginRight: 10,\n },\n selectMonth: {\n borderRadius: '10px 0px 0px 10px',\n '&:focus': {\n borderRadius: '10px 0px 0px 10px',\n },\n },\n selectDay: {\n borderRadius: '0px 10px 10px 0px',\n '&:focus': {\n borderRadius: '0px 10px 10px 0px',\n },\n },\n}));\n\nexport const useDateSelectStyles = makeStyles((theme) => ({\n dropIcon: {\n color: themeV2.palette.lightGray1,\n marginRight: 10,\n },\n selectMonth: {\n borderRadius: '10px 0px 0px 10px',\n '&:focus': {\n borderRadius: '10px 0px 0px 10px',\n },\n },\n selectDay: {\n borderRadius: '0px 0px 0px 0px',\n '&:focus': {\n borderRadius: '0px 0px 0px 0px',\n },\n },\n selectYear: {\n borderRadius: '0px 10px 10px 0px',\n '&:focus': {\n borderRadius: '0px 10px 10px 0px',\n },\n },\n}));\n\nconst getClassNameforField = (field, classes) => {\n switch (field) {\n case 'day':\n return classes.selectDay;\n case 'year':\n return classes.selectYear;\n case 'month':\n return classes.selectMonth;\n default:\n return classes.selectDay;\n }\n};\n\nfunction SelectInput(props) {\n const {\n id,\n value,\n options,\n onChange,\n inputClasses,\n selectClasses,\n // error,\n style,\n } = props;\n const { placeholder } = props;\n let placeHolderInList = placeholder;\n if (id === 'day') {\n if (props.monthValue === null) {\n placeHolderInList = 'Select month first';\n }\n }\n\n return (\n \n }\n renderValue={(selected) => {\n if (!selected) {\n return
{placeholder}
;\n }\n const selectedOption = _.get(\n options.find((option) => option.value === selected),\n 'label',\n selected,\n );\n return selectedOption;\n }}\n >\n \n {placeHolderInList}\n \n {options.map((option) => (\n \n {option.label || option.value}\n \n ))}\n \n );\n}\n\nexport function BirthDayMonthPicker(props) {\n const {\n style,\n error,\n rootStyle,\n dayValue,\n monthValue,\n onMonthChange,\n onDayChange,\n className,\n id,\n label,\n helperText,\n ...rest\n } = props;\n\n const styleProps = {\n height: INPUT_HEIGHT,\n hasLabel: !!label || !!error,\n };\n\n const classes = useStyles(styleProps);\n const selectClasses = useSelectStyles();\n\n let dayOptions = [];\n if (monthValue) {\n dayOptions = getDaysForMonth(monthValue);\n }\n return (\n \n \n {error || label}\n \n
\n \n \n
\n\n {helperText && (\n \n {helperText}\n \n )}\n \n );\n}\n\nexport function DayMonthYearPicker(props) {\n const {\n style,\n error,\n rootStyle,\n dayValue,\n monthValue,\n onMonthChange,\n onDayChange,\n yearValue,\n onYearChange,\n yearOptions,\n className,\n id,\n label,\n helperText,\n ...rest\n } = props;\n\n const styleProps = {\n height: INPUT_HEIGHT,\n hasLabel: !!label || !!error,\n };\n\n const classes = useStyles(styleProps);\n const selectClasses = useDateSelectStyles();\n\n let dayOptions = [];\n if (monthValue) {\n dayOptions = getDaysForMonth(monthValue);\n }\n return (\n \n \n {error || label}\n \n
\n \n \n \n
\n\n {helperText && (\n \n {helperText}\n \n )}\n \n );\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport Typography from '../../../../componentsV2/core/Typography';\nimport Button from '../../../../componentsV2/core/Button';\nimport { USER_ACCOUNT_SETUP } from '../../../../constants/routes';\n\nconst styles = () => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n bottomDiv: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n marginTop: 16,\n },\n});\n\nfunction SetupSuccess(props) {\n const submitForm = (e) => {\n e.preventDefault();\n const { history, firstLogin } = props;\n if (firstLogin) {\n history.push(USER_ACCOUNT_SETUP);\n } else {\n window.location.href = `${APP_URL}home`;\n }\n };\n\n const { classes, header, SubTextComponent, subText } = props;\n return (\n
\n
\n
\n \n {header}\n \n {SubTextComponent}\n {subText.length > 0 && subText}\n
\n \n
\n
\n
\n
\n );\n}\n\nSetupSuccess.defaultProps = {\n SubTextComponent: null,\n subText: '',\n};\n\nSetupSuccess.propTypes = {\n classes: PropTypes.object.isRequired,\n header: PropTypes.string.isRequired,\n subText: PropTypes.string,\n SubTextComponent: PropTypes.object,\n};\n\nexport default withRouter(withStyles(styles)(SetupSuccess));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Button from '../../../componentsV2/core/Button';\nimport TextField from '../../../componentsV2/core/TextField';\nimport {\n BirthDayMonthPicker,\n DayMonthYearPicker,\n} from '../../../componentsV2/custom/BirthDayMonthPicker';\n\nimport {\n setDetailsForEmployee,\n setSkipDetailsForEmployee,\n} from '../../modules/employeeSignup';\nimport { getSetDetailsRequestLoadingStatus } from '../../modules/employeeSignup/selectors';\nimport { actions as employeeSignupActions } from '../../../modules/onboarding/EmployeeSignup';\nimport { meSelector } from '../../../modules/me/selector';\nimport RoutesList from '../../routes/routesList';\nimport themeV2 from '../../../componentsV2/theme';\nimport Modal from '../../../componentsV2/core/Modal';\nimport SetupSuccess from '../shared/onboarding/SetupSuccess';\nimport { USER_ACCOUNT_SETUP } from '../../../constants/routes';\n\nimport {\n getHireYearOptions,\n validateMonthDayAndYear,\n getMonthFromDateObject,\n} from '../../../Utils/date';\nimport { validateDisplayName } from '../../../Utils/validation';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n height: 593,\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n textField: {\n marginBottom: 24,\n width: '100%',\n },\n bottomDiv: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n actionDiv: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n skipButtonLabel: {\n fontSize: 14,\n color: themeV2.palette.darkGray3,\n fontWeight: themeV2.typography.fontWeightMedium,\n },\n});\n\nclass EnterDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n birthDay: null,\n birthMonth: null,\n hireDay: null,\n hireMonth: null,\n hireYear: null,\n displayName: '',\n displayNameErrors: null,\n displayNameTouched: false,\n birthdateError: null,\n birthdateTouched: false,\n hiredateError: null,\n hireateTouched: false,\n };\n }\n\n componentDidMount() {\n const { user } = this.props;\n if (user) {\n this.setupInitialData(user);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.user !== this.props.user && this.props.user) {\n this.setupInitialData(this.props.user);\n }\n }\n\n setupInitialData = (user) => {\n let birthDay = null;\n let birthMonth = null;\n let hireDay = null;\n let hireMonth = null;\n let hireYear = null;\n let displayName = '';\n let { birthdateTouched, hireateTouched, displayNameTouched } = this.state;\n if (user.profile) {\n if (user.profile.birthday) {\n birthDay = user.profile.birthday.date;\n birthMonth = getMonthFromDateObject(user.profile.birthday);\n birthdateTouched = true;\n } else if (user.profile.birthDate) {\n const birthDate = moment.utc(user.profile.birthDate);\n if (birthDate.isValid()) {\n birthDay = birthDate.date();\n birthMonth = birthDate.format('MMMM');\n birthdateTouched = true;\n }\n }\n if (user.profile.hiredday) {\n hireDay = user.profile.hiredday.date;\n hireMonth = getMonthFromDateObject(user.profile.hiredday);\n hireYear = user.profile.hiredday.year;\n hireateTouched = true;\n } else if (user.profile.hiredDate) {\n const hiredDate = moment.utc(user.profile.hiredDate);\n if (hiredDate.isValid()) {\n hireDay = hiredDate.date();\n hireMonth = hiredDate.format('MMMM');\n hireYear = hiredDate.year();\n hireateTouched = true;\n }\n }\n if (user.profile.username) {\n displayName = user.profile.username;\n displayNameTouched = true;\n }\n }\n\n this.setState({\n birthDay,\n birthMonth,\n hireDay,\n hireMonth,\n hireYear,\n birthdateTouched,\n hireateTouched,\n displayName,\n displayNameTouched,\n });\n };\n\n onSkipClicked = () => {\n const { history, location } = this.props;\n const params = new URLSearchParams(location.search);\n const firstLogin = params.get('firstLogin');\n this.props.setSkipDetailsForEmployee();\n if (firstLogin === 'true') {\n history.push(USER_ACCOUNT_SETUP);\n } else {\n history.push(RoutesList.HOME);\n }\n };\n\n onNextClick = (e) => {\n e.preventDefault();\n const {\n hireDay,\n hireMonth,\n hireYear,\n birthDay,\n birthMonth,\n displayName,\n displayNameTouched,\n } = this.state;\n\n let goThrough = true;\n\n let displayNameParsed = '';\n if (displayNameTouched && displayName.length > 0) {\n const displayNameErrors = validateDisplayName(displayName);\n if (displayNameErrors) {\n this.setState({ displayNameErrors });\n goThrough = false;\n }\n displayNameParsed = displayName.toLowerCase();\n }\n\n let hiredDate = null;\n let hiredday = null;\n if (hireMonth || hireDay || hireYear) {\n const isValidHiredate = validateMonthDayAndYear(\n hireMonth,\n hireDay,\n hireYear,\n );\n if (!isValidHiredate) {\n this.setState({ hiredateError: 'Hire date is not valid' });\n goThrough = false;\n } else {\n hiredDate = moment.utc(\n `${hireMonth}-${hireDay}-${hireYear}`,\n 'MMMM-DD-YYYY',\n );\n hiredday = {\n date: hireDay,\n monthNumber: Number(moment().month(hireMonth).format('M')),\n month: hireMonth,\n year: hireYear,\n };\n }\n }\n\n let birthday = null;\n if (birthMonth || birthDay) {\n const isValidBirthday = validateMonthDayAndYear(birthMonth, birthDay);\n if (!isValidBirthday) {\n this.setState({ birthdateError: 'Birth month or day is invalid' });\n goThrough = false;\n } else if (birthMonth && birthDay) {\n birthday = {\n date: birthDay,\n month: birthMonth,\n monthNumber: Number(moment().month(birthMonth).format('M')),\n };\n }\n }\n\n if (goThrough) {\n this.props\n .setDetailsForEmployee({\n birthday,\n hiredDate,\n hiredday,\n username: displayNameParsed,\n })\n .then((successAction) => {\n const { history, location } = this.props;\n const params = new URLSearchParams(location.search);\n const firstLogin = params.get('firstLogin');\n this.props.removeInviteUserData();\n history.push(\n `${history.location.pathname}?setProfile=success${\n firstLogin === 'true' ? '&firstLogin=true' : ''\n }`,\n );\n })\n .catch((errorOrAbortAction) => {\n const error = handleErrorAction(errorOrAbortAction);\n const usernameError = _.get(\n error,\n ['values', 'username', 'error'],\n null,\n );\n if (usernameError) {\n this.setState({\n displayNameErrors:\n 'Display name not available. Try a different name.',\n });\n }\n });\n }\n };\n\n handleDisplayNameChange = (event) => {\n this.setState({\n displayName: event.target.value,\n displayNameErrors: null,\n displayNameTouched: true,\n });\n };\n\n handleBirthMonthChange = (event) => {\n this.setState({\n birthMonth: event.target.value,\n birthdateError: null,\n birthdateTouched: true,\n });\n };\n\n handleBirthDayChange = (event) => {\n this.setState({\n birthDay: event.target.value,\n birthdateError: null,\n birthdateTouched: true,\n });\n };\n\n handleHireMonthChange = (event) => {\n this.setState({\n hireMonth: event.target.value,\n hiredateError: null,\n hireateTouched: true,\n });\n };\n\n handleHireDayChange = (event) => {\n this.setState({\n hireDay: event.target.value,\n hiredateError: null,\n hireateTouched: true,\n });\n };\n\n handleHireYearChange = (event) => {\n this.setState({\n hireYear: event.target.value,\n hiredateError: null,\n hireateTouched: true,\n });\n };\n\n render() {\n const { classes, loading, location } = this.props;\n const {\n birthDay,\n birthMonth,\n hireDay,\n hireMonth,\n hireYear,\n displayName,\n displayNameTouched,\n displayNameErrors,\n birthdateError,\n hiredateError,\n birthdateTouched,\n hireateTouched,\n } = this.state;\n\n const isButtonDisabled =\n !(birthdateTouched || hireateTouched || displayNameTouched) ||\n !!hiredateError ||\n !!displayNameErrors ||\n !!birthdateError;\n\n const params = new URLSearchParams(location.search);\n const setProfile = params.get('setProfile');\n const firstLogin = params.get('firstLogin');\n\n return (\n \n \n
\n
\n
\n \n Make your profile you\n \n \n \n \n
\n \n Step 2 of 2\n \n
\n \n Skip\n \n \n {loading ? 'Saving...' : 'Done'}\n \n
\n
\n \n
\n
\n
\n \n \n Congrats and welcome to Assembly — poke around and get\n comfortable! Once you’re ready,{' '}\n \n send the first recognition post.\n \n \n }\n />\n \n
\n );\n }\n}\n\nEnterDetails.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n user: meSelector(state),\n loading: getSetDetailsRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, {\n setDetailsForEmployee,\n setSkipDetailsForEmployee,\n removeInviteUserData: employeeSignupActions.removeInviteUserData,\n})(withStyles(styles)(EnterDetails));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Layout from '../../Layout/onboarding';\nimport VerticallyCenteredLayout from '../../Layout/verticallyCentered';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Button from '../../../componentsV2/core/Button';\nimport RoutesList from '../../routes/routesList';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport Link from '../../../componentsV2/core/Link';\nimport themeV2 from '../../../componentsV2/theme';\nimport { getMagicLinkVerified } from '../../modules/employeeSignup';\n\nconst styles = (theme) => ({\n emailStyle: {\n fontWeight: theme.typography.fontWeightBold,\n },\n buttonStyle: {\n width: 360,\n [theme.breakpoints.down('xs')]: {\n width: 200,\n },\n marginTop: 30,\n '&:hover': {\n color: `${themeV2.palette.white} !important`,\n },\n '&:visited': {\n color: `${themeV2.palette.white} !important`,\n },\n },\n});\n\nconst SignInLink = React.forwardRef((props, ref) => (\n \n));\n\nclass VerifyMagicLink extends Component {\n constructor(props) {\n super(props);\n this.state = {\n error: '',\n };\n }\n\n componentDidMount = () => {\n this.checkAndVerifyLink();\n };\n\n checkAndVerifyLink = () => {\n const { match } = this.props;\n const { magicLink } = match.params;\n if (magicLink) {\n this.props\n .getMagicLinkVerified({ magicLink })\n .then((successAction) => {\n const userId = _.get(successAction, ['data', 'data', '_id'], null);\n if (userId) {\n const { history } = this.props;\n history.push(`${RoutesList.EMPLOYEE_SET_PROFILE}/${userId}`);\n } else {\n this.setState({ error: 'Invalid' });\n }\n })\n .catch((errorOrAbortAction) => {\n const error = handleErrorAction(errorOrAbortAction);\n if (error.code === 102) {\n this.setState({ error: 'Invalid' });\n }\n });\n }\n };\n\n renderError = () => {\n const { classes } = this.props;\n let headeText = 'Magic Link has expired';\n let subText = 'Please signup again.';\n return (\n \n \n
\n \n {headeText}\n \n
\n
\n \n {subText}\n \n
\n
\n \n Go back to Sign In\n \n
\n
\n \n Not sure about this,{' '}\n \n chat with us now\n \n \n
\n
\n
\n );\n };\n\n render() {\n const { match } = this.props;\n const { error } = this.state;\n const { magicLink } = match.params;\n if (!magicLink || error) {\n return this.renderError();\n }\n return (\n \n \n
\n \n Verifying Magic Link\n \n
\n
\n \n Please wait till we verify the link. Thank you!\n \n
\n
\n
\n );\n }\n}\n\nVerifyMagicLink.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default connect(null, { getMagicLinkVerified })(\n withStyles(styles)(VerifyMagicLink),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '../../core/Button';\nimport AddToSlackLogoNonRetina from '../../../img/Slack_buttons/add_to_slack@1x.png';\nimport AddToSlackLogoRetina from '../../../img/Slack_buttons/add_to_slack@2x.png';\nimport SignInWithSlackLogoNonRetina from '../../../img/Slack_buttons/sign_in_with_slack@1x.png';\nimport SignInWithSlackLogoRetina from '../../../img/Slack_buttons/sign_in_with_slack@2x.png';\n\nconst useStyles = makeStyles((theme) => ({\n SlackButton: {\n marginTop: 20,\n borderRadius: 6,\n height: 40,\n opacity: 1,\n boxShadow: '0px 0px 0px rgba(0, 0, 0, 0)',\n transition: '0.3s ease all',\n cursor: 'pointer',\n padding: 0,\n '& img': {\n maxHeight: 40,\n },\n '&:hover': {\n boxShadow: '0px 2px 6px rgba(44, 44, 44, 0.24)',\n },\n '&:disabled': {\n opacity: 0.3,\n },\n },\n}));\n\nexport default function SlackButton(props) {\n const classes = useStyles();\n const { onClick, addToSlack, signIn, ...rest } = props;\n if (addToSlack) {\n return (\n \n );\n }\n return (\n \n );\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARYAAABQCAYAAADcO1qKAAARJklEQVR4Aezag5IkWRgF4HyN1Svshta2bduD0Ni27fDYNstu23Z3MflP/d1zq213ni/ilI2TuFfqidOZ/JjD5Zlkd3kv2J3eTJvLG7Q5PWSuIAjC/33uAO6C5k4IBB6NR+ouXV7o9/sfiT/Q3vgDal08CYIgiMYd4fV6H45H6phOF9hdvo/FmonD7TWycvKopraOorEY6bpOAGA+/N/nDuAu4E7gbhBrMtwZ8Uht03qG4/RNtbta7sB3jsXkTk8AAMDdwB3BXdHcGW7vlHgkkcQJbh2+AaesvLLXBwYA4K4QvWFzeT+KR+LwgcTbSWLzB6XSXwAoF7FZJPa5SHxgc3r3iM0fAID+EptFLV3ilSQeNuI9vLwzBvtUAGCA+1zEDl2NO4X3rfyPtZWhAoC1Fu4UiSe88BkeRhogAADuEDFKdEGyO72ZfIbHqAcKAIA7hLuEO0USo0GY/AYAg51EJ0aHJD7BGSwAANEnKBYAQLEAAIoFAFAsAAAoFgBAsXStVjFoaU6EPvcG6Q1HI/2fGqI7dSp152ZlOv3pOEAvXF1OH9zeSAuST1KNHCQAQLEwyg7r9KaziZ6yNHTK1sIodbQx8wo9fmFep7x4bQVlNVUQAJi8WHhK3g/+IJdIl3na2kjuRo0EZ20ePXFxPhdJl/ny3jbSySAAE0OxZIZ0LpAew5tIAm/ycIH0lPTGcgIwMRTL+Sql12L5KRAk4WvLjl6L5VSJlwBMDMXia9R6LZavfEESPr6zuddiOVToIAATQ7FEdeIdtygWABTL0LpWo6BYAFAsQ89Sr9LHniYUCwCKZehVyAa5GrR2SQ5qKBYAFMswQbEAoFj0B/NUzlYqdLRc7nMuVSuUH9GHtFgimkKeugI6W+rneS4jNonOMAzSNC0RPj+Ujp84RcuWrUqEn6O/Tp8+2+4xZFmmiaKiopKsVjvxe7x16w5lZWV3+x0EAkn0x5//tovD4aLRZrHaOr2utLR0UxYLT9MXM2oHnCmpYaqUjUEXy+XyFHrp2oqOM3RHZPr/Dz/8Ss8+93Ii02fMpqE0e878do+vKAr118JFS9s9RigUovGMi3Hnrj30xpvv8fvplLff+ZDWrt1ApaVl1NY9i/U+e2fB4zqu/uFP8sd7xZevaJl3DzMzMzMzMzMzMzMzMw4zM8+8V4+kzLpu0qRpR7OnJz/JC42Tpon92C/Y41f33PkLUts6efK0333du/fgswMLCwq1ELL70uZxvpRVuQfL9bR3lvVYW1STCxdfvHjp1yC++fYnSU/PiDiwXL9+U/bvP8joKrWpN2/eSouWbfkdtuW773/hnj8VsHhgIQUfKISrbE8sdQ2WOpcXBqzLEoGa0qxZc00b9NatOyIKLOnp6dXnjh4zXmpLhYVF0rxFG+7DcZk6beYnAhYPLGx9EFawDH9d6AosycU5dnXZcqHGGvmPP9Wpbgjffvez8d+MqBEFFmYpfwSwzJu/yK8DfvnV99Kla08gLwMGDmHG6PNOkpOTPxGweGBhP5WwgqX7swIx1OH2OltYnEx8KuhuZpRtXfZzqQkdOXrcpyGsWLnG5//vP3gYMWDZsmX7HwIs9Rs05R58wJGQkCiqMEMXL14mDRs1k5279ng+lk8ILGzSFFawzI8qFkOzXp6whUVUQbqguxkfbeuyWVRNqFv33tWNoGmzVpKfn49NX/3ZxElTIwYs4ydMrnWwpKam+XW+SZOmib1CBwumYFZ2dgh/87iE4oHFTlezysMGla9u58qHwkox9D4/Vf59ZqolKPrc3yrIKViupL6RcIuQptoIVq1aK2j8+Mk+jsPc3FzHDsklS1cQZpSffq4rHTt1k1mz59GZHIPl/fsPsmz5SunVux/XkA4duxJaxhRwBZa8vHy5fPmqbNq8VerVb1x9Lj4OIi5G2b5jl+UzInIzctRYada8DeahjBkzQdav3yQxMbESrDhH73y9e/evEbAkJCTI3HkLeZbyy6/1q+s2aNgMyBLiFjudOHmKutK6TQf56usfKNKmbUc+IyzuCiyrV6+Tlq3aS5OmLY1CmD2yws3s/MYmTaFC5Uhqmeg6GP/AFC5Nry+X1OJcR2Bhsyh2oqsJLVy4xKcRREVFG5ETn8/37NnnqAEaMx29EE6lU9qB5ezZ8/L9D7+aXgPI0KmDBcu1azeoa1u6duslqri/1WvW4+sIGK3BwR1MTg51za4JuKKjY8ICFmYVwND/fejvpa5cvXZdzJSRkSlDh42yfW7AnlmuU7AcOnTEr06/foP4y4SRlyDHzm9EiNhPpdVj5wWfyryoYp+Zii5mLjNfnpCOt9fLoIc7ZUvUDSmrrBBVz7Ljcfaqhf1ciASxE12N5VD8+lsD4+XiOPRp/HXr/T66t+/QRQLp8OGjpp2OWQFOSf2YBhbLRonvgWswSurHnILl1es38vU3PwYNln79B/vV+eHH30zBN3bcRAlGXbr0CHgfO3bsZobmGizTps+yh6mSK5OdnSOqAAWzGqfX4P07AUtSUjKBAr/vT0tLixRTyNPp02d9XvDevftF1aLFy3yOP3v+QsxUVFTkY2IwGh84eFjKy8uNqBPmUUCwALlGjZsbxwABs6TqaxQXF8vKVWtcgcW4fl5ens+5w0eMlsLCwurCdxg6duyET11AgIlGJiwjK9mkmAZqHWZ5TkVns+uswHTEiDGYl0GDBXMLAKqm1uYt22Tnzt2mUGPmqgqnsV6nbbtOAE8uXLgka9dtqH7nY8ZOcGwK9R8wxO/41avXI8nH4qlvv4EqDHSnHiO9TwPAz2EmTAG13oaN5k7mkSPHWoJl9+59Psewwc2E78et8xYgcI6d8xbIMIoa9Zi5AU9dWVlZdF7V8R2UScRzsprN6YmKu3bvDdrH8vLlK6JgpP+LrsZNWnKO6Ww1NjZON9Xwc+nPmv8nfA+0HYGFBD/92PwFiyN7rVDJrZeSMXKdJNcfL4k/jvAppY/ea8NfueSuOSFp3RZIctPJkjVxi5S9iRMrVeS9l4LnsyT3egfJvtzYccm51loKnkyW8ox7Em7FxMb6jd5matu2k1GHKSydzhZQOTk5QUeFBg8Zro7U2PcOo0LhB8ujR4996uGrsBKwVeoG68wllI9j1ZG5cefuvbCFm2fPme9zLoBkNoaOHDmmX5vZretwM2vE8J1hRuowA0oRC5bs2bsl9n/aS8x/tzMtxTdeiKGK5ExJ+nmUX53YP3eS/F2X/IEVe1AyT/xbMo79zXXJPP53KXy1RMKp5ctXqS+Z6a2T2QiNLmBORstW7VyFm5s1a139eaPGLQTVFlgw49R6OH+tdFBzRBJ9ciOc5kSt8K9YgQXIhwIWInNAE9NDn/lRMFnRkiXL9WP4e1yAxbpgmhnvLiLBUnTugQoIW7CkdphjWQ+4MHNRZyoGVMJRylKuSDiE30L1iVAI72I364UROZCDk8aoHMfhGSxY+LfqnCVUXatgIfSs1MPH4TjiBBxCVVxcPGajWWYuzzsosAAssnzr1G2k17cEy9ChI20d7aGCBX8aoItYsKS2nekYLOXvE23rYhYZKng+EyCEreTe6inh0MVLl3m5rgt5HWqOiHps4MChwYKF0Kg+mtUqWHTHJb4mKxGqVetu27ZDbOU+csS9OAELPiHMW62OM7DwnvyPFboGCzkvrVq39/t8yNARkQuW+L/2tAfLzZeCCg7ftK2b3GSyGMq90TGsYMk687WEQ4Y/w21hRFdFLoQaOXBjCmmJa7UKFn2JA/BA7s2m8C0MJc3fDizMSAcN9n/Hnbv0IDqHozygKbR+wyb9GDOfkFP6iR7ZR4QiBCyJ3w6zhUVFYoagvK3nbOvi7DWUd29QWMGSfbGBhCryCNRIBElrly5fCVjwv6jRD3JfcLqZ7OOCg46wbVBg0ZYVkLtCHkWtgYUoir52ykqsOFbrxscniBOdOnWGZD/MFFNnN8/3tzoN1GsDX0c+FjaL0o8RCrf0nWlguXjRf0a7ceOWkMFCFrAebaL98VsjDixEggKBIuHLwYLcgKX4w5awgoUIUahat26jz4tldHIi1rJYRQmmTZtlmiylp/rTMazAMmfugoA5NejDh48kbbkFC1EPFarkVFith2Hhn5LA1QCTz3THNyCoTvmBl51YbKiCmhnfihWr5c6du0SVeLbkr+gdFDA7Aos+4+D63Jf6HHhnVmDJzMwky1lPYsME9vMvDRo0jFmH4zwWwsv68U2btkYeWCrTciT+b72szaDLT1yDRSrLJOdy0zCZQd9IVUmGhCIaFxEX9aUyijjR7dt31fMIMVuuN6LTED3COff69RuSqvSGqoOFDuXT6emwmBl03rdv35HHYeyy5hosev4G38HoTho9+R7qyKmP2iTDPXj4iM7Hd/I8/HJBOO5AmpnirPD8klNS7MFikTJPXtDz5y/l/IWL+vfrYEE8b/046QaYUJhTpOD7PMdnz547AgtpBMxq9fbCb4u4cHPZ6zhJqjPWBxDxf+8thSfuCHILFlRZnCp5d/qEBJWcqy2lIu+dhKobN265XvgGlPSl/iRSGTIbYfXCsgAdLLqp5Pwaoa9uNut8itia0zQyQ9E/xx/iUDh47ZcYaEVdoGcHlo9RUfoSCNvfoYGFRD8l9G1bGDwcgQWRF2Q9G4u0zNvKKil7ESMFB69Lyd3XUlVUIsgtWHRV5EdJacJJKYne47zEHZGK3NfcnIRBekcJejUp03X1fP5fyVa1XLDGCMUM4P79BwHBQiSDhXjGcX1UO3PmHP6PkMCCGWI4m7VCDg6zFhWm7IPCdwdcxIfpF6RYEmD5vLSZErknwab0k9VreU1CzwwyhJUtwGIso8AHZLvO6PiJU8GsbuadmYW/SRb8PFP63YOl1kWHYV8VRgams+RbBL2alIZHYh3XoGjRIa6HCYQ/hugQC/NY74O5Zdj2rFUxzjdNf6cO63QmT5nONdiegGm5OjvimsY18Ie42g2f/ByiJHRcYEakxMqJiEOW+8YvwTlkjE6fMZtzuFbIGdDAixkfW0zgzCRqh7lBJ1Xhq/useI9q0VP3Mc14RqTjk4DYu88ATD7DMU7SG1sqUIdi+fsfP34iDCKkErC9Qbv2nXm3mKp+MHr48LHffeEb04WJzDvge43i0N/ngaU8+5mUp9/9vWTclcqiZPHkyZNbeWBhvY952PhCHSlLvSGePHkKmzywGKU06ax48uQprPLAknXmW5GKIvHkyVPY5IGFUp75UDx58vQZg6Vg31VbsLCfiyH2U7EDS2n8cfHkydNnDBbyXOzAwhIBQ6Tg24GFPBVPnjx9xmAhiU7P0FULm0WxE50hdn5jk6YAGbVcVDx58vT5gsVI/7dcW8ROdJrY+c1y7Q9p+p48efLAUr1wEZOHLRfYz4XNoorOW99TWcplNmliPxW2PsBE+k8755LSQBAFwHcOP1fSgyheSM/hFTKZjp0EV4q4VAR1k4UjhIxdSIsGAnEEN6mCamwx26J/pv5DoYgYFhExLCIihkVEDIuIGBYREcPyT4gYlpQX/MCXComIDIWG0BKaEk2bb5i8dV0vIjIUGkJLaEo0KV8yeX557UVEhkJDaAlNiSZNT5jc3t33IiJDoSG0hKZEM58flMlyPMmrrnvvRUR+C+2gIbSEphCWGLX53FWLiPx1tUJLihEMOee9ejv08PjUi4hsC82ot0G0pBjBgOWXR03KKzQu2yJiVGjGp9PjYiDDl6NJPuMP6rbIMxcR2XSmUrc/NIN2FKPK8EOqU7dFHMbwYa6RuKP2EZ3I7j5+owG0gCbQhrr9+b5SqTKsW89cLjjh5cOqqmsuacRsNtsvxroMG23b68NxujrlwQuv6epKRlV3zJQXNIAW0ASulIuxyQ9B9JtoiNqQeAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\n\nexport const isUserAuthenticated = (state) =>\n _.get(state, ['auth', 'authenticated'], false);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\nimport LaunchIcon from '@material-ui/icons/Launch';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Button from '../../../componentsV2/core/Button';\nimport SlackButton from '../../../componentsV2/custom/AddToSlackButton';\nimport {\n authorizeAddToSlack,\n authorizeSignInWithSlack,\n authorizeUserAuthSlack,\n authorizeSignInWithSlackV2,\n getSlackAppInfo,\n} from '../../modules/slackOnboard';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport { getSlackConfigInfo } from '../../modules/slackOnboard/selectors';\nimport { APP_URL } from '../../../config';\nimport RoutesList from '../../routes/routesList';\nimport Existing from '../shared/ExistingAssemblyDiv';\nimport {\n errorCodes,\n parseURL,\n ONBOARDING_FLOW,\n SLACK_ERROR_TYPES,\n getPathToSlackComplete,\n} from '../../utils/Slack';\nimport { userSessionCreatedAction } from '../../../modules/Session';\nimport { isUserAuthenticated } from '../../../modules/session/selectors';\nimport LoadingPulse from '../../../screens/shared/LoadingPulse';\n\nimport TextDivider from '../../../componentsV2/custom/TextDivider';\nimport TextField from '../../../componentsV2/core/TextField';\n\nimport { createAccount } from '../../modules/onboarding';\nimport { getRequestLoadingStatus } from '../../modules/onboarding/selectors';\nimport { isValidEmail } from '../../../Utils/validation';\nimport { trackEvent, EventType } from '../../../Utils/analytics/Metrics';\n\nconst ERROR_STATES = {\n EMAIL: 'email',\n DOMAIN: 'domain',\n JOIN_DOMAIN: 'join-domain',\n};\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n padding: '40px 55px 25px 55px',\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n body: {\n flex: 1,\n },\n giveFirstButton: {\n padding: '0 15 0 15',\n width: '100%',\n height: '44px',\n marginTop: '19px',\n color: '#FFFFFF',\n borderRadius: '3px',\n '&:hover': {\n color: '#FFFFFF',\n },\n },\n emailLabel: {\n display: 'block',\n fontSize: '14px',\n paddingLeft: '15px',\n marginTop: '14px',\n marginBottom: '24px',\n },\n button: {\n display: 'block',\n width: '100%',\n },\n});\n\nclass SignInWithSlack extends Component {\n constructor(props) {\n super(props);\n this.state = {\n slackConnecting: false,\n slackVerifying: false,\n email: '',\n emailErrors: null,\n };\n }\n\n componentDidMount() {\n const { location, slackConfigInfo } = this.props;\n this.props.getSlackAppInfo();\n const params = new URLSearchParams(location.search);\n const isAuto = params.get('auto');\n if (isAuto && isAuto === 'true' && slackConfigInfo) {\n this.handleAutoSignIn();\n } else {\n this.handleSlackIntegration(this.props);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { slackConfigInfo } = this.props;\n if (!prevProps.slackConfigInfo && slackConfigInfo) {\n const { location } = this.props;\n const params = new URLSearchParams(location.search);\n const isAuto = params.get('auto');\n if (isAuto && isAuto === 'true') {\n this.handleAutoSignIn();\n }\n }\n }\n\n isAutoSignIn = () => {\n const { location } = this.props;\n const params = new URLSearchParams(location.search);\n const isAuto = params.get('auto');\n if (isAuto && isAuto === 'true') {\n return true;\n }\n return false;\n };\n\n handleAutoSignIn = () => {\n const { addToSlack, userAuth, signInV2 } = this.props;\n const {\n slackAddAPIUrl,\n slackSigninAPIUrl,\n slackUserAuthUrl,\n slackSigninV2APIUrl,\n } = this.getSlackUrls();\n if (slackAddAPIUrl && slackSigninAPIUrl) {\n this.setState({ slackConnecting: true });\n if (addToSlack) {\n window.location.href = slackAddAPIUrl;\n } else if (userAuth) {\n window.location.href = slackUserAuthUrl;\n } else if (signInV2) {\n window.location.href = slackSigninV2APIUrl;\n } else {\n window.location.href = slackSigninAPIUrl;\n }\n }\n };\n\n onSlackClick = () => {\n this.setState({ slackConnecting: true });\n };\n\n onAuthorizeSuccess = (successAction) => {\n this.setState({ slackVerifying: false });\n const data = _.get(successAction, ['data', 'data']);\n const { user, token, onboardingFlow, employer } = data;\n this.props.userSessionCreatedAction(user, token);\n const { history } = this.props;\n if (onboardingFlow === ONBOARDING_FLOW.SIGN_IN_WITH_SLACK) {\n history.push(RoutesList.HOME);\n } else if (onboardingFlow === ONBOARDING_FLOW.ADD_TO_SLACK) {\n const onboardingStep = _.get(\n employer,\n ['integrations', 'slack_v2', 'onboardingStep'],\n null,\n );\n history.push(getPathToSlackComplete(onboardingStep));\n }\n };\n\n onAuthorizeFailure = (errorOrAbortAction) => {\n this.setState({ slackVerifying: false });\n const error = handleErrorAction(errorOrAbortAction);\n if (error) {\n const slack = _.get(error, ['values', 'slack'], null);\n let slackError;\n if (slack) {\n const { history } = this.props;\n slackError = slack.error;\n if (slackError) {\n if (slackError === errorCodes.NO_SLACK_TEAM_IN_ASSEMBLY) {\n history.push(`${RoutesList.SLACK_ADD_TO}?error=${slackError}`);\n } else {\n history.push(`${RoutesList.SLACK_SIGN_IN}?error=${slackError}`);\n }\n }\n }\n }\n };\n\n getRedirectUrl = () => APP_URL;\n\n handleSlackIntegration = (props) => {\n const { code } = parseURL(props.location.search);\n const { addToSlack, userAuth, signInV2 } = props;\n if (code) {\n const { location } = this.props;\n const params = new URLSearchParams(location.search);\n const errorState = params.get('error');\n if (errorState) {\n if (errorState === errorCodes.NO_SLACK_TEAM_IN_ASSEMBLY) {\n this.addToSlackSlackAPI(code);\n } else {\n this.signInWithSlackAPI(code);\n }\n } else if (addToSlack) {\n this.addToSlackSlackAPI(code);\n } else if (userAuth) {\n this.userAuthSlackAPI(code);\n } else if (signInV2) {\n this.signInWithSlackAPIV2(code);\n } else {\n this.signInWithSlackAPI(code);\n }\n }\n };\n\n userAuthSlackAPI = (code) => {\n this.setState({ slackVerifying: true });\n this.props\n .authorizeUserAuthSlack({ code })\n .then((successAction) => {\n this.onAuthorizeSuccess(successAction);\n })\n .catch((errorOrAbortAction) => {\n this.onAuthorizeFailure(errorOrAbortAction);\n });\n };\n\n signInWithSlackAPI = (code) => {\n this.setState({ slackVerifying: true });\n this.props\n .authorizeSignInWithSlack({ code })\n .then((successAction) => {\n this.onAuthorizeSuccess(successAction);\n })\n .catch((errorOrAbortAction) => {\n this.onAuthorizeFailure(errorOrAbortAction);\n });\n };\n\n signInWithSlackAPIV2 = (code) => {\n this.setState({ slackVerifying: true });\n this.props\n .authorizeSignInWithSlackV2({ code })\n .then((successAction) => {\n this.onAuthorizeSuccess(successAction);\n })\n .catch((errorOrAbortAction) => {\n this.onAuthorizeFailure(errorOrAbortAction);\n });\n };\n\n addToSlackSlackAPI = (code) => {\n this.setState({ slackVerifying: true });\n const { userAuthenticated } = this.props;\n this.props\n .authorizeAddToSlack({ code }, userAuthenticated)\n .then((successAction) => {\n this.onAuthorizeSuccess(successAction);\n })\n .catch((errorOrAbortAction) => {\n this.onAuthorizeFailure(errorOrAbortAction);\n });\n };\n\n addToSlackSlackAPIV2 = (code) => {\n this.setState({ slackVerifying: true });\n this.props\n .authorizeSignInWithSlackV2({ code })\n .then((successAction) => {\n this.onAuthorizeSuccess(successAction);\n })\n .catch((errorOrAbortAction) => {\n this.onAuthorizeFailure(errorOrAbortAction);\n });\n };\n\n getSlackUrls = () => {\n const { slackConfigInfo, addToSlack, userAuth, signInV2 } = this.props;\n let currentUrl = 'slack/onboard/signin';\n if (addToSlack) {\n currentUrl = 'slack/onboard/add';\n } else if (userAuth) {\n currentUrl = 'slack/onboard/userauth';\n } else if (signInV2) {\n currentUrl = 'slack/onboard/signin/v2';\n }\n const redirectUrl = `${this.getRedirectUrl()}${currentUrl}`;\n let slackSigninAPIUrl;\n let slackAddAPIUrl;\n let slackUserAuthUrl;\n let slackSigninV2APIUrl;\n if (slackConfigInfo) {\n const { CLIENT_ID, DEV_CLIENT_ID, SCOPES } = slackConfigInfo;\n slackSigninAPIUrl = `https://slack.com/oauth/authorize?client_id=${CLIENT_ID}&redirect_uri=${redirectUrl}&scope=${SCOPES.SIGN_IN_WITH_SLACK.user_scope}`;\n slackAddAPIUrl = `https://slack.com/oauth/v2/authorize?client_id=${CLIENT_ID}&redirect_uri=${redirectUrl}&scope=${SCOPES.ADD_TO_SLACK.scope}&user_scope=${SCOPES.ADD_TO_SLACK.user_scope}`;\n slackUserAuthUrl = `https://slack.com/oauth/v2/authorize?client_id=${CLIENT_ID}&redirect_uri=${redirectUrl}&user_scope=${SCOPES.SLACK_AUTHORIZE_USER.user_scope}`;\n slackSigninV2APIUrl = `https://slack.com/oauth/authorize?client_id=${DEV_CLIENT_ID}&redirect_uri=${redirectUrl}&scope=${SCOPES.SIGN_IN_WITH_SLACK_V2.user_scope}`;\n }\n return {\n slackSigninAPIUrl,\n slackAddAPIUrl,\n slackUserAuthUrl,\n slackSigninV2APIUrl,\n };\n };\n\n handleEmailChange = (event) => {\n this.setState({\n email: event.target.value,\n emailErrors: null,\n emailTouched: true,\n });\n };\n\n onSigninClick = (e) => {\n e.preventDefault();\n let { email } = this.state;\n email = email.trim();\n\n let goThrough = true;\n if (!email) {\n this.setState({ emailErrors: 'Email is required' });\n goThrough = false;\n }\n\n const isEmailValid = isValidEmail(email);\n if (isEmailValid === false) {\n this.setState({ emailErrors: 'Enter a valid email' });\n goThrough = false;\n }\n\n if (goThrough) {\n this.props\n .createAccount({ email })\n .then((successAction) => {\n const { data } = successAction.data;\n const { history } = this.props;\n trackEvent(EventType.REGISTRATION, { userId: data.userId });\n history.push(`${RoutesList.SIGNUP_SUCCESS}/${data.userId}`);\n })\n .catch((errorOrAbortAction) => {\n const error = handleErrorAction(errorOrAbortAction);\n if (error.code === 100) {\n const emailError = error.values.email;\n if (emailError) {\n const { history } = this.props;\n if (emailError.msg === 'Email exists, sign in') {\n history.push(\n `${RoutesList.ENTER_EMAIL}?error=${ERROR_STATES.EMAIL}`,\n );\n } else if (\n emailError.msg.includes('Account exists') ||\n emailError.msg.includes('invite email and sign up')\n ) {\n const employer = _.get(error, ['values', 'employer'], null);\n const employeeSignupFrom = _.get(\n error,\n ['values', 'employer', 'employeeSignupFrom', 'value'],\n null,\n );\n if (employer && employeeSignupFrom === 'DOMAIN') {\n this.setState(\n () => {\n return {\n emailErrors: 'Domain exists',\n domainEmployer: employer,\n };\n },\n () => {\n history.push(\n `${RoutesList.ENTER_EMAIL}?error=${ERROR_STATES.JOIN_DOMAIN}`,\n );\n },\n );\n } else {\n history.push(\n `${RoutesList.ENTER_EMAIL}?error=${ERROR_STATES.DOMAIN}`,\n );\n this.setState({ emailErrors: 'Domain exists' });\n }\n } else {\n this.setState({ emailErrors: emailError.msg });\n }\n }\n } else {\n this.setState({ emailErrors: error.message });\n }\n });\n }\n };\n\n renderHeader = () => {\n const { location, addToSlack } = this.props;\n const params = new URLSearchParams(location.search);\n const errorState = params.get('error');\n if (errorState) {\n if (errorState === errorCodes.NO_SLACK_TEAM_IN_ASSEMBLY) {\n return (\n \n Sorry, it looks like Assmebly needs to be installed to this Slack\n first\n \n );\n }\n if (errorState === errorCodes.SLACK_USER_NOT_IN_ASSEMBLY) {\n return (\n \n Sorry! This Assembly is invite only\n \n );\n }\n if (errorState === errorCodes.NON_WORK_EMAIL_NOT_ALLOWED) {\n return (\n \n Sorry! We require a work email address to create a new Assembly\n \n );\n }\n if (errorState === errorCodes.SLACK_TEAM_MISMATCH) {\n return (\n \n Sorry, this email is already associated with an existing Assembly\n \n );\n }\n if (errorState === SLACK_ERROR_TYPES.ACCESS_DENIED) {\n return (\n \n Oh no! It looks like your Slack account isn’t permitted.\n \n );\n }\n if (errorState === errorCodes.ONLY_ADMIN_OWNER_ALLOWED_TO_ADD_TO_SLACK) {\n return (\n \n Sorry! Your Slack only allows admins to approve new apps\n \n );\n }\n if (errorState === errorCodes.SLACK_ONBOARDING_INCOMPLETE) {\n return (\n \n Sorry your Assembly is not setup completely.\n \n );\n }\n if (errorState === errorCodes.ADMIN_APPROVAL_REQUESTED) {\n return (\n \n This Assembly is invite only – we have sent an invite request to the\n admins\n \n );\n }\n }\n if (addToSlack) {\n return (\n \n {' '}\n Welcome! Add Slack to your Assembly.\n \n );\n }\n return (\n \n {' '}\n Welcome! Sign in with Slack to access your Assembly.\n \n );\n };\n\n renderBody = () => {\n const {\n classes,\n loading,\n location,\n slackConfigInfo,\n addToSlack,\n signInV2,\n } = this.props;\n const params = new URLSearchParams(location.search);\n const errorState = params.get('error');\n\n const { email, emailErrors, emailTouched, slackConnecting } = this.state;\n const isButtonDisabled = !emailTouched || !!emailErrors;\n\n const { slackAddAPIUrl, slackSigninAPIUrl, slackSigninV2APIUrl } =\n this.getSlackUrls();\n if (errorState) {\n if (errorState === errorCodes.NO_SLACK_TEAM_IN_ASSEMBLY) {\n return (\n \n Click the “Add to slack” to add to your Slack workspace\n \n \n \n \n );\n }\n if (errorState === errorCodes.SLACK_TEAM_MISMATCH) {\n return (\n \n Emails can only be associated with a sinlge Assembly account\n \n \n \n \n );\n }\n if (errorState === errorCodes.SLACK_USER_NOT_IN_ASSEMBLY) {\n return (\n \n If you’d like to join, you’ll have to ask permission from your\n Assembly’s admin\n \n \n Thanks, take me back to Slack  \n \n \n \n \n );\n }\n if (errorState === errorCodes.NON_WORK_EMAIL_NOT_ALLOWED) {\n return (\n <>\n
\n \n In order to setup your new Assembly, please try a Slack that has\n a work email and not a personal email – or you can also setup\n with an Assembly with a work email below\n \n \n \n \n \n \n \n {loading ? 'Verifying...' : 'Next'}\n \n \n \n );\n }\n if (errorState === errorCodes.ONLY_ADMIN_OWNER_ALLOWED_TO_ADD_TO_SLACK) {\n return (\n
\n \n An admin of your Slack workspace has “Sign in with Slack” disabled\n – The setting needs to be turned off in Slack or you can use your\n email and password to setup\n \n \n \n {loading ? 'Verifying...' : 'Next'}\n \n \n );\n }\n if (errorState === errorCodes.SLACK_ONBOARDING_INCOMPLETE) {\n return (\n \n Looks like your Assembly account is not configured completely.\n Please wait until it is setup and try again.\n \n );\n }\n if (errorState === SLACK_ERROR_TYPES.ACCESS_DENIED) {\n return (\n \n Sorry, some users on this Slack workspace aren’t permitted to join\n Assembly at the moment. This is a setting set by your Assembly\n admin. Please talk to your Assembly admin and try again.\n \n );\n }\n if (errorState === errorCodes.ADMIN_APPROVAL_REQUESTED) {\n return (\n \n If your Assembly admin approves your access, we will inform you\n \n \n Thanks, take me back to Slack  \n \n \n \n \n );\n }\n }\n if (addToSlack) {\n return (\n \n Give recognition, redeem your earned points, peep the leaderboards,\n and more. Click the \"Add to Slack\" to add Assembly to your Slack\n workspace.\n \n \n \n \n );\n }\n if (signInV2) {\n return (\n \n Give recognition, redeem your earned points, peep the leaderboards,\n and more. Click the \"Sign in with Slack\" to sign in and or authorize\n Assembly.\n \n \n \n \n );\n }\n return (\n \n Give recognition, redeem your earned points, peep the leaderboards, and\n more. Click the \"Sign in with Slack\" to sign in and or authorize\n Assembly.\n \n \n \n \n );\n };\n\n renderSubtext = () => {\n const params = new URLSearchParams(this.props.location.search);\n const errorState = params.get('error');\n if (errorState === errorCodes.NO_SLACK_TEAM_IN_ASSEMBLY) {\n return (\n \n );\n }\n if (errorState === errorCodes.SLACK_TEAM_MISMATCH) {\n return (\n \n );\n }\n if (errorState === errorCodes.ONLY_ADMIN_OWNER_ALLOWED_TO_ADD_TO_SLACK) {\n return (\n \n );\n }\n };\n\n render() {\n const { classes } = this.props;\n const { slackVerifying, slackConnecting } = this.state;\n return (\n \n {slackVerifying || slackConnecting || this.isAutoSignIn() ? (\n \n \n {slackConnecting\n ? 'Connecting to Slack'\n : 'Verifying Slack Sign in'}\n \n \n \n ) : (\n <>\n \n
\n
\n {this.renderHeader()}\n {this.renderBody()}\n
\n
\n
\n {this.renderSubtext()}\n \n )}\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n loading: getRequestLoadingStatus(state),\n slackConfigInfo: getSlackConfigInfo(state),\n userAuthenticated: isUserAuthenticated(state),\n});\n\nexport default connect(mapStateToProps, {\n createAccount,\n authorizeAddToSlack,\n authorizeSignInWithSlack,\n authorizeUserAuthSlack,\n userSessionCreatedAction,\n authorizeSignInWithSlackV2,\n getSlackAppInfo,\n})(withStyles(styles)(SignInWithSlack));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { withStyles } from '@material-ui/core/styles';\nimport _ from 'lodash';\n\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CheckIcon from '@material-ui/icons/Check';\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport { verifyCode, resendCode } from '../../modules/onboarding';\n\nimport Link from '../../../componentsV2/core/Link';\nimport { handleErrorAction } from '../../utils/ErrorHandler';\nimport {\n getEmailRegistered,\n getVerifyRequestLoadingStatus,\n getResendCodeRequestLoadingStatus,\n} from '../../modules/onboarding/selectors';\nimport RoutesList from '../../routes/routesList';\nimport themeV2 from '../../../componentsV2/theme';\nimport OtpInput from '../../../componentsV2/core/OTPInput/BaseOtpInput';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n padding: '40px 55px 25px 55px',\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n otpContainerStyle: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 20,\n marginBottom: 20,\n },\n body: {\n flex: 1,\n },\n bodyHead: {\n marginBottom: '24px',\n },\n bodyTitle: {\n marginTop: '20px',\n },\n bodyText: {\n marginBottom: '32px',\n },\n textCenter: {\n textAlign: 'center',\n fontSize: '14px',\n fontWeight: '500',\n },\n label: {\n display: 'block',\n fontSize: '12px',\n width: 'calc(100% - 24px)',\n marginLeft: 'auto',\n marginRight: 'auto',\n textAlign: 'center',\n background: '#F9F9F9',\n borderRadius: '3px',\n padding: '12px',\n marginTop: '8px',\n marginBottom: '24px',\n fontWeight: '600',\n },\n button: {\n display: 'block',\n marginTop: '8px',\n width: '100%',\n },\n secondaryDivStyle: {\n marginTop: 20,\n marginBottom: 20,\n fontWeight: 500,\n fontSize: 14,\n display: 'flex',\n alignItems: 'center',\n },\n progresStyle: {\n color: themeV2.palette.greenLight,\n },\n successDivStyle: {\n color: themeV2.palette.greenLight,\n },\n errorDivStyle: {\n color: themeV2.palette.red2,\n },\n});\n\nclass SignupSuccess extends Component {\n constructor(props) {\n super(props);\n this.state = {\n code: '',\n codeErrors: null,\n codeVerified: false,\n buttonDisabled: true,\n resendCodeSuccess: false,\n };\n }\n\n componentDidMount() {\n this.activateLink();\n }\n\n activateLink = () => {\n setTimeout(() => {\n this.setState({\n buttonDisabled: false,\n });\n }, 30000);\n };\n\n handleOtpChange = (code) => {\n this.setState(\n () => ({ code }),\n () => {\n if (code.length === 6) {\n this.verifyCode();\n }\n },\n );\n };\n\n resendCode = (e) => {\n e.preventDefault();\n const { match } = this.props;\n const { userId } = match.params;\n\n this.props\n .resendCode({ userId })\n .then((successAction) => {\n this.setState({ resendCodeSuccess: true });\n this.setState({ buttonDisabled: true });\n this.activateLink();\n })\n .catch((errorOrAbortAction) => {});\n };\n\n verifyCode = () => {\n let { code } = this.state;\n const { match } = this.props;\n const { userId } = match.params;\n code = code.trim();\n\n this.setState({ codeErrors: null });\n if (userId) {\n // TODOV2: Remove this\n if (code === '000000') {\n code = '0000';\n }\n this.props\n .verifyCode({ userId, codeToVerify: code })\n .then((successAction) => {\n this.setState({ codeVerified: true });\n const { history } = this.props;\n const newUserId = _.get(successAction, ['data', 'data', '_id'], null);\n history.push(`${RoutesList.ENTER_COMPANY_NAME}/${newUserId}`);\n })\n .catch((errorOrAbortAction) => {\n handleErrorAction(errorOrAbortAction);\n this.setState({\n codeErrors:\n 'Whoops, this code doesn’t match what we sent, check your email and try again.',\n });\n });\n }\n };\n\n render() {\n const { classes, isRequestLoading, isResendRequestLoading, email } =\n this.props;\n const { code, codeErrors, codeVerified, resendCodeSuccess } = this.state;\n if (!email) {\n return ;\n }\n\n return (\n \n <>\n \n
\n
\n
\n \n {/* 🎉 Congrats, you signed up! */}\n Check your email\n \n \n {/* We take security seriously, for you. We sent you an email\n to verify your identity.\n \n Please go to the email we sent and click the “Verify My\n E-mail Address” button.\n */}\n You will receive a temporary 6 digit confirmation code at{' '}\n {email}, enter it quickly.\n \n
\n
\n {/* \n
\n We sent an email to:\n
\n
{email}
\n
\n \n Didn’t get an email? Check your spam folder before\n resending. It can take a few moments.\n */}\n
\n \n
\n {codeVerified && (\n
\n \n   \n \n {' '}\n Code verified.\n \n
\n )}\n {isRequestLoading && (\n
\n \n   \n \n {' '}\n Verifying code.\n \n
\n )}\n {codeErrors && !isRequestLoading && (\n
\n
{codeErrors}
\n
\n )}\n
\n {/*
\n \n You can resend: 30 seconds\n \n \n Resend Verification Email\n \n
*/}\n
\n \n Keep this window open while checking your email. If you\n can’t find your code, check your spam or junk folder or{' '}\n \n resend code\n \n .\n \n
\n
\n {isResendRequestLoading && (\n
\n \n   \n \n {' '}\n Resending code.\n \n
\n )}\n {resendCodeSuccess && !isResendRequestLoading && (\n
\n \n   \n \n {' '}\n Code resent.\n \n
\n )}\n
\n
\n
\n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n email: getEmailRegistered(state),\n isRequestLoading: getVerifyRequestLoadingStatus(state),\n isResendRequestLoading: getResendCodeRequestLoadingStatus(state),\n});\n\nexport default connect(mapStateToProps, { verifyCode, resendCode })(\n withStyles(styles)(SignupSuccess),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Layout from '../../Layout/onboarding';\nimport Card from '../../../componentsV2/core/Card';\nimport Typography from '../../../componentsV2/core/Typography';\nimport Button from '../../../componentsV2/core/Button';\nimport { verifyCode, resendCode } from '../../modules/onboarding';\n\nimport { getEmailRegistered } from '../../modules/onboarding/selectors';\nimport themeV2 from '../../../componentsV2/theme';\nimport TextField from '../../../componentsV2/core/TextField';\nimport Existing from '../shared/ExistingAssemblyDiv';\n\nconst styles = (theme) => ({\n card: {\n margin: 'auto',\n width: 520,\n padding: '40px 55px 25px 55px',\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n otpContainerStyle: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 20,\n marginBottom: 20,\n },\n body: {\n flex: 1,\n },\n bodyHead: {\n marginBottom: '24px',\n },\n bodyTitle: {\n marginTop: '20px',\n },\n bodyText: {\n marginBottom: '32px',\n },\n textCenter: {\n textAlign: 'center',\n fontSize: '14px',\n fontWeight: '500',\n },\n label: {\n display: 'block',\n fontSize: '12px',\n width: 'calc(100% - 24px)',\n marginLeft: 'auto',\n marginRight: 'auto',\n textAlign: 'center',\n background: '#F9F9F9',\n borderRadius: '3px',\n padding: '12px',\n marginTop: '8px',\n marginBottom: '24px',\n fontWeight: '600',\n },\n button: {\n display: 'block',\n marginTop: '8px',\n width: '100%',\n },\n secondaryDivStyle: {\n marginTop: 20,\n marginBottom: 20,\n fontWeight: 500,\n fontSize: 14,\n display: 'flex',\n alignItems: 'center',\n },\n progresStyle: {\n color: themeV2.palette.greenLight,\n },\n successDivStyle: {\n color: themeV2.palette.greenLight,\n },\n errorDivStyle: {\n color: themeV2.palette.red2,\n },\n emailWrapper: {},\n emailLabel: {\n fontSize: '12px',\n },\n emailText: {\n fontSize: '14px',\n paddingLeft: '15px',\n marginTop: '14px',\n marginBottom: '24px',\n },\n});\n\nclass EmailSignin extends Component {\n constructor(props) {\n super(props);\n this.state = {\n email: 'jayasurya@joinasssembly.com',\n password: '',\n emailErrors: null,\n passwordErrors: null,\n emailTouched: false,\n passwordTouched: false,\n };\n }\n\n componentDidMount() {}\n\n handleChange = (name) => (event) => {\n this.setState({\n [name]: event.target.value,\n emailErrors: null,\n passwordErrors: null,\n [`${name}Touched`]: true,\n });\n };\n\n render() {\n const { classes, signUp } = this.props;\n const {\n email,\n password,\n passwordErrors,\n emailErrors,\n passwordTouched,\n emailTouched,\n } = this.state;\n\n let isButtonDisabled =\n !(emailTouched && passwordTouched) || emailErrors || passwordErrors;\n if (\n email.length !== 0 &&\n password.length !== 0 &&\n !emailErrors &&\n !passwordErrors\n ) {\n isButtonDisabled = false;\n }\n\n return (\n \n {\n <>\n \n
\n
\n
\n \n {signUp\n ? 'Welcome! You’re required to use email to sign in.'\n : 'Welcome back! Sorry, you’re required to use email.'}\n \n \n To get signed in to your team’s Assembly, you’ll first\n need to create a password to continue. You will use these\n credentials form here on to access Assembly.\n \n
\n
\n
\n
\n Your email address from Slack\n
\n
\n jayasurya@joinassembly.com\n
\n
\n \n \n Sign In\n \n
\n
\n
\n
\n \n \n }\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n email: getEmailRegistered(state),\n});\n\nexport default connect(mapStateToProps, { verifyCode, resendCode })(\n withStyles(styles)(EmailSignin),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport noRequireAuth from '../../containers/hoc/NoAuthentication';\nimport requireAuth from '../../containers/hoc/Authentication';\nimport SignInWithSAML from '../screens/Login/signInWithSAML';\nimport ForgotPassword from '../screens/Login/forgotPassword';\nimport ForgotPasswordSuccess from '../screens/Login/forgotPassword/EmailSent';\nimport ForgotPasswordVerify from '../screens/Login/forgotPassword/VerifyToken';\nimport ResetPassword from '../screens/Login/ResetPassword';\nimport ResetPasswordSuccess from '../screens/Login/resetPassword/ResetPasswordSuccess';\n\nimport EnterEmail from '../screens/Onboarding/EnterEmail';\nimport EnterCode from '../screens/Onboarding/EnterCode';\nimport EnterCompanyName from '../screens/Onboarding/EnterCompanyName';\n\nimport EmployeeEnterEmail from '../screens/EmployeeSignup/EnterEmail';\nimport EmployeeSetProfile, {\n SET_PROFILE_TYPES,\n} from '../screens/EmployeeSignup/EnterProfile';\nimport EmployeeSetDetails from '../screens/EmployeeSignup/EnterDetails';\nimport VerifyMagicLink from '../screens/EmployeeSignup/VerifyMagicLink';\nimport SignInWithSlack from '../screens/SlackOnboarding/SignInWithSlack';\nimport RoutesList from './routesList';\n\nimport SignupSuccess from '../screens/SlackOnboarding/SignupSuccess';\nimport EmailSignIn from '../screens/SlackOnboarding/EmailSignin';\n\nconst SignInWithSAMLHOC = noRequireAuth(SignInWithSAML);\nconst EnterEmailHOC = noRequireAuth(EnterEmail);\n\nconst Routes = () => {\n return (\n \n \n }\n />\n }\n />\n \n \n \n \n \n \n \n (\n \n )}\n />\n (\n \n )}\n />\n \n {/* */}\n }\n />\n }\n />\n \n \n \n \n \n );\n};\n\nexport default Routes;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\n\nconst Authorization = (allowedRoles) => (WrappedComponent) =>\n class WithAuthorization extends Component {\n constructor(props) {\n super(props);\n const me = JSON.parse(localStorage.getItem('user'));\n let hasRole = false;\n if (me) {\n const { role } = me;\n\n hasRole = role.find((rol) => {\n if (allowedRoles.includes(rol)) {\n return true;\n }\n return null;\n });\n }\n\n if (!hasRole) {\n props.history.push('/404');\n }\n // if (!allowedRoles.includes(role)) {\n // props.history.push('/404');\n // }\n }\n\n render() {\n const me = JSON.parse(localStorage.getItem('user'));\n let hasRole = false;\n if (me) {\n const { role } = me;\n hasRole = role.find((rol) => {\n if (allowedRoles.includes(rol)) {\n return true;\n }\n return null;\n });\n }\n\n if (hasRole) {\n return ;\n }\n return null;\n }\n };\n\nexport default Authorization;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { checkSuperAdmin } from '../../Utils/admin';\n\nconst SuperAdminAuthorization = () => (WrappedComponent) =>\n class WithSuperAdminAuthorization extends Component {\n componentDidMount() {\n const user = JSON.parse(localStorage.getItem('user'));\n const isSuperAdmin = checkSuperAdmin(user);\n if (isSuperAdmin === false) {\n this.props.history.push('/404');\n }\n }\n\n render() {\n return ;\n }\n };\n\nexport default SuperAdminAuthorization;\n","import { useCallback } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { useDispatch } from 'react-redux';\n\nimport * as Analytics from '../../Utils/analytics';\nimport { PAGE_NAMES } from '../../Utils/analytics/constants';\nimport { signoutAsyncAction } from '../../modules/Session';\n\nconst useSignout = () => {\n const queryClient = useQueryClient();\n const dispatch = useDispatch();\n const signoutUser = useCallback(() => {\n queryClient.removeQueries();\n Analytics.trackPageView(PAGE_NAMES.SIGN_OUT);\n Analytics.signoutEvent();\n dispatch(signoutAsyncAction());\n }, [dispatch, queryClient]);\n\n return {\n signoutUser,\n };\n};\n\nexport default useSignout;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { useEffect } from 'react';\nimport Grid from '@material-ui/core/Grid';\n\nimport Typography from '../componentsV2/core/Typography';\nimport LoadingPulse from '../atomic/atoms/LoadingPulse';\nimport useSignout from '../hooks/useSignout';\n\nconst Signout = () => {\n const { signoutUser } = useSignout();\n useEffect(() => {\n signoutUser();\n }, [signoutUser]);\n\n return (\n \n \n Signing out\n \n \n \n );\n};\n\nexport default Signout;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { useState } from 'react';\nimport { FormikErrors } from 'formik';\n\nimport { STRENGTH_NONE } from '../../../constants/progressValidator';\nimport {\n validatePassword,\n checkPasswordStrength,\n passwordValidators,\n calculateValidationTexts,\n calculateStrength,\n} from '../../../Utils/validators/password';\n\ninterface PasswordInitialValue {\n password: string;\n}\n\nconst { newValidationTexts: passwordValidationText } = checkPasswordStrength();\n\nconst usePasswordWithValidator = () => {\n const [validationTexts, setValidationText] = useState(passwordValidationText);\n const [strength, setStrength] = useState(STRENGTH_NONE);\n\n const validateFormikForm = async (values: PasswordInitialValue) => {\n const { password } = values;\n const resultErrors: FormikErrors = {};\n\n const { isValid: isPasswordValid, errors } = validatePassword(\n password,\n passwordValidators,\n );\n const newValidationTexts = calculateValidationTexts(\n password,\n errors,\n passwordValidators,\n );\n setValidationText(newValidationTexts);\n const newStrength = calculateStrength(password, newValidationTexts);\n setStrength(newStrength);\n if (!isPasswordValid && errors.length) {\n [resultErrors.password] = errors;\n }\n return resultErrors;\n };\n\n return {\n models: {\n validationTexts,\n strength,\n },\n operations: {\n validateFormikForm,\n },\n };\n};\n\nexport default usePasswordWithValidator;\n","import * as Yup from 'yup';\n\nimport { PASSWORD_LANGUAGE } from '../../../Utils/validators/password';\nimport {\n PASSWORD_DO_NOT_MATCH_ERROR,\n REQUIRED_CONFIRM_PASSWORD,\n} from '../../../languages/en/signIn';\n\nconst validationSchema = Yup.object({\n password: Yup.string().required(PASSWORD_LANGUAGE.requiredPassword),\n confirmPassword: Yup.string()\n .required(REQUIRED_CONFIRM_PASSWORD)\n .when('password', {\n is: (val: string) => !!(val && val.length > 0),\n then: Yup.string().oneOf(\n [Yup.ref('password')],\n PASSWORD_DO_NOT_MATCH_ERROR,\n ),\n }),\n});\n\nexport default validationSchema;\n","import { useFormik } from 'formik';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory, useParams } from 'react-router-dom';\nimport {\n CreateYourPasswordPayload,\n CreateYourPasswordProps,\n} from '../../../atomic/organism/CreateYourPassword/interface';\nimport useCreateYourPasswordLogic from '../../../atomic/organism/CreateYourPassword/useCreateYourPasswordLogic';\nimport validationSchema from '../../../atomic/organism/CreateYourPassword/validationSchema';\nimport { SigninOptionsType } from '../../../atomic/organism/SigninOptions/interface';\nimport { DEFAULT_PATH } from '../../../constants/routes';\n\nimport {\n userSessionCreatedAction,\n handleUserSignin,\n} from '../../../modules/Session';\nimport {\n useVerifyCreatePasswordTokenQuery,\n useGetLoginOptionsQuery,\n SAMLLoginOptionsType,\n useCreatePasswordQuery,\n} from '../../../queries/Auth/createPassword';\n\ntype ParamTypes = {\n token: string;\n};\n\nconst useCreatePassword = () => {\n const { token } = useParams();\n const { push } = useHistory();\n const dispatch = useDispatch();\n\n const [createPasswordType, setCreatePasswordType] = useState<\n string | undefined\n >(undefined);\n const [emailForToken, setEmailForToken] = useState(\n undefined,\n );\n const [newPassword, setNewPassword] = useState(undefined);\n const [SAMLLoginOptions, setSAMLLoginOptions] = useState<\n SAMLLoginOptionsType | undefined\n >(undefined);\n\n if (!token) {\n push(DEFAULT_PATH);\n }\n\n const {\n data: verifyTokenData,\n error,\n isLoading,\n } = useVerifyCreatePasswordTokenQuery(!!token, token);\n\n const { data, isLoading: isLoginOptionsLoading } = useGetLoginOptionsQuery(\n !!emailForToken,\n emailForToken,\n );\n\n const { data: createPasswordData, isLoading: isCreatePasswordQueryLoading } =\n useCreatePasswordQuery(\n !!newPassword,\n verifyTokenData?.data.userId || '',\n newPassword,\n );\n\n useEffect(() => {\n if (verifyTokenData) {\n setEmailForToken(verifyTokenData.data.email);\n }\n }, [verifyTokenData]);\n\n useEffect(() => {\n if (data) {\n if (!data.password) {\n push(DEFAULT_PATH);\n } else if (data.saml) {\n setCreatePasswordType(SigninOptionsType.SAML_WITH_CREATE_PASSWORD);\n setSAMLLoginOptions(data.saml);\n } else {\n setCreatePasswordType(\n SigninOptionsType.CREATE_PASSWORD_WITH_NO_PREFERRED_SSO,\n );\n }\n }\n }, [data, push]);\n\n useEffect(() => {\n if (createPasswordData) {\n const { jwtToken, user } = createPasswordData.data;\n if (user && jwtToken) {\n dispatch(userSessionCreatedAction(user, jwtToken));\n handleUserSignin(user);\n }\n }\n }, [createPasswordData, dispatch, error]);\n\n const tokenInvalid = error?.response?.data.code === 102;\n\n const handleSaveButtonClick = useCallback(\n (val: CreateYourPasswordPayload) => {\n setNewPassword(val.password);\n },\n [],\n );\n const { models, operations } = useCreateYourPasswordLogic();\n const { validationTexts, strength } = models;\n const { validateFormikForm } = operations;\n\n const formik = useFormik({\n initialValues: {\n password: '',\n },\n validationSchema,\n validate: validateFormikForm,\n onSubmit: handleSaveButtonClick,\n });\n\n const createYourPasswordProps: CreateYourPasswordProps = {\n formik,\n validationTexts,\n strength,\n isExpandOnFocusEnabled: true,\n isLoading: isCreatePasswordQueryLoading,\n };\n\n return {\n isLoading: isLoading || isLoginOptionsLoading,\n tokenInvalid,\n createPasswordType,\n SAMLLoginOptions,\n createYourPasswordProps,\n };\n};\n\nexport default useCreatePassword;\n","import { AxiosError } from 'axios';\nimport { useQuery } from 'react-query';\nimport {\n VERIFY_CREATE_PASSWORD_TOKEN,\n GET_LOGIN_OPTIONS,\n CREATE_PASSWORD,\n} from '../../../constants/endpoints';\nimport { makeAPICallWithDataReturn } from '../../utils';\n\nexport interface VerifyCreatePasswordTokenResponse {\n data: {\n userId: string;\n email: string;\n };\n}\n\nexport type SAMLLoginOptionsType = {\n uri: string;\n name: string;\n};\n\nexport type GetLoginOptionsResponse = {\n password?: 'ENABLED' | 'DISABLED';\n memberId: string;\n sso?: 'SLACK' | 'GSUITE' | 'OFFICE365' | 'ADP' | 'NO_PREFERRED_SSO_FOUND';\n saml?: SAMLLoginOptionsType;\n};\n\nexport type GetLoginOptionsError = {\n message: string;\n};\n\nexport interface VerifyCreatePasswordTokenError {\n message: string;\n code: number;\n}\n\nexport interface CreatePasswordResponse {\n data: {\n user: any;\n jwtToken: string;\n };\n}\n\nexport type CreatePasswordError = {\n message: string;\n};\n\nexport const useVerifyCreatePasswordTokenQuery = (\n makeRequest = true,\n token = '',\n) => {\n return useQuery<\n VerifyCreatePasswordTokenResponse,\n AxiosError\n >(\n VERIFY_CREATE_PASSWORD_TOKEN,\n () =>\n makeAPICallWithDataReturn(VERIFY_CREATE_PASSWORD_TOKEN, null, undefined, {\n token,\n }),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useGetLoginOptionsQuery = (makeRequest = true, email = '') => {\n return useQuery>(\n GET_LOGIN_OPTIONS,\n () =>\n makeAPICallWithDataReturn(GET_LOGIN_OPTIONS, null, {\n email,\n }),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n\nexport const useCreatePasswordQuery = (\n makeRequest = true,\n userId = '',\n password = '',\n) => {\n return useQuery>(\n CREATE_PASSWORD,\n () =>\n makeAPICallWithDataReturn(CREATE_PASSWORD, {\n userId,\n password,\n }),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport styled from 'styled-components';\nimport Typography from '../../../componentsV2/core/Typography';\nimport LoadingPulse from '../../../atomic/atoms/LoadingPulse';\nimport Body from '../../../atomic/atoms/Body';\nimport Layout from '../../../aV2/Layout/onboarding';\nimport SigninSubText from '../../../atomic/molecules/SigninSubText';\nimport SignInOptions from '../../../atomic/organism/SigninOptions';\n\nimport useCreatePassword from './useCreatePassword';\nimport {\n CREATE_PASSWORD_BODY_TEXT,\n IS_THIS_CORRECT_TEXT,\n RETURN_TO_SIGN_IN_TEXT,\n SAML_WITH_NO_PREFERRED_SSO_BODY_TEXT,\n SAML_WITH_NO_PREFERRED_SSO_TEXT,\n SIGN_IN_WITH_SAML_TEXT,\n} from '../../../languages/en/signIn';\nimport { DEFAULT_PATH } from '../../../constants/routes';\nimport { SigninOptionsType } from '../../../atomic/organism/SigninOptions/interface';\nimport { SSOComponentProps } from '../../../pages/signin/interfaces';\nimport { SSOTypes } from '../../../Utils/data/ssoManager/common';\n\nexport const StyledSigninSubText = styled(SigninSubText)`\n margin-top: 12px;\n justify-content: center;\n`;\n\nexport const StyledInvalidDiv = styled.div`\n display: flex;\n justify-content: center;\n width: 100%;\n`;\n\nconst subTextProps = {\n text: IS_THIS_CORRECT_TEXT,\n linkOneText: RETURN_TO_SIGN_IN_TEXT,\n linkOnePath: DEFAULT_PATH,\n};\n\nconst CreatePasswordController = () => {\n const {\n isLoading,\n tokenInvalid,\n createPasswordType,\n SAMLLoginOptions,\n createYourPasswordProps,\n } = useCreatePassword();\n\n const [ssoType, setSSOType] = useState(undefined);\n const [ssoLoading, setSSOLoading] = useState(false);\n const handleSSOClick = useCallback((ssoTypeVal: string) => {\n setSSOType(ssoTypeVal);\n setSSOLoading(true);\n }, []);\n\n if (ssoLoading) {\n return (\n \n \n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n \n {ssoLoading ? `Connecting to ${ssoType}` : 'Verifying Slack'}\n \n \n \n \n );\n }\n\n if (\n createPasswordType === SigninOptionsType.SAML_WITH_CREATE_PASSWORD &&\n SAMLLoginOptions\n ) {\n const samlName = SAMLLoginOptions.name || 'SAML';\n const samlProps = {\n samlButtonText: SIGN_IN_WITH_SAML_TEXT(samlName),\n samlIcon: 'key',\n samlURL: SAMLLoginOptions.uri,\n headingText: SAML_WITH_NO_PREFERRED_SSO_TEXT(samlName),\n bodyText: SAML_WITH_NO_PREFERRED_SSO_BODY_TEXT(samlName),\n };\n return (\n \n \n \n );\n }\n if (\n createPasswordType ===\n SigninOptionsType.CREATE_PASSWORD_WITH_NO_PREFERRED_SSO\n ) {\n const ssoComponentProps: SSOComponentProps = {\n onSSOClick: handleSSOClick,\n ssoType: SSOTypes.SIGN_IN,\n };\n return (\n \n \n \n );\n }\n\n return (\n \n {isLoading && `Verifying Token`}\n {tokenInvalid && (\n <>\n \n \n Your token is invalid. Please try again.\n \n \n
\n \n
\n \n )}\n {isLoading && }\n
\n );\n};\n\nexport default CreatePasswordController;\n","import React, { useEffect, useState } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { parse } from 'qs';\n\nimport { useDispatch } from 'react-redux';\nimport AssemblyLanderLoadingScreen from '../../../atomic/molecules/AssemblyLanderLoadingScreen';\nimport { useMemberNotAuthenticated } from '../../../hooks/useAuth';\nimport { useAuthenticateGoogleOneTapCode } from '../../../queries/Auth/GoogleOneTap';\nimport RoutesList from '../../../aV2/routes/routesList';\nimport {\n userSessionCreatedAction,\n handleUserSignin,\n} from '../../../modules/Session';\nimport { SSOOptions, SSOTypes } from '../../../Utils/data/ssoManager/common';\n\nconst GoogleOneTapLoginController = () => {\n const [code, setCode] = useState(undefined);\n const { search } = useLocation();\n const { push } = useHistory();\n const dispatch = useDispatch();\n useMemberNotAuthenticated();\n\n const { data, error } = useAuthenticateGoogleOneTapCode(!!code, code);\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const isCodePresent = parsedParams && parsedParams.code;\n if (isCodePresent) {\n setCode(parsedParams.code as string);\n } else {\n push('/');\n }\n }, [push, search]);\n\n useEffect(() => {\n if (error) {\n push(\n `/${RoutesList.SSO_ERRORS_FN(\n SSOOptions.GOOGLE,\n SSOTypes.SIGN_IN,\n error.response?.data.message,\n )}`,\n );\n }\n }, [error, push]);\n\n useEffect(() => {\n if (data) {\n const { jwtToken, user } = data;\n if (user && jwtToken) {\n dispatch(userSessionCreatedAction(user, jwtToken));\n handleUserSignin(user);\n }\n }\n }, [data, dispatch]);\n\n return ;\n};\n\nexport default GoogleOneTapLoginController;\n","import { useHistory, useLocation } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { useEffect } from 'react';\nimport { FLOWS, V2_HOME } from '../../constants/routes';\nimport { APP_URL } from '../../config';\n\nexport const useMemberAuthenticated = () => {\n const { push } = useHistory();\n const { pathname, search } = useLocation();\n const isAuthenticated = useSelector(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (state) => state?.auth?.authenticated || false,\n );\n\n useEffect(() => {\n if (!isAuthenticated) {\n let path = pathname;\n if (search) {\n path = `${path}${search}`;\n }\n\n if (path.includes(FLOWS)) {\n push(`/e${path}`);\n return;\n }\n\n window.location.href = `${APP_URL}signin`;\n }\n }, [isAuthenticated, pathname, search, push]);\n return isAuthenticated;\n};\n\nexport const useMemberNotAuthenticated = () => {\n const { push } = useHistory();\n const isAuthenticated = useSelector(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (state) => state?.auth?.authenticated || false,\n );\n\n useEffect(() => {\n if (isAuthenticated) {\n push(V2_HOME);\n }\n }, [isAuthenticated, push]);\n return !isAuthenticated;\n};\n","import { useQuery } from 'react-query';\nimport { GOOGLE_ONE_TAP_AUTH } from '../../../constants/endpoints';\nimport { makeAPICallWithDataReturn } from '../../utils';\nimport {\n AuthSuccessResponse,\n AxiosAuthError,\n} from '../../../interfaces/Auth/ResponseTypes';\n\nexport const useAuthenticateGoogleOneTapCode = (\n makeRequest = true,\n code = '',\n) => {\n return useQuery(\n GOOGLE_ONE_TAP_AUTH,\n () => makeAPICallWithDataReturn(GOOGLE_ONE_TAP_AUTH, { idToken: code }),\n {\n staleTime: Infinity,\n enabled: makeRequest,\n },\n );\n};\n","import React, { useEffect } from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport { parse } from 'qs';\nimport { useLocation } from 'react-router-dom';\nimport Body from '../../../atomic/atoms/Body';\nimport LoadingPulse from '../../../atomic/atoms/LoadingPulse';\nimport { MS_TEAMS, setAppSource } from '../../../Utils/msteams';\n\nconst SAMLAuthModalController = () => {\n const { search } = useLocation();\n\n useEffect(() => {\n setAppSource(MS_TEAMS);\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n if (parsedParams) {\n const samlURL = decodeURIComponent(parsedParams.samlURL as string);\n window.location.href = samlURL;\n }\n }, [search]);\n return (\n \n Connecting\n \n \n );\n};\n\nexport default SAMLAuthModalController;\n","export default __webpack_public_path__ + \"static/media/MS-team-configure-popup-bg.f51a293d.svg\";","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { BaseCSSProperties } from '@material-ui/styles';\nimport Image from '../../atoms/Image';\nimport Heading from '../../atoms/Heading';\nimport Body from '../../atoms/Body';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport MSTeamConfigurePopupContentBG from '../../../img/MS-team-configure-popup-bg.svg';\nimport {\n setupConfigurePopupHeading,\n setupConfigurePopupText,\n} from '../../../Utils/data/identityManager/ssoOffice365';\n\nconst useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n alignItems: 'center',\n height: '400px',\n maxWidth: '600px',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginTop: '-40px',\n },\n root: {\n display: 'flex',\n alignItems: 'stretch',\n alignContent: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n width: '100%',\n },\n innerWrapper: {\n display: 'flex',\n alignItems: 'center',\n alignContent: 'center',\n flexDirection: 'column',\n maxWidth: '476px',\n margin: 'auto',\n },\n image: {\n display: 'block',\n margin: 'auto',\n },\n title: {\n color: ThemeV2.palette.gray10,\n margin: '16px 0px 8px 0px',\n },\n text: {\n color: ThemeV2.palette.gray8,\n },\n});\n\ninterface StyleProps {\n root: BaseCSSProperties;\n innerWrapper: BaseCSSProperties;\n image: BaseCSSProperties;\n title: BaseCSSProperties;\n}\n\n// type PropsClasses = Partial>;\n\nexport interface MSTeamConfigurePopupContentProps {\n classes?: StyleProps;\n}\n\nconst MSTeamConfigurePopupContent = (\n props: MSTeamConfigurePopupContentProps,\n) => {\n const classes = useStyles(props);\n return (\n
\n
\n
\n \n \n {setupConfigurePopupHeading}\n \n {setupConfigurePopupText}\n
\n
\n
\n );\n};\n\nexport default MSTeamConfigurePopupContent;\n","import { useCallback, useMemo } from 'react';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport { MS_TEAMS } from '../../Utils/msteams';\nimport { APP_URL, MS_TEAMS as MS_TEAMS_CONFIG } from '../../config';\n\nconst useMSTeamsConfig = () => {\n const setupMSTeamsConfig = useCallback(() => {\n microsoftTeams.initialize();\n\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n /* enabling the save button in configuration page */\n microsoftTeams.settings.setValidityState(true);\n\n /* Register event handler on save button */\n microsoftTeams.settings.registerOnSaveHandler((saveEvent) => {\n microsoftTeams.settings.setSettings({\n contentUrl: `${APP_URL}?source=${MS_TEAMS}`,\n entityId: MS_TEAMS_CONFIG.ENTITY_ID,\n suggestedDisplayName: MS_TEAMS_CONFIG.NAME,\n });\n saveEvent.notifySuccess();\n });\n }, []);\n\n const operations = useMemo(() => {\n return {\n setupMSTeamsConfig,\n };\n }, [setupMSTeamsConfig]);\n\n return {\n operations,\n };\n};\n\nexport default useMSTeamsConfig;\n","import React, { useEffect } from 'react';\n\nimport MSTeamConfigurePopupContent from '../../atomic/molecules/MSTeamConfigurePopupContent';\nimport useMSTeamsConfig from './useMSTeamsConfig';\nimport usePreferredSSO from './usePreferredSSO';\nimport { setMSTeamsAsSource } from '../../Utils/msteams';\n\nconst MSTeamsTabConfig = () => {\n setMSTeamsAsSource();\n const { operations } = useMSTeamsConfig();\n usePreferredSSO();\n\n useEffect(() => {\n operations.setupMSTeamsConfig();\n }, [operations]);\n return ;\n};\n\nexport default MSTeamsTabConfig;\n","import React, { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport ThemeV2 from '../../../componentsV2/theme';\n\nexport const CardRoot = styled.div`\n background: ${ThemeV2.palette.gray1};\n border-radius: 0px 0px 4px 4px;\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);\n`;\n\nexport interface CardProps {\n children: ReactNode;\n}\n\nconst Card = (props: CardProps) => {\n const { children, ...rest } = props;\n return {children};\n};\n\nexport default Card;\n","import React, { useMemo } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport styled from 'styled-components';\n\nimport Image from '../../atoms/Image';\nimport SVGIcon from '../../atoms/SVGIcon';\n\nexport const Wrapper = styled.div`\n position: relative;\n max-width: 100%;\n width: 100%;\n height: 252px;\n overflow: hidden;\n border-radius: 4px;\n z-index: 0;\n`;\n\nexport const GifBackground = styled.div<{ src: string }>`\n background: ${({ src }) => `url(${src})`};\n background-repeat: no-repeat;\n -webkit-filter: blur(23px); /* Safari 6.0 - 9.0 */\n filter: blur(23px);\n position: absolute;\n z-index: -1;\n width: 100%;\n height: 100%;\n background-size: cover;\n`;\n\nexport const ImageWrapper = styled(Image)`\n width: auto;\n margin: 0 auto;\n height: 100%;\n object-fit: contain;\n`;\n\nexport const SvgWrapper = styled.div`\n position: absolute;\n right: 12px;\n top: 12px;\n height: 24px;\n width: 24px;\n z-index: 0;\n cursor: pointer;\n`;\n\nexport interface GifContainerProps {\n src: string;\n onGifRemoveClick?: () => void;\n className?: string;\n lazyload?: boolean;\n}\n\nconst GifContainer = (props: GifContainerProps) => {\n const { src, onGifRemoveClick, className, lazyload } = props;\n const { ref, inView } = useInView({\n triggerOnce: true,\n skip: !lazyload,\n });\n\n const calculatedSrc = useMemo(() => {\n if (lazyload) {\n return inView ? src : '';\n }\n return src;\n }, [src, inView, lazyload]);\n\n return (\n \n \n {onGifRemoveClick && (\n \n \n \n )}\n \n \n );\n};\n\nexport default GifContainer;\n","import { useState, useEffect, useMemo } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { useMultipleJobsStatusQuery } from '../../queries/Polling';\nimport {\n MakeAPICallInterface,\n useGenericAPIQuery,\n} from '../../queries/Settings/identityManager';\nimport configureAssemblyStatus from '../../Utils/identity/configureAssemblyStatus';\n\ninterface UseMultipleJobsPollingV2Props {\n preJobsAPI: MakeAPICallInterface;\n postJobsAPI?: MakeAPICallInterface;\n enabled?: boolean;\n}\n\nfunction useMultipleJobsPollingV2(props: UseMultipleJobsPollingV2Props) {\n const queryClient = useQueryClient();\n const { preJobsAPI, postJobsAPI, enabled = false } = props;\n const [jobIds, setJobIds] = useState(undefined);\n const [isPostJobsEnabled, setIsPostJobsEnabled] = useState(false);\n const [jobsFailureError, setJobsFailureError] = useState<\n { message: string } | undefined\n >();\n\n const {\n data: preJobAPIData,\n isLoading: isPreJobAPILoading,\n error: preJobAPIError,\n } = useGenericAPIQuery(preJobsAPI, enabled);\n\n const {\n data: postJobAPIData,\n isLoading: isPostJobAPILoading,\n error: postJobAPIError,\n refetch: refetchPostJobAPI,\n } = useGenericAPIQuery(postJobsAPI, isPostJobsEnabled);\n\n useEffect(() => {\n if (preJobAPIData && preJobAPIData.details) {\n const { details } = preJobAPIData;\n const responseIDs = details.map(\n (item: { job: { id: string } }) => item.job.id,\n );\n setJobIds(responseIDs);\n }\n }, [preJobAPIData]);\n\n const { data: jobData, error: jobError } = useMultipleJobsStatusQuery(jobIds);\n\n const successfulJobs = useMemo(() => {\n if (jobData) {\n const { data = [] } = jobData;\n return data.filter(\n (job) => job?.status === configureAssemblyStatus.SUCCESS,\n );\n }\n return [];\n }, [jobData]);\n\n const failedJobs = useMemo(() => {\n if (jobData) {\n const { data = [] } = jobData;\n return data.filter(\n (job) => job?.status === configureAssemblyStatus.ERROR,\n );\n }\n return [];\n }, [jobData]);\n\n const isJobStatusSuccessful = useMemo(\n () => jobData && successfulJobs.length === jobData?.data?.length,\n [jobData, successfulJobs],\n );\n\n useEffect(() => {\n if (jobData) {\n if (successfulJobs.length === jobIds?.length) {\n setJobIds(undefined);\n if (postJobsAPI) {\n setIsPostJobsEnabled(true);\n refetchPostJobAPI();\n }\n } else if (failedJobs.length > 0) {\n setJobIds(undefined);\n setJobsFailureError({ message: configureAssemblyStatus.ERROR });\n }\n }\n }, [\n isPostJobsEnabled,\n jobData,\n refetchPostJobAPI,\n postJobsAPI,\n jobIds,\n successfulJobs,\n failedJobs,\n ]);\n\n useEffect(() => {\n if (jobError) {\n setJobIds(undefined);\n }\n }, [jobError]);\n\n useEffect(() => {\n return () => {\n queryClient.removeQueries(preJobsAPI?.apiName);\n queryClient.removeQueries(postJobsAPI?.apiName);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n isLoading: isPreJobAPILoading || isPostJobAPILoading,\n isJobRunning: jobIds !== undefined,\n error: preJobAPIError || postJobAPIError || jobError || jobsFailureError,\n data: postJobAPIData as T,\n isJobStatusSuccessful,\n };\n}\n\nexport default useMultipleJobsPollingV2;\n","import { useQuery } from 'react-query';\n\nimport { GET_MULTIPLE_JOBS_STATUS } from '../../constants/endpoints';\nimport { ResponseError } from '../../interfaces/ResponseError';\nimport { makeAPICallWithDataReturn } from '../utils';\n\ntype JobStatus = 'QUEUED' | 'PROCESSING' | 'ERROR' | 'SUCCESS';\nexport type JobsPollingResponse = {\n id: string;\n status: JobStatus;\n name: string;\n};\n\nexport interface JobsStatusResponse {\n data: JobsPollingResponse[];\n}\n\nexport const useMultipleJobsStatusQuery = (jobIds?: string[]) => {\n return useQuery(\n [GET_MULTIPLE_JOBS_STATUS, jobIds],\n () =>\n makeAPICallWithDataReturn(\n GET_MULTIPLE_JOBS_STATUS,\n undefined,\n undefined,\n {\n jobIds: jobIds?.join(',') || '',\n },\n ),\n {\n staleTime: Infinity,\n refetchInterval: 3000,\n enabled: jobIds !== undefined,\n },\n );\n};\n","import React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router-dom';\nimport Navbar from '../../../componentsV2/core/Navbar';\nimport Card from '../../../atomic/atoms/Card';\nimport Heading from '../../../atomic/atoms/Heading';\nimport Body from '../../../atomic/atoms/Body';\nimport LoadingPulse from '../../../atomic/atoms/LoadingPulse';\nimport GifContainer from '../../../atomic/molecules/GifContainer';\nimport { FLOWS_ONBOARDING_JOB } from '../../../constants/endpoints';\nimport { showErrorMessage } from '../../../Utils/toast';\nimport {\n SETUP_FLOWS_ERROR,\n SETUP_FLOWS_LOADING_INFO,\n SETUP_FLOWS_HEADER,\n} from '../../../languages/en/flows';\nimport useMultipleJobsPollingV2 from '../../../hooks/useMultipleJobsPolling';\nimport { APP_URL } from '../../../config';\n\nconst CardContainer = styled(Card)`\n padding: 32px;\n width: 500px;\n`;\n\nconst StyledGifContainer = styled(GifContainer)`\n margin: 24px 0;\n`;\n\nconst MainContainer = styled.div`\n margin-top: 94px;\n display: flex;\n justify-content: center;\n`;\n\nconst UserSetupController = () => {\n const history = useHistory();\n const { error, isJobStatusSuccessful } = useMultipleJobsPollingV2({\n preJobsAPI: {\n apiName: FLOWS_ONBOARDING_JOB,\n },\n enabled: true,\n });\n useEffect(() => {\n if (error) {\n showErrorMessage(SETUP_FLOWS_ERROR);\n }\n }, [error]);\n useEffect(() => {\n if (isJobStatusSuccessful || error) {\n window.location.href = `${APP_URL}home`;\n }\n }, [isJobStatusSuccessful, history, error]);\n return (\n
\n \n \n \n {SETUP_FLOWS_HEADER}\n {SETUP_FLOWS_LOADING_INFO}\n \n \n \n \n
\n );\n};\n\nexport default UserSetupController;\n","import pluralize from 'pluralize';\nimport { OPTION } from '../singleWords';\n\n/* eslint-disable max-len */\nexport const TAB_HEADER = {\n Dashboard: {\n TEXT: 'Dashboard',\n ARIA_LABEL: 'Dashboard Tab',\n },\n MyFlows: {\n TEXT: 'My Flows',\n ARIA_LABEL: 'My Flows Tab',\n },\n Archived: {\n TEXT: 'Archived',\n ARIA_LABEL: 'Archived Tab',\n },\n};\n\nexport const FLOWS_LOADER_LABELS = {\n PRIMARY_TEXT: 'Gathering your flows...',\n SECONDARY_TEXT: 'Hold on, we have to make sure',\n TERTIARY_TEXT: 'everything is in order for you.',\n};\n\nexport const FLOWS_ERROR_LABELS = {\n PRIMARY_TEXT: 'Flows failed to load.',\n SECONDARY_TEXT: 'Try refreshing the page.',\n};\n\nexport const FLOWS_LABELS = {\n FLOWS: 'Flows',\n CREATE_A_FLOW: 'Create a flow',\n FLOWS_DESCRIPTION: 'Check out your to-do’s and manage your flows!',\n};\n\n/* Flows Dashboard */\nexport const SHORTCUTS = {\n LABEL: 'Shortcuts',\n EMPTY_SHORTCUTS_TEXT:\n 'No shortcuts here...yet. Shortcuts allow you to answer a flow at any time, outside of any schedule.',\n SEE_MORE_LABEL: 'See more',\n COLLAPSE_ALL_LABEL: 'Collapse',\n};\n\n/* My Flows */\nexport const MY_FLOWS = {\n MY_PUBLISHED_FLOWS: 'My Published Flows',\n COLLECTING_ANSWERS_LABEL: 'Collecting Answers',\n COLLECTING_ANSWERS_EMPTY_MESSAGE:\n 'You don’t have any flows collecting answers right now. Start running one below!',\n MENU_ITEMS: {\n ALL: 'All',\n FORMS: 'Forms',\n ARCHIVE: 'Archive',\n RUN_NOW: 'Run now',\n MOST_RAN: 'Most ran',\n MESSAGES: 'Messages',\n LEAST_RAN: 'Least ran',\n ON_DEMAND: 'On demand',\n SCHEDULED: 'Scheduled',\n NEWEST_FLOW: 'Newest flow',\n OLDEST_FLOW: 'Oldest flow',\n DOWNLOAD_DATA: 'Download data',\n WITH_SHORTCUT: 'With Shortcut',\n ALPHABETICALLY: 'Alphabetically',\n TRANSFER_OWNER: 'Transfer owner',\n END_OCCURRENCE: 'End occurrence',\n ON_DEMAND_FLOWS: 'On demand flows',\n SCHEDULED_FLOWS: 'Scheduled flows',\n LATEST_RUN_DATE: 'Latest run date',\n OLDEST_RUN_DATE: 'Oldest run date',\n WITHOUT_SHORTCUT: 'Without Shortcut',\n ALL_TRIGGER_TYPES: 'All trigger types',\n MOST_PARTICIPANTS: 'Most Participants',\n LEAST_PARTICIPANTS: 'Least participants',\n SEE_PARTICIPATION_STATS: 'See participation stats',\n },\n};\n\nexport const FLOWS_STATUS_CARD = {\n MY_FLOWS_NO_FLOWS_CREATED: {\n mainText: 'You haven’t created any flows yet',\n subText:\n // eslint-disable-next-line max-len\n 'This is where you’ll find all of the flows you create. You’ll be able to view their status and manage them. But first, browse our templates.Set up a flow for your team, or just to keep track of your own work.',\n buttonText: 'Browse templates',\n },\n DASHBOARD_NO_FLOWS_PRESENT: {\n mainText: 'There’s no flows here!',\n subText:\n // eslint-disable-next-line max-len\n 'This is your dashboard for all things flows. We’ll make sure to show you what you have to answer and when. But first, browse our templates. Set up a flow for your team, or just to keep track of your own work.',\n buttonText: 'Browse templates',\n },\n DASHBOARD_ALL_FLOWS_COMPLETED: {\n mainText: 'You finished everything for today!',\n subText:\n // eslint-disable-next-line max-len\n 'You’re a flow finishing rock star. Got the stomach for more? Create another flow. Start by browsing our templates here.',\n },\n};\n\nexport const ARCHIVED_FLOWS = {\n MAIN_TEXT_LABEL: 'Archived Flows',\n ALL_LABEL: 'All',\n MOST_RECENT_LABEL: 'Most Recent',\n};\n\nexport const FLOWS_END_OCCURRENCE_MODAL = {\n modalHeading: 'End this occurrence',\n modalContentText:\n 'If you end this occurrence, it will end before the due date that you set, and participants will no longer be able to answer this flow.',\n};\n\nexport const FLOW_DATA_CHANGES_MODAL = {\n HEADING: 'Changes to flow data',\n CONTENT_TITLE_LABEL:\n 'This change to your flow content will create a new data set for this flow. To track changes to your flow’s data, we will create a new tab in your data download table as soon as the edited flow version has new responses (NOTE: If your flow does not have any responses yet, this will not affect your data). We store data for up to 20 of the latest versions of your data.',\n CONTENT_SUB_TITLE_LABEL: 'Changes that create a new version of your flow',\n CONTENT_CONDITION_LABEL_1: 'Changing a block’s title',\n CONTENT_CONDITION_LABEL_2: 'Changing a block’s type',\n CONTENT_CONDITION_LABEL_3: 'Adding or deleting a block',\n CONTENT_CONDITION_LABEL_4:\n ' Adding, changing, or removing options in the dropdown, multiple\\n' +\n ' choice, or scale blocks',\n CONTENT_DATA_DOWNLOAD_TEXT: 'Want to download all current data now?',\n DOWNLOAD_LABEL: 'Download this flow’s data',\n};\n\nexport const FLOWS_DELETE_FOREVER_MODAL = {\n CANCEL_LABEL: 'Cancel',\n DELETE_FOREVER_LABEL: 'Delete forever',\n MODAL_HEADING: 'Delete this flow forever',\n MODAL_CONTENT_TEXT:\n 'You will no longer have any record of this flow within Assembly. You may download the data before you delete if you’d like to reference it at a later date.',\n};\n\nexport const FLOWS_UNARCHIVE_MODAL = {\n CANCEL_LABEL: 'Cancel',\n UNARCHIVE_LABEL: 'Unarchive',\n MODAL_HEADING: 'This flow is archived',\n MODAL_CONTENT_TEXT:\n 'to view its feed. This will restore all posts to the feed and they will be visible to all viewers. You can archive it again at any time.',\n};\n\nexport const FLOWS_ARCHIVE_MODAL = {\n CANCEL_LABEL: 'Cancel',\n ARCHIVE_LABEL: 'Archive',\n MODAL_HEADING: 'Archive this flow',\n MODAL_CONTENT_TEXT:\n 'you will no longer have access to its feed, and it will not be visible to participants or viewers. You may unarchive it if you make a mistake. You’ll be able to find your archived flows in a folder under your active flow feeds.',\n};\n\nexport const FLOW_REMINDER_PARTICIPANT_MODAL = {\n CANCEL_LABEL: 'Cancel',\n SEND_REMINDER_LABEL: 'Send reminder',\n MODAL_HEADING: 'Remind participants',\n SEND_A_REMINDER: 'Send a reminder to all',\n THAT_HAVEN_NOT_ANSWERED: 'that haven’t answered the',\n get_not_responded_participants_count: (participantsCount: number) =>\n pluralize('participant', participantsCount, true),\n};\n\nexport const FLOWS_ARCHIVED_MODAL = {\n CANCEL_LABEL: 'Cancel',\n UNARCHIVE_LABEL: 'Unarchive',\n MODAL_HEADING: 'This flow is archived',\n MODAL_CONTENT_TEXT:\n 'Unarchive this flow to view its feed. You can still download the flow data at any time.',\n};\nexport const FLOWS_TO_DO = 'Flows To Do';\nexport const FLOWS_TO_DO_DESCRIPTION =\n 'Flows to do are time sensitive -- check out what you’ve got to do today!';\nexport const FLOW_OWNER = 'Flow owner';\nexport const UPDATE_FLOW_OWNER = 'Update flow owner';\n\nexport const START_FROM_SCRATCH = 'Start from scratch';\nexport const VIEW_FEED = 'View Feed';\nexport const COLLECTING_ANSWERS = 'Collecting answers';\nexport const OCCURRENCE_CLOSED = 'This occurrence is closed';\nexport const ANSWER_WITH_SHORTCUT = 'Answer with Shortcut';\nexport const MORE_OPTIONS = 'more options';\nexport const SEE_VISIBILITY_LABEL = 'See visibility';\nexport const VISIBILITY_LABEL = 'Visibility';\n\nexport const FLOW_RUN_MODAL = {\n PARTICIPANT_LABEL: 'Participants',\n HEADER: 'Run this flow',\n RUN_NOW_LABEL: 'Run Now',\n DESCRIPTION_LABEL:\n 'Review the details of this occurrence. Make sure the due date and participants are still accurate.',\n OCCURRENCE_LABEL: 'Occurrence Due Date',\n OCCURRENCE_DESCRIPTION:\n 'Assembly will send out notifications to make sure your participants know when the flow is due. Due date must be between 5 minutes and 4 weeks.',\n PARTICIPANTS_LABEL: 'Participants',\n PARTICIPANTS_DESCRIPTION:\n \"If you'd like to make changes to your participants, please contact\",\n VISIBILITY_LABEL: 'Visibility',\n ONLY_FLOW_PARTICIPANTS_LABEL: 'Only flow participants',\n MEMBERS_LABEL: 'members',\n};\n\nexport const FLOWS_LEFT_DRAWER_NAVIGATION_TITLE = 'Flows';\nexport const FLOWS_FEED_POST_TYPE_TEXT = 'posted in';\n\nexport const FLOWS_ACTION_BAR_OPTIONS = {\n VIEW_FEEDS: 'View Feeds',\n SHORTCUTS: 'Shortcuts',\n ANSWER_ANYTIME: 'Answer Anytime',\n NO_FEEDS: '👋 No feeds for you to view... yet.',\n NO_FLOWS_TO_ANSWER:\n '🍃 Nothing here...yet. These will be flows you can answer at any time.',\n FLOWS_TO_DO: 'Flows To Do',\n ADD_FLOW: 'add a new flow.',\n NO_TODOS: '✌️ You have no time-sensitive flows, answer a flow anytime below',\n TRY_SEARCHING_SOMETHING_ELSE: 'Try searching for something else!',\n NO_RESULTS: 'No results for this search',\n SEARCH_RESULTS: 'Search Results',\n ERROR: ' Flow menu failed to load. Please refresh the page to try again.',\n NEED_HELP: 'Need help?',\n NEED_HELP_REDIRECT_URL:\n 'https://www.joinassembly.com/articles/how-to-answer-a-flow',\n};\n\nexport const FLOW_USER_LIST_DROPDOWN_NO_RESULTS =\n 'No members found that match your criteria.';\n\nexport const FLOW_LEFT_DRAWER_ADD_NEW_FLOWS = 'Add a new flow';\nexport const FLOWS_LEFT_DRAWER_FEED_ERROR = 'Error loading flow feeds';\nexport const FLOWS_LEFT_DRAWER_FEED_EMPTY =\n 'You aren’t a part of any flows yet';\n\nexport const MEMBERS_LEFT_DRAWER_FEED_ERROR = 'Error loading flow feeds';\n\nexport const FLOW_LEFT_DRAWER_ADD = 'Add ';\nexport const FLOW_LEFT_DRAWER_TEAMMATES = 'teammates';\n\nexport const FILTER_BY = 'Filter by';\nexport const FILTER_BY_ANOTHER_FLOW = 'Filter by another flow...';\nexport const FILTER_BY_ANOTHER_MEMBER = 'Filter by another member...';\nexport const FILTER_BY_DIFFERENT_VERSION = 'Filter by a different version...';\nexport const FILTER_BY_DIFFERENT_BLOCK = 'Filter by a different block...';\nexport const SELECT_PERSON = 'Select person';\nexport const SELECT_FLOWS = 'Select flows';\nexport const SELECT_BLOCKS = 'Select blocks';\nexport const SELECT_VERSION = 'Select version';\nexport const POSTED_BY = 'Posted by';\nexport const NOTHING_TO_FILTER_BY = '🍃 Nothing to filter by';\nexport const APPLY_FILTERS = 'Apply filters';\nexport const SEARCH_GIFS = 'Search GIFs';\nexport const NO_GIFS_FOUND = 'No GIFs found.';\nexport const FLOW_ID = 'Flow ID';\nexport const RESPONSE_VISIBILITY = 'Response Visibility';\nexport const LINK_ACCESS_SETTINGS_LABEL = 'Link Access Settings';\nexport const WHOS_INCLUDED = `Who's included?`;\nexport const ERROR_PULLING_DATA = 'Error pulling data';\nexport const ONLY_FLOW_PARTICIPANTS = 'Only flow participants';\nexport const ONLY_OWNER = 'Owner only ';\nexport const DOWNLOAD_ALL_RESPONSES = 'Download all responses';\nexport const DATA_DOWNLOADED_SUCCESSFULLY = 'Data downloaded successfully!';\nexport const PREPARING_DATA_FOR_DOWNLOAD = 'Preparing data for download';\nexport const DATA_DOWNLOAD_ERROR =\n 'Whoops! An error occurred, please try again.';\n\nexport const FLOWS_ADDITIONAL_OPTIONS_END_OCCURRENCE_TEXT =\n 'If you end this occurrence, it will end before the due date that you set, and participants will no longer be able to answer it.';\n\nexport const FLOWS_ADDITIONAL_OPTIONS_ARCHIVE_FLOW_TEXT_ENABLED =\n 'You will no longer have access to this feed, and it will not be visible to participants or viewers. You may unarchive it if you make a mistake.';\n\nexport const FLOWS_ADDITIONAL_OPTIONS_ARCHIVE_FLOW_TEXT_DISABLED =\n 'If you’d like to archive this flow, you must end its active occurrence first.';\n\nexport const CELEBRATE_YOUR_TEAMMATES =\n 'Celebrate all of the amazing things your teammates do!';\n\nexport const ON_DEMAND = 'On demand';\nexport const SCHEDULED = 'Scheduled';\nexport const NO_TRIGGER = 'No trigger';\nexport const SCHEDULED_OR_ANSWER_ANYTIME = 'Scheduled or answer anytime';\nexport const ON_DEMAND_OR_ANSWER_ANYTIME = 'On demand or answer anytime';\nexport const FLOW_NOT_FOUND = 'Flow not found';\nexport const FLOW_NOT_FOUND_DESCRIPTION =\n 'This flow has been deleted or does not exist';\n\nexport const FLOW_FEED_HEADER_OPTIONS = {\n COPY_FLOW_FEED_LINK: 'Copy flow feed link',\n HIDE_ACTIVITY: 'Hide activity',\n SHOW_ACTIVITY: 'Show activity',\n EDIT_NOTIFICATION_SETTINGS: 'Edit notification settings',\n RUN_FLOW_NOW: 'Run flow now',\n ARCHIVE_FLOW: 'Archive flow',\n REMIND_PARTICIPANTS: 'Remind participants',\n END_OCCURRENCE: 'End occurrence',\n};\n\nexport const INVITE_MODAL_PLACEHOLDER =\n 'Start typing emails here, separated by commas or spaces';\n\nexport const SINGLE_INVALID_EMAIL = 'You have added an invalid email.';\nexport const MULTI_INVALID_EMAILS = 'A few emails are invalid';\n\nexport const INVITE_PENDING = 'Sending invites';\nexport const INVITE_SUCCESS = 'Teammates successfully invited.';\nexport const REQUEST_INVITE_PENDING = 'Sending invite request';\nexport const REQUEST_INVITE_SUCCESS = 'Successfully requested invite(s)';\n\nexport const INVITE_ERROR = 'Failed to invite teammates. Try again.';\nexport const REQUEST_INVITE_ERROR =\n 'Failed teammates invite request. Try again.';\n\nexport const INVITE_ASSEMBLY = 'Invite people to Assembly';\nexport const INVITE_HELPER_TEXT =\n 'Type or copy/paste new emails, separated by commas or spaces.';\n\nexport const ENTER_TEAMMATES_EMAIL = 'Enter teammates email';\n\nexport const REQUEST_INVITE_TEAMMATES = 'Request admins to invite teammates';\n\nexport const COPIED_TO_CLIPBOARD = 'Copied to Clipboard';\n\nexport const ANSWER_A_FLOW = 'Answer a flow';\nexport const GET_FLOWS_TODO_NOTIFICATION_TEXT = (todoCount: number) =>\n `You have ${pluralize('flow', todoCount, true)} to do`;\nexport const FLOW_ACTION_BAR_NOTIFICATION_TEXT = 'Collecting answers ';\nexport const IS_CLOSED = 'is closed';\n\nexport const CHOOSE_AN_OPTION = 'Choose an option.';\nexport const CHOOSE_OPTIONS = 'Choose options.';\nexport const getMultipleOptionsHelperText = (num: number) =>\n `Choose ${num} options.`;\nexport const getRangeHelperText = (min: number, max: number) =>\n `Choose between ${min} and ${max} options.`;\nexport const getDropdownMaxErrorText = (max: number) =>\n `Select a maximum of ${max} options`;\nexport const getDropdownMinErrorText = (min: number) =>\n `Select atleast ${min} options`;\nexport const getDropdownExactErrorText = (exact: number) =>\n `Select ${exact} options`;\nexport const getMembersText = (memberCount: number) =>\n `${pluralize('member', memberCount, true)}`;\nexport const SELECT_ATLEAST_ONE_PERSON_WARNING = (\n pluralCurrency: string,\n) => `You must select atleast one person to give ${pluralCurrency}\nto.`;\nexport const SELECT_PEOPLE = 'Select people';\nexport const getMultiplePeopleHelperText = (num: number) =>\n `Select ${num} people.`;\nexport const getPeopleRangeHelperText = (min: number, max: number) =>\n `Select between ${min} and ${max} people.`;\nexport const getPeopleMaxErrorText = (max: number) =>\n `Select a maximum of ${max} people`;\nexport const getPeopleMinErrorText = (min: number) =>\n `Select atleast ${min} people`;\nexport const getPeopleExactErrorText = (exact: number) =>\n `Select ${exact} people`;\nexport const getOptionsRangeHelperText = (min: number, max: number) =>\n `Select between ${min} and ${max} options.`;\nexport const getUnlimitedOptionsHelperText = (count: number) =>\n `Select up to ${count} options.`;\nexport const getExactOptionsHelperText = (count: number) =>\n `Select exactly ${pluralize(OPTION, count, true)}.`;\nexport const EMAIL_NOTIFICATION_SETTINGS = {\n flows: {\n notificationType: 'Flows',\n description: 'Notify me about participation and activity',\n\n celebrateTeamMate: {\n title: 'Celebrate a Teammate',\n participation: 'Participation',\n participationDescription: 'Reminders',\n response: 'Response',\n responseDescription: 'Notify me when I’m celebrated',\n },\n otherFlows: {\n groupTitle: 'Participation',\n preferences: {\n whenThisFlowStarts: 'When this flow starts',\n reminder: 'Reminders',\n },\n },\n },\n recognition: {\n notificationType: 'Recognition',\n description: 'Notify me when I receive recognition',\n },\n mentions: {\n notificationType: 'Mentions',\n description: 'Notify me when I am mentioned in a post or comment',\n },\n allowance: {\n notificationType: 'Give recognition reminder',\n description: 'Remind me if I forget to give recognition',\n },\n anniversaryNBirthday: {\n notificationType: 'Birthdays & Anniversaries',\n description: 'Notify me on my birthday and work anniversary',\n },\n comments: {\n notificationType: 'Comments',\n description: 'Notify me of comments on posts I am a part of',\n },\n activityUpdate: {\n notificationType: 'Activity update',\n description: 'Notify me of any fun or interesting activity',\n },\n};\n\nexport const SEARCH_PLACEHOLDER_TEXT = 'Search Members';\nexport const EMAIL_NOTIFICATION_SETTINGS_EMPTY_FLOWS =\n 'You are not a participant in any flows yet. Once you are, your settings will be here.';\n\nexport const FLOW_FILE_UPLOAD_ERROR_TEXTS = {\n MORE_FILES: 'You can only upload 15 files',\n MAX_FILE_SIZE: 'This file exceeds maximum allowed size of 24 MB',\n MORE_THAN_15_FILES: '15 file limit reached',\n MORE_THAN_25_MB: '25MB limit reached',\n};\n\nexport const PARTICIPANT_LIST_TEXTS = {\n MEMBERS: 'members',\n VIEWERS: 'Viewers',\n PARTICIPANTS: 'Participants',\n NO_PARTICIPANTS:\n 'No participants yet. Select criteria to add participants to your flow.',\n NO_MATCHING_PARTICIPANTS: 'No one currently matches these criteria.',\n};\n\nexport const ONDEMAND = 'On-demand';\nexport const REVERT_CHANGES_LABEL = 'Revert Changes';\nexport const SETUP_FLOWS_HEADER = 'Your account is getting set up!';\nexport const SETUP_FLOWS_ERROR =\n 'SOMETHING WENT WRONG WHILE INITIALIZING FLOWS DURING SETUP.';\nexport const SETUP_FLOWS_LOADING_INFO = `You’re almost ready to join your team. Hold tight for a minute while\n we load up your flows and get your workspace ready for you. You can leave this window, but please keep the tab open for us.`;\nexport const SETUP_PRELOADED_FLOWS_LOADING_INFO = `Hold tight for a minute while\n we load up your flows and get your workspace ready for you. You can leave this window, but please keep the tab open for us.`;\n\nexport const ERROR_UPLOADING = 'Error uploading';\nexport const MAXIMUM_UPLOAD_LIMIT = 'Maximum: 25MB or 15 files';\nexport const PREVIEW_DISABLE_UPLOAD_TEXT = `Can't upload files in Preview mode`;\nexport const UPLOAD_FILE = 'Upload File';\n\nexport const CLICK_POST_TO_SUBMIT = 'Click Post to submit';\nexport const PRESS_ENTER = 'Press Enter';\nexport const PRESS_SHIFT = 'Press Shift';\nexport const TO_PROCEED = 'to proceed';\nexport const FOR_LINE_BREAK = 'for line break';\nexport const RESTART_FLOW = 'Restart flow';\n\nexport const FLOW_OWNER_ENDED_INFO =\n 'Flow schedule ended. Click restart to reactivate';\nexport const FLOW_OWNER_SHORTCUT_ENDED_INFO =\n 'This flow can still be answered anytime, outside of the ended schedule.';\nexport const FLOW_ENDED_INFO =\n 'Flow schedule ended. This flow will run again when the flow owner restarts it.';\nexport const FLOW_SHORTCUT_ENDED_INFO =\n 'Flow schedule ended. The flow will run again when the flow owner restarts it. You can still answer this flow anytime in the meantime.';\n\nexport const ARCHIVE_IT = 'archive it';\n\nexport const ASSEMBLY_TEMPLATE_DESCRIPTION = `The team at Assembly is committed to engaging and empowering employees\nto do extraordinary things by providing you with best-in-class\ntemplates for work related functions.`;\n\nexport const MIN_OPTION_ERROR = 'You must add at least 1 option.';\n\nexport const INVITE_MEMBER_HELPER_TEXT =\n 'To invite new members to your Assembly for this flow, type or copy and paste their emails, separated by commas.';\n\nexport const INVITE_MEMBER_EMAIL_VALIDATION_ERROR =\n 'This is not a valid email, please correct this to continue.';\n\nexport const GET_HELP = 'Get help';\nexport const COPY_LINK = 'Copy link';\n\nexport const EXTERNAL_FLOWS_COMPLETION = {\n HEADING: 'Woohoo! Thanks for responding 🙌 ',\n SUB_HEADING:\n 'Interested in surveys, engaging your team, or running better meetings?',\n ALREADY_MEMBER: 'Already a member of an Assembly workspace?',\n};\n\nexport const POWERED_BY_ASSEMBLY = 'Powered by Assembly 💪';\n","import React from 'react';\nimport SSOOnboardingTemplate from '../../../atomic/templates/SSOOnboardingTemplate/SSOOnboardingTemplate';\n\nconst SSOAuthorizePresentational = () => {\n return Authorize failed;\n};\n\nexport default SSOAuthorizePresentational;\n","import { useEffect, useCallback, useState } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { parse } from 'qs';\nimport { get } from 'lodash';\nimport * as microsoftTeams from '@microsoft/teams-js';\n\nimport { APP_URL } from '../../../config';\nimport RoutesList from '../../../aV2/routes/routesList';\nimport useRequest from '../../../hooks/useRequest/useRequest';\nimport { SSO_SIGNIN, SSO_SIGNUP } from '../../../constants/endpoints';\n\nimport {\n userSessionCreatedAction,\n handleUserSignin,\n} from '../../../modules/Session';\nimport { SSOTypes } from '../../../Utils/data/ssoManager/common';\n\nconst useVerifySSOCode = (\n sso: string,\n ssoType: SSOTypes,\n authInModal: boolean,\n) => {\n const { search } = useLocation();\n const { push } = useHistory();\n const dispatch = useDispatch();\n const [isVerifyingCode, setIsVerifyingCode] = useState(false);\n const onSuccess = useCallback(\n (data) => {\n const token = get(data, ['data', 'jwtToken']);\n const user = get(data, ['data', 'user']);\n if (user && token) {\n dispatch(userSessionCreatedAction(user, token));\n handleUserSignin(user);\n }\n setIsVerifyingCode(false);\n },\n [dispatch],\n );\n\n const handleError = useCallback(\n (message = 'SERVER_ERROR') => {\n setIsVerifyingCode(false);\n const errorMessage = get(message, ['response', 'data', 'message']);\n if (errorMessage) {\n push(`/${RoutesList.SSO_ERRORS_FN(sso, ssoType, errorMessage)}`);\n }\n },\n [push, sso, ssoType],\n );\n const { fireRequest: signinRequest } = useRequest(SSO_SIGNIN, {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onError: handleError,\n });\n\n const { fireRequest: signupRequest } = useRequest(\n SSO_SIGNUP,\n\n {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onSuccess,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onError: handleError,\n },\n );\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const isCodePresent = parsedParams && parsedParams.code;\n const hasError = parsedParams && parsedParams.error;\n if (isCodePresent) {\n const { code, from } = parsedParams;\n setIsVerifyingCode(true);\n const fromTab = from === 'tab';\n if (authInModal && !fromTab) {\n microsoftTeams.initialize();\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n microsoftTeams.authentication.notifySuccess({\n sso,\n code: `${code}`,\n ssoType: `${ssoType}`,\n });\n } else {\n if (ssoType === SSOTypes.SIGN_IN) {\n let REDIRECT_URI;\n if (fromTab) {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_AUTHORIZE_MODAL_FN(\n sso,\n ssoType,\n )}`;\n } else {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_SIGNIN_AUTHORIZE_FN(\n sso,\n )}`;\n }\n signinRequest({\n payload: { code, redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n }\n if (ssoType === SSOTypes.SIGN_UP) {\n let REDIRECT_URI;\n if (fromTab) {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_AUTHORIZE_MODAL_FN(\n sso,\n ssoType,\n )}`;\n } else {\n REDIRECT_URI = `${APP_URL}${RoutesList.SSO_SIGNUP_AUTHORIZE_FN(\n sso,\n )}`;\n }\n signupRequest({\n payload: { code, redirectUri: REDIRECT_URI },\n substitutions: { sso },\n });\n }\n }\n }\n if (hasError) {\n if (authInModal) {\n microsoftTeams.initialize();\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n microsoftTeams.authentication.notifyFailure(parsedParams.error);\n } else {\n push(`/${RoutesList.SSO_ERRORS_FN(sso, ssoType, parsedParams.error)}`);\n }\n }\n }, [sso, search, signinRequest, ssoType, signupRequest, push, authInModal]);\n\n return {\n models: {\n isVerifyingCode,\n },\n };\n};\n\nexport default useVerifySSOCode;\n","import React, { useCallback, useEffect } from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport { useHistory, useLocation, useParams } from 'react-router-dom';\nimport { parse } from 'qs';\nimport {\n SSOOptions,\n SSOContent,\n SSOTypes,\n} from '../../../Utils/data/ssoManager/common';\nimport SSOAuthorizePresentational from './SSOAuthorize.presentational';\n\nimport useVerifySSOCode from '../useVerifySSOCode/useVerifySSOCode';\nimport useFetchSSOConfig from '../useFetchSSOConfig/useFetchSSOConfig';\nimport Body from '../../../atomic/atoms/Body';\nimport LoadingPulse from '../../../atomic/atoms/LoadingPulse';\nimport GSuiteSSOController, {\n GOOGLE_SSO_FLOW,\n GSuiteSSOChildrenProps,\n} from '../../../controllers/GSuiteSSOController';\nimport routesList from '../../../aV2/routes/routesList';\n\nconst DisplayComponent = ({ isLoading, displayName }: any) => (\n \n \n {isLoading ? `Connecting to ${displayName}` : `Verifying ${displayName}`}\n \n \n \n);\n\nconst GSuiteComponent = ({ loaded, signIn, isLoading, displayName }: any) => {\n useEffect(() => {\n if (loaded) {\n signIn();\n }\n }, [loaded, signIn]);\n return ;\n};\n\ninterface SSOAuthorizeProps {\n ssoType: SSOTypes;\n authInModal: boolean;\n}\nconst SSOAuthorize = ({ ssoType, authInModal }: SSOAuthorizeProps) => {\n const { sso } = useParams<{ sso: SSOOptions }>();\n const { push } = useHistory();\n const { search } = useLocation();\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const { auto } = parsedParams;\n const { models: fetchSSOModels } = useFetchSSOConfig(\n sso,\n ssoType,\n authInModal,\n );\n const { models } = useVerifySSOCode(sso, ssoType, authInModal);\n const verifyGoogleSSOCode = useCallback(\n (code) => {\n const basePath =\n ssoType === SSOTypes.SIGN_IN\n ? routesList.SSO_SIGNIN_AUTHORIZE_FN(SSOOptions.GOOGLE)\n : routesList.SSO_SIGNUP_AUTHORIZE_FN(SSOOptions.GOOGLE);\n push(`/${basePath}?code=${code}`);\n },\n [push, ssoType],\n );\n\n const handleGoogleSSOError = useCallback(\n (error) => {\n const { error: errorCode } = error;\n push(`/${routesList.SSO_ERRORS_FN(sso, ssoType, errorCode)}`);\n },\n [push, sso, ssoType],\n );\n\n if (sso === SSOOptions.GOOGLE && auto === 'true') {\n return (\n \n {({ signIn, loaded }: GSuiteSSOChildrenProps) => (\n \n )}\n \n );\n }\n\n if (models.isVerifyingCode || fetchSSOModels.isLoading) {\n return (\n \n );\n }\n\n return ;\n};\n\nSSOAuthorize.defaultProps = {\n authInModal: false,\n};\n\nexport default SSOAuthorize;\n","import React from 'react';\nimport SSOOnboardingTemplate from '../../../atomic/templates/SSOOnboardingTemplate/SSOOnboardingTemplate';\nimport SSOInfoCard from '../../../atomic/pages/SSOInfoCard';\n\ninterface SSOErrorsPresentationalProps {\n headerText: string;\n bodyText: string;\n primaryButton: {\n buttonText: string;\n icon?: string;\n onClick: () => void;\n };\n subText?: {\n text: string;\n linkText?: string;\n linkPath?: string;\n };\n}\n\nconst SSOErrorsPresentational = ({\n headerText,\n bodyText,\n primaryButton,\n subText,\n}: SSOErrorsPresentationalProps) => {\n return (\n \n \n \n );\n};\n\nexport default SSOErrorsPresentational;\n","import { useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { SSOOptions, SSOTypes } from '../../../Utils/data/ssoManager/common';\nimport {\n SSOErrorCodes,\n getSSOErrorData,\n} from '../../../Utils/data/ssoManager/error';\nimport RoutesList from '../../../aV2/routes/routesList';\n\nconst useSSOError = (\n sso: SSOOptions,\n ssoType: SSOTypes,\n errorCode: SSOErrorCodes,\n) => {\n const { push } = useHistory();\n const { headerText, bodyText, buttonText, buttonIcon, urlToPush } =\n getSSOErrorData(errorCode, ssoType, sso);\n\n const handleButtonClick = useCallback(() => {\n push(urlToPush);\n }, [urlToPush, push]);\n\n let subText;\n switch (errorCode) {\n case SSOErrorCodes.SIGNIN_VIA_ADP:\n case SSOErrorCodes.SIGNIN_VIA_OFFICE365:\n case SSOErrorCodes.SIGNIN_VIA_SLACK:\n case SSOErrorCodes.SIGNIN_VIA_GOOGLE:\n case SSOErrorCodes.SIGNIN_VIA_SAML:\n subText = {\n text: 'Is this incorrect?',\n linkText: 'Return to sign in',\n linkPath: RoutesList.SIGN_IN,\n };\n break;\n default:\n break;\n }\n\n return {\n models: { headerText, bodyText, buttonText, buttonIcon, subText },\n operations: { onPrimaryButtonClick: handleButtonClick },\n };\n};\n\nexport default useSSOError;\n","import React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { SSOOptions, SSOTypes } from '../../../Utils/data/ssoManager/common';\nimport SSOErrorsPresentational from './SSOErrors.presentational';\n\nimport useSSOError from './useSSOError';\nimport { SSOErrorCodes } from '../../../Utils/data/ssoManager/error';\n\nconst SSOErrors = () => {\n const { sso, ssoType, errorCode } = useParams<{\n sso: SSOOptions;\n ssoType: SSOTypes;\n errorCode: SSOErrorCodes;\n }>();\n const { models, operations } = useSSOError(sso, ssoType, errorCode);\n\n return (\n \n );\n};\n\nexport default SSOErrors;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { useState, useEffect, useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useLocation } from 'react-router-dom';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Collapse from '@material-ui/core/Collapse';\nimport { Link } from 'react-router-dom';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\n\nimport RoutesList from '../../../../aV2/routes/routesList';\n\nimport {\n SplitNames,\n TreatmentTypes,\n} from '../../../../hooks/useSplitSdkConfig/constants';\nimport { getMainRoutePath } from '../../../../Utils/admin/urls';\nimport { useFeatureSplit } from '../../../../hooks/useFeatureSplit';\nimport ThemeV2 from '../../../../componentsV2/theme';\nimport SVGIcon from '../../../../atomic/atoms/SVGIcon';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n maxWidth: 360,\n },\n nested: {\n paddingLeft: theme.spacing(8),\n },\n itemText: {\n fontSize: ThemeV2.typography.fontSize,\n color: ThemeV2.palette.darkGray9,\n },\n selectedText: {\n fontSize: ThemeV2.typography.fontSize,\n color: ThemeV2.palette.primary.main,\n },\n}));\n\nconst AdminMenuCategory = {\n workspace: {\n id: 'workspace',\n display: 'Workspace',\n },\n recognition: {\n id: 'recognition',\n display: 'Recognition',\n },\n flows: {\n id: 'flows',\n display: 'Flows',\n },\n users: {\n id: 'users',\n display: 'Users',\n },\n celebration: {\n id: 'celebration',\n display: 'Celebration Bots',\n },\n rewards: {\n id: 'rewards',\n display: 'Rewards',\n },\n billing: {\n id: 'billing',\n display: 'Billing',\n },\n security: {\n id: 'security',\n display: 'Security & Login',\n },\n};\n\n// YDOUBT\nconst AdminRouteIndex = {\n GENERAL: 2,\n ALLOWANCES: 3,\n INTEGRATIONS: 4,\n INSIGHTS: 5,\n RECOGNITION_SETTINGS: 7,\n RECOGNITION_ACTIVITY: 8,\n RECOGNITION_PARTICIPATION: 9,\n FLOW_PERMISSIONS: 11,\n USERS_MANAGE: 13,\n USERS_INVITE: 14,\n USERS_EARNINGS: 15,\n CELEBRATION_BIRTHDAY: 17,\n CELEBRATION_ANNIVERSARY: 18,\n REWARDS_GIFT_CARDS: 20,\n REWARDS_CULTURE: 21,\n REWARDS_SWAGS: 22,\n REWARDS_CHARITY: 23,\n REWARDS_REPORT: 24,\n BILLING_ACCOUNT: 25,\n BILLING_HISTORY: 26,\n BILLING_METHOD: 27,\n SECURITY_SAML: 29,\n};\n\nconst AdminRoutesList = {\n workspace: [\n {\n url: RoutesList.ADMIN_WORKSPACE_GENERAL,\n display: 'General',\n index: AdminRouteIndex.GENERAL,\n },\n {\n url: RoutesList.ADMIN_WORKSPACE_ALLOWANCES,\n display: 'Allowances',\n index: AdminRouteIndex.ALLOWANCES,\n },\n {\n url: RoutesList.ADMIN_WORKSPACE_INTEGRATIONS,\n display: 'Integrations',\n index: AdminRouteIndex.INTEGRATIONS,\n },\n {\n url: RoutesList.ADMIN_WORKSPACE_INSIGHTS,\n display: 'Insights',\n index: AdminRouteIndex.INSIGHTS,\n },\n ],\n recognition: [\n {\n url: RoutesList.ADMIN_RECOGNITION_SETTINGS,\n display: 'Settings',\n index: AdminRouteIndex.RECOGNITION_SETTINGS,\n },\n {\n url: RoutesList.ADMIN_RECOGNITION_ACTIVITY,\n display: 'Activity',\n index: AdminRouteIndex.RECOGNITION_ACTIVITY,\n },\n {\n url: RoutesList.ADMIN_RECOGNITION_PARTICIPATION,\n display: 'Participation',\n index: AdminRouteIndex.RECOGNITION_PARTICIPATION,\n },\n ],\n flows: [\n {\n url: RoutesList.ADMIN_FLOWS_PERMISSIONS,\n display: 'Permissions',\n index: AdminRouteIndex.FLOW_PERMISSIONS,\n },\n ],\n users: [\n {\n url: RoutesList.ADMIN_USER_MANAGE,\n display: 'Manage',\n index: AdminRouteIndex.USERS_MANAGE,\n },\n {\n url: RoutesList.ADMIN_USER_INVITE,\n display: 'Invite',\n index: AdminRouteIndex.USERS_INVITE,\n },\n {\n url: RoutesList.ADMIN_USER_EARNINGS,\n display: 'Earnings',\n index: AdminRouteIndex.USERS_EARNINGS,\n },\n ],\n celebration: [\n {\n url: RoutesList.ADMIN_CELEBRATIONS_BIRTHDAYS,\n display: 'Birthday',\n index: AdminRouteIndex.CELEBRATION_BIRTHDAY,\n },\n {\n url: RoutesList.ADMIN_CELEBRATIONS_ANNIVERSARIES,\n display: 'Anniversary',\n index: AdminRouteIndex.CELEBRATION_ANNIVERSARY,\n },\n ],\n rewards: [\n {\n url: RoutesList.ADMIN_REWARDS_GIFT_CARDS,\n display: 'Gift Cards',\n index: AdminRouteIndex.REWARDS_GIFT_CARDS,\n },\n {\n url: RoutesList.ADMIN_REWARDS_CULTURE,\n display: 'Culture Rewards',\n index: AdminRouteIndex.REWARDS_CULTURE,\n },\n {\n url: RoutesList.ADMIN_REWARDS_SWAGS,\n display: 'Axomo Swag',\n index: AdminRouteIndex.REWARDS_SWAGS,\n },\n {\n url: RoutesList.ADMIN_REWARDS_CHARITY,\n display: 'Charitable Donations',\n index: AdminRouteIndex.REWARDS_CHARITY,\n },\n {\n url: RoutesList.ADMIN_REWARDS_REPORT,\n display: 'Redemption Report',\n index: AdminRouteIndex.REWARDS_REPORT,\n },\n ],\n billing: [\n {\n url: RoutesList.ADMIN_BILLING_ACCOUNT,\n display: 'Account Plan',\n index: AdminRouteIndex.BILLING_ACCOUNT,\n },\n {\n url: RoutesList.ADMIN_BILLING_HISTORY,\n display: 'Payment History',\n index: AdminRouteIndex.BILLING_HISTORY,\n },\n {\n url: RoutesList.ADMIN_BILLING_METHOD,\n display: 'Payment Method',\n index: AdminRouteIndex.BILLING_METHOD,\n },\n ],\n security: [\n {\n url: RoutesList.ADMIN_SAML_AUTHENTICATION,\n display: 'SAML Authentication',\n index: AdminRouteIndex.SECURITY_SAML,\n },\n ],\n};\n\nconst getUpdatedSelectedIndex = (path) => {\n let index = AdminRouteIndex.GENERAL;\n let category = AdminMenuCategory.workspace.id;\n const mainRoutePath = getMainRoutePath(path);\n switch (mainRoutePath) {\n // YTODO\n case RoutesList.ADMIN_WORKSPACE_GENERAL:\n index = AdminRouteIndex.GENERAL;\n break;\n case RoutesList.ADMIN_WORKSPACE_ALLOWANCES:\n case RoutesList.ADMIN_WORKSPACE_ALLOWANCES_MANAGE:\n index = AdminRouteIndex.ALLOWANCES;\n break;\n case RoutesList.ADMIN_WORKSPACE_INTEGRATIONS:\n index = AdminRouteIndex.INTEGRATIONS;\n break;\n case RoutesList.ADMIN_WORKSPACE_INSIGHTS:\n index = AdminRouteIndex.INSIGHTS;\n break;\n case RoutesList.ADMIN_RECOGNITION_SETTINGS:\n index = AdminRouteIndex.RECOGNITION_SETTINGS;\n category = AdminMenuCategory.recognition.id;\n break;\n case RoutesList.ADMIN_RECOGNITION_ACTIVITY:\n index = AdminRouteIndex.RECOGNITION_ACTIVITY;\n category = AdminMenuCategory.recognition.id;\n break;\n case RoutesList.ADMIN_RECOGNITION_PARTICIPATION:\n index = AdminRouteIndex.RECOGNITION_PARTICIPATION;\n category = AdminMenuCategory.recognition.id;\n break;\n case RoutesList.ADMIN_FLOWS_PERMISSIONS:\n index = AdminRouteIndex.FLOW_PERMISSIONS;\n category = AdminMenuCategory.flows.id;\n break;\n case RoutesList.ADMIN_USER_MANAGE:\n index = AdminRouteIndex.USERS_MANAGE;\n category = AdminMenuCategory.users.id;\n break;\n case RoutesList.ADMIN_USER_INVITE:\n index = AdminRouteIndex.USERS_INVITE;\n category = AdminMenuCategory.users.id;\n break;\n case RoutesList.ADMIN_USER_EARNINGS:\n index = AdminRouteIndex.USERS_EARNINGS;\n category = AdminMenuCategory.users.id;\n break;\n case RoutesList.ADMIN_CELEBRATIONS_BIRTHDAYS:\n index = AdminRouteIndex.CELEBRATION_BIRTHDAY;\n category = AdminMenuCategory.celebration.id;\n break;\n case RoutesList.ADMIN_CELEBRATIONS_ANNIVERSARIES:\n index = AdminRouteIndex.CELEBRATION_ANNIVERSARY;\n category = AdminMenuCategory.celebration.id;\n break;\n case RoutesList.ADMIN_REWARDS_GIFT_CARDS:\n index = AdminRouteIndex.REWARDS_GIFT_CARDS;\n category = AdminMenuCategory.rewards.id;\n break;\n case RoutesList.ADMIN_REWARDS_CULTURE:\n index = AdminRouteIndex.REWARDS_CULTURE;\n category = AdminMenuCategory.rewards.id;\n break;\n case RoutesList.ADMIN_REWARDS_CHARITY:\n index = AdminRouteIndex.REWARDS_CHARITY;\n category = AdminMenuCategory.rewards.id;\n break;\n case RoutesList.ADMIN_REWARDS_REPORT:\n index = AdminRouteIndex.REWARDS_REPORT;\n category = AdminMenuCategory.rewards.id;\n break;\n case RoutesList.ADMIN_REWARDS_SWAGS:\n index = AdminRouteIndex.REWARDS_SWAGS;\n category = AdminMenuCategory.rewards.id;\n break;\n case RoutesList.ADMIN_BILLING_ACCOUNT:\n index = AdminRouteIndex.BILLING_ACCOUNT;\n category = AdminMenuCategory.billing.id;\n break;\n case RoutesList.ADMIN_BILLING_HISTORY_INVOICE:\n case RoutesList.ADMIN_BILLING_HISTORY:\n index = AdminRouteIndex.BILLING_HISTORY;\n category = AdminMenuCategory.billing.id;\n break;\n case RoutesList.ADMIN_BILLING_METHOD:\n index = AdminRouteIndex.BILLING_METHOD;\n category = AdminMenuCategory.billing.id;\n break;\n case RoutesList.ADMIN_SAML_AUTHENTICATION:\n index = AdminRouteIndex.SECURITY_SAML;\n category = AdminMenuCategory.security.id;\n break;\n default:\n break;\n }\n return {\n selectedItem: index,\n selectedCategory: category,\n };\n};\n\nconst AdminMenu = () => {\n const { treatment: rewardsSwagsTreatment } = useFeatureSplit(\n SplitNames.AXOMO_REWARDS,\n );\n\n const { treatment: combinedUsersManageInviteTreatment } = useFeatureSplit(\n SplitNames.COMBINED_USERS_MANAGE_INVITE,\n );\n\n const isCombinedUsersManageInviteEnabled =\n combinedUsersManageInviteTreatment === TreatmentTypes.ON;\n\n const classes = useStyles();\n\n const [workspaceOpen, setWorkspaceOpen] = useState(false);\n const [recognitionOpen, setRecognitionOpen] = useState(false);\n const [flowsOpen, setFlowsOpen] = useState(false);\n const [usersOpen, setUsersOpen] = useState(false);\n const [celebrationOpen, setCelebrationOpen] = useState(false);\n const [rewardsOpen, setRewardsOpen] = useState(false);\n const [billingOpen, setBillingOpen] = useState(false);\n const [securityOpen, setSecurityOpen] = useState(false);\n\n const [selectedMenuItem, setSelectedMenuItem] = useState(\n AdminRouteIndex.GENERAL,\n );\n\n const { pathname } = useLocation();\n useEffect(() => {\n const { selectedCategory, selectedItem } =\n getUpdatedSelectedIndex(pathname);\n setSelectedMenuItem(selectedItem);\n\n if (selectedCategory === AdminMenuCategory.workspace.id) {\n if (!workspaceOpen) {\n setWorkspaceOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.recognition.id) {\n if (!recognitionOpen) {\n setRecognitionOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.flows.id) {\n if (!flowsOpen) {\n setFlowsOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.users.id) {\n if (!usersOpen) {\n setUsersOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.celebration.id) {\n if (!celebrationOpen) {\n setCelebrationOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.rewards.id) {\n if (!rewardsOpen) {\n setRewardsOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.billing.id) {\n if (!billingOpen) {\n setBillingOpen(true);\n }\n } else if (selectedCategory === AdminMenuCategory.security.id) {\n if (!securityOpen) {\n setSecurityOpen(true);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pathname, selectedMenuItem]);\n\n const adminRewardsFilteredList = useMemo(() => {\n return AdminRoutesList.rewards.filter((route) => {\n if (route.url === RoutesList.ADMIN_REWARDS_SWAGS) {\n if (\n rewardsSwagsTreatment === TreatmentTypes.ON ||\n rewardsSwagsTreatment === TreatmentTypes.CONTROL\n ) {\n return true;\n }\n return false;\n }\n return true;\n });\n }, [rewardsSwagsTreatment]);\n\n const userNavList = isCombinedUsersManageInviteEnabled\n ? AdminRoutesList.users.filter((navItem) => navItem.display !== 'Invite')\n : AdminRoutesList.users;\n\n const handleWorkspaceClick = () => {\n setWorkspaceOpen(!workspaceOpen);\n };\n\n const handleRecognitionClick = () => {\n setRecognitionOpen(!recognitionOpen);\n };\n\n const handleFlowsClick = () => {\n setFlowsOpen(!flowsOpen);\n };\n const handleUsersClick = () => {\n setUsersOpen(!usersOpen);\n };\n\n const handleCelebrationClick = () => {\n setCelebrationOpen(!celebrationOpen);\n };\n\n const handleRewardsClick = () => {\n setRewardsOpen(!rewardsOpen);\n };\n\n const handleBillingClick = () => {\n setBillingOpen(!billingOpen);\n };\n\n const handleSecurityClick = () => {\n setSecurityOpen(!securityOpen);\n };\n\n return (\n \n \n \n \n \n \n {workspaceOpen ? : }\n \n \n \n {AdminRoutesList.workspace.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {recognitionOpen ? : }\n \n \n \n {AdminRoutesList.recognition.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {flowsOpen ? : }\n \n \n \n {AdminRoutesList.flows.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {usersOpen ? : }\n \n \n \n {userNavList.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {celebrationOpen ? : }\n \n \n \n {AdminRoutesList.celebration.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {rewardsOpen ? : }\n \n \n \n {adminRewardsFilteredList.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {billingOpen ? : }\n \n \n \n {AdminRoutesList.billing.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n \n \n \n \n {securityOpen ? : }\n \n \n \n {AdminRoutesList.security.map((route) => (\n \n \n \n \n \n ))}\n \n \n \n );\n};\n\nexport default AdminMenu;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nconst getMainRoutePath = (path) => {\n // To match sub page route\n const subPagePattern = /(\\/admin\\/.*?\\/.*?\\/).+/;\n const matchedSubPagePath = path.match(subPagePattern);\n let formattedPath = path;\n\n // If current route is a sub-page then return a respective main route path\n if (matchedSubPagePath) {\n const mainRoute = matchedSubPagePath[1];\n formattedPath = mainRoute;\n }\n\n // To handle if path contains \"/\" at the end\n if (formattedPath.endsWith('/')) {\n formattedPath = formattedPath.substring(0, formattedPath.length - 1);\n }\n\n return formattedPath;\n};\n\nexport { getMainRoutePath };\n","export default __webpack_public_path__ + \"static/media/assembly-placeholder-logo.20ab3e97.svg\";","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport Fade from '@material-ui/core/Fade';\nimport Popper from '@material-ui/core/Popper';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n toggleOverlay: {\n position: 'fixed',\n top: 0,\n right: 0,\n left: 0,\n bottom: 0,\n zIndex: '99',\n },\n paper: {\n background: '#fff',\n boxShadow: '0px 2px 7px rgba(0, 0, 0, 0.15)',\n overflow: 'hidden',\n zIndex: 9999,\n },\n};\nclass DropdownMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n dropdownMenu: false,\n };\n }\n\n onActionClick = (e) => {\n e.preventDefault();\n this.setState({\n dropdownMenu: !this.state.dropdownMenu,\n });\n };\n\n handleActionsPopoverClose = () => {\n this.setState({\n actionsPopover: false,\n });\n };\n\n render() {\n const { classes, open, onClose, anchorEl, children, placement } =\n this.props;\n return (\n \n {open && (\n
\n )}\n \n {({ TransitionProps }) => (\n \n
{children}
\n
\n )}\n \n
\n );\n }\n}\n\nexport default withStyles(styles)(DropdownMenu);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Link } from 'react-router-dom';\n\nimport MenuList from '@material-ui/core/MenuList';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport DownArrowIcon from '@material-ui/icons/KeyboardArrowDown';\nimport AccountCircleIcon from '@material-ui/icons/AccountCircle';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport SignOutIcon from '@material-ui/icons/PowerSettingsNew';\nimport { getFullName } from '../../Utils/text';\nimport { checkAdmin } from '../../Utils/admin';\nimport { ProfilePic } from '../../Utils/profilePic';\nimport DropdownMenu from '../../componentsV2/custom/DropdownMenu';\n\nconst styles = (theme) => ({\n typography: {\n margin: theme.spacing.unit * 2,\n },\n menuItem: {},\n menuPopoverStyle: {\n minWidth: 168,\n },\n});\n\n// eslint-disable-next-line react/display-name\nconst AdapterLink = React.forwardRef((props, ref) => (\n \n));\n\nclass AvatarDropdown extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n anchorEl: null,\n };\n }\n\n handleClick = (event) => {\n event.preventDefault();\n this.setState({\n anchorEl: event.currentTarget,\n // open : true,\n });\n };\n\n handleClose = () => {\n this.setState({\n anchorEl: null,\n // open : false,\n });\n };\n\n render() {\n const { classes } = this.props;\n const { anchorEl } = this.state;\n const { role, profile } = this.props.me;\n let fullName = '';\n if (profile) {\n fullName = getFullName(profile);\n } else {\n fullName = getFullName(this.props.me);\n }\n const isAdmin = checkAdmin(role);\n return (\n
\n \n \n {`${fullName}`}\n \n \n \n \n {isAdmin && (\n \n \n \n \n Admin\n \n )}\n \n \n \n \n Settings\n \n \n \n \n \n Sign Out\n \n \n \n
\n );\n }\n}\nconst mapStateToProps = (state) => ({\n me: state.me.me,\n});\n\nexport default connect(mapStateToProps)(withStyles(styles)(AvatarDropdown));\n","/* eslint-disable react/display-name */\n// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Link } from 'react-router-dom';\n\nimport Button from '@material-ui/core/Button';\nimport Fab from '@material-ui/core/Fab';\nimport IconButton from '@material-ui/core/IconButton';\nimport HomeIcon from '@material-ui/icons/Home';\nimport Loadable from 'react-loadable';\nimport Hidden from '@material-ui/core/Hidden';\nimport { Collapse } from 'react-collapse';\nimport classNames from 'classnames';\n\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Divider from '@material-ui/core/Divider';\nimport withWidth from '@material-ui/core/withWidth';\n\nimport { checkAdmin } from '../../Utils/admin';\nimport { uiActions } from '../../modules/UI-Reducers/UIReducers';\nimport {\n getEmployerCustomLogoSelector,\n employerSelector,\n} from '../../modules/admin/selector';\n// TO DO: Sumedha - Admin app - clean up\n// import history from '../../history';\nimport assemblyLogo from '../../img/assembly-placeholder-logo.svg';\nimport AvatarDropdown from './AvatarDropdown';\nimport { APP_NAME } from '../../Utils/constants';\nimport { APP_URL, LANDER_URL } from '../../config';\n\nconst styles = () => ({\n headerRoot: {\n position: 'fixed',\n right: 0,\n left: 0,\n top: 0,\n padding: 8,\n zIndex: 1030,\n height: 66,\n backgroundColor: '#FFF',\n border: 0,\n borderBottom: '1px solid #EEEEEE',\n borderRadius: 0,\n width: '100%',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n },\n containerDiv: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n leftDiv: {\n display: 'flex',\n alignItems: 'center',\n },\n rightDiv: {\n display: 'flex',\n alignItems: 'center',\n },\n buttonStyle: {\n margin: '0 30px 0 0',\n },\n logoStyle: {\n borderRadius: 4,\n height: 48,\n },\n homeButton: {\n color: 'rgb(49, 25, 0)',\n '&:focus': {\n outline: 'none',\n },\n },\n badgeRootStyle: {\n marginRight: 12,\n },\n badgeIconStyle: {\n color: 'rgb(49, 25, 0)',\n '&:focus': {\n outline: 'none',\n },\n },\n badgeStyle: {\n color: 'white',\n },\n badgeNoStyle: {\n color: 'transparent',\n backgroundColor: 'transparent',\n },\n linkStyle: {\n transition: 'all .15s ease-in-out',\n color: '#404040',\n marginRight: 10,\n },\n hamburger: {\n '&:focus': {\n outline: 'none',\n },\n },\n dropCollapseDiv: {\n background: '#232323',\n margin: 0,\n padding: 0,\n paddingTop: 10,\n paddingBottom: 10,\n top: 66,\n left: 0,\n position: 'absolute',\n display: 'none',\n width: '100%',\n border: 0,\n zIndex: 1330,\n },\n dropCollapseDivShow: {\n display: 'block !important',\n },\n notificationDropList: {\n cursor: 'pointer',\n },\n listItemStyle: {\n margin: '0px 30px',\n padding: 0,\n '&:hover': {\n color: '#0AD71C !important',\n },\n },\n listItemTextStyle: {\n color: '#ccc !important',\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1,\n padding: '12px 0px',\n '&:hover': {\n color: '#0AD71C !important',\n },\n },\n divider: {\n margin: '0px 30px',\n backgroundColor: 'hsla(0,0%,100%,.15)',\n },\n});\nconst LoadableNotification = Loadable({\n loader: () => import('./Notification'),\n loading() {\n return
;\n },\n});\n\nconst AdapterLink = React.forwardRef((props, ref) => (\n \n));\n\nconst renderListItemLink = (to) =>\n React.forwardRef((itemProps, ref) => (\n // with react-router-dom@^5.0.0 use `ref` instead of `innerRef`\n \n ));\n\nclass HeaderWithMenu extends Component {\n state = {\n showMenu: false,\n };\n\n onMenuClicked = () => {};\n\n onNotifClick = () => {\n this.props.dispatch(uiActions.toggleNotifications());\n };\n\n homeIconClicked = () => {\n // TO DO: Sumedha - Admin app - clean up\n // APP_URL already has a / -> not altering as it might break in other places\n window.location.href = `${APP_URL}home`;\n // const currentUrl = window.location.href;\n // history.push('/home');\n // window.history.pushState({ prevUrl: currentUrl }, null, '/home');\n };\n\n toggleMenu = () => {\n this.setState((prevState) => ({\n showMenu: !prevState.showMenu,\n }));\n };\n\n clickAway = () => {\n this.setState({\n showMenu: false,\n });\n };\n\n isSmallScreen = () => {\n const { width } = this.props;\n if (width === 'sm' || width === 'xs') {\n return true;\n }\n return false;\n };\n\n renderCompanyLogo = () => {\n const { classes, customLogo, employer } = this.props;\n if (employer) {\n if (customLogo) {\n return (\n \n );\n }\n return (\n \n \n \n \n );\n }\n return
;\n };\n\n render() {\n const { classes } = this.props;\n const role = this.props.userLoggedIn ? this.props.me.role : null;\n const isAdmin = role ? checkAdmin(role) : false;\n const RenderRightDiv = () => {\n if (this.isSmallScreen()) {\n return
;\n }\n if (this.props.userLoggedIn) {\n return (\n <>\n \n \n \n\n {/* \n 0\n ? classes.badgeStyle\n : classes.badgeNoStyle,\n }}\n badgeContent={this.props.badgeNumber || 0}\n color=\"primary\"\n >\n \n \n */}\n\n \n \n );\n }\n\n return (\n <>\n \n SIGN IN\n \n \n GET STARTED\n \n \n );\n };\n const RenderDropDown = () => {\n if (this.props.userLoggedIn) {\n return (\n <>\n \n \n HOME\n \n \n {/* \n \n \n {`NOTIFICATIONS (${this.props.badgeNumber || 0})`}\n \n */}\n \n {isAdmin && (\n <>\n \n \n ADMIN\n \n \n \n \n )}\n \n \n SETTINGS\n \n \n \n \n \n SIGN OUT\n \n \n \n );\n }\n\n return (\n <>\n \n \n SIGN IN\n \n \n \n \n \n GET STARTED\n \n \n \n );\n };\n return (\n <>\n
\n
\n
\n {this.props.userLoggedIn ? (\n \n {this.renderCompanyLogo()}\n \n ) : (\n \n )}\n {this.props.shouldShowMenuToggle && (\n \n format_indent_decrease\n \n )}\n
\n
\n <>\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n {this.props.userLoggedIn && }\n
\n \n \n \n \n \n \n
\n \n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n userLoggedIn: state.auth.authenticated,\n me: state.me.me,\n isContinueSetupOpen: state.ui.showIncompleteOnboarding,\n // badgeNumber: state.notifications.count,\n customLogo: getEmployerCustomLogoSelector(state),\n employer: employerSelector(state),\n };\n}\n\nexport default connect(mapStateToProps)(\n withWidth()(withStyles(styles)(HeaderWithMenu)),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/styles';\nimport Drawer from '@material-ui/core/Drawer';\nimport Sidebar from './navbar/Sidebar';\nimport HeaderWithMenu from '../../header/HeaderWithMenu';\n\nconst styles = () => ({\n drawerPaper: {\n width: 250,\n background: '#fafafa', // this.props.colorSidebar.color,\n marginTop: '60px',\n zIndex: '1000',\n paddingLeft: '20px',\n boxShadow: '',\n borderRight: 'none',\n },\n fullList: {\n width: 'auto',\n },\n});\n\nclass SidebarMenuRouters extends Component {\n constructor(props) {\n super(props);\n this.state = {\n menuOpen: true,\n shouldShowMenuToggle: false,\n menuLeft: '0px',\n };\n this.menuCollapseWithResize = this.menuCollapseWithResize.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n }\n\n // Sidebar collapse when tablet\n componentDidMount() {\n window.addEventListener('resize', this.menuCollapseWithResize);\n // this.props.dispatch(uiActions.resizeWindow(window.innerWidth));\n if (window.innerWidth < 991) {\n this.setMenuFalse();\n }\n }\n\n // Sidebar collapse when tablet\n componentWillUnmount() {\n window.removeEventListener('resize', this.menuCollapseWithResize);\n }\n\n // TOGGLE HANDLE FROM PARENT TO CHILD ----------- START\n setMenuFalse() {\n this.setState(\n { menuOpen: false, shouldShowMenuToggle: true, menuLeft: '0px' },\n () => {\n this.alertParent();\n },\n );\n }\n\n setMenuTrue() {\n this.setState(\n { menuOpen: true, shouldShowMenuToggle: false, menuLeft: '0px' },\n () => {\n this.alertParent();\n },\n );\n }\n\n // TOGGLE HANDLE FROM PARENT TO CHILD ----------- START\n alertParent = () => {\n // this.props.onChangeMenu(this.state.menuOpen);\n };\n\n // Sidebar toggle\n toggleMenu() {\n this.setState(\n (prevState) => ({\n menuOpen: !prevState.menuOpen,\n }),\n () => {\n this.alertParent();\n },\n );\n }\n\n // TOGGLE HANDLE FROM PARENT TO CHILD ----------- END\n\n // menu collapse when on mobile function\n menuCollapseWithResize() {\n // this.props.dispatch(uiActions.resizeWindow(window.innerWidth));\n if (window.innerWidth < 991) {\n this.setMenuFalse();\n }\n if (window.innerWidth > 991) {\n this.setMenuTrue();\n }\n }\n\n render() {\n const { classes } = this.props;\n\n // Sidebar class based on bg color\n // const sidebarClass = classNames({\n // 'menu-drawer': true,\n // 'has-bg': true,\n // });\n\n return (\n
\n \n \n
\n \n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n colorHeader: state.headerActiveStyle,\n colorSidebar: state.sidebarActiveStyle,\n colorHeaderBanner: state.headerBAnnerActiveStyle,\n employer: state.admin.employer,\n});\n\nexport default connect(mapStateToProps)(withStyles(styles)(SidebarMenuRouters));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport HeaderWithMenu from './header/HeaderWithMenu';\n\nclass Header extends Component {\n render() {\n return (\n
\n \n
\n );\n }\n}\nexport default connect()(Header);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\n\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport CloseIcon from '@material-ui/icons/Close';\nimport green from '@material-ui/core/colors/green';\nimport amber from '@material-ui/core/colors/amber';\nimport IconButton from '@material-ui/core/IconButton';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { removeMessage, getLatestMessage } from 'redux-flash';\n\nimport {\n FLASHBAR_AUTOHIDE_DURATION,\n FLASHBAR_TYPES,\n} from '../../Utils/constants';\nimport getter from '../../Utils/objectUtils/getter';\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles1 = (theme) => ({\n success: {\n backgroundColor: green[600],\n },\n error: {\n backgroundColor: '#d32f2f ',\n },\n info: {\n backgroundColor: '#1976d2',\n },\n warning: {\n backgroundColor: amber[700],\n },\n close: {\n '&:focus': {\n outline: 'none',\n },\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing.unit,\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n },\n messageStyle: {\n marginRight: 34,\n },\n action: {\n position: 'absolute',\n right: 20,\n },\n});\nfunction MySnackbarContent(props) {\n const { classes, className, message, onClose, variant, ...other } = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\n\nMySnackbarContent.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\n};\nMySnackbarContent.defaultProps = {\n className: '',\n message: '',\n onClose: null,\n};\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\n\nconst styles2 = (theme) => ({\n margin: {\n margin: theme.spacing.unit,\n },\n});\n\nclass FlashBar extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n messageInfo: {},\n };\n this.queue = [];\n }\n\n componentDidUpdate(prevProps) {\n const prevMessageId = getter(['flashMessage', 'id'], prevProps) || '';\n const currentMessageId = getter(['flashMessage', 'id'], this.props) || '';\n if (currentMessageId !== prevMessageId) {\n if (this.props.flashMessage) {\n this.queue.push({\n message: this.props.flashMessage,\n });\n this.props.removeMessage(this.props.flashMessage.id);\n if (this.state.open) {\n // immediately begin dismissing current message\n // to start showing new one\n this.setState({ open: false });\n } else {\n this.processQueue();\n }\n }\n }\n }\n\n getMessageVariant = (message) => {\n if (!message) {\n return FLASHBAR_TYPES.INFO;\n }\n if (message.isError) {\n return FLASHBAR_TYPES.FAILURE;\n } else if (message.props) {\n if (message.props.type === 'success') {\n return FLASHBAR_TYPES.SUCCESS;\n }\n }\n return FLASHBAR_TYPES.INFO;\n };\n\n handleClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n this.setState({ open: false });\n };\n\n handleExited = () => {\n this.processQueue();\n };\n\n removeMessage = (flashId) => () => {\n this.props.removeMessage(flashId);\n };\n\n processQueue = () => {\n if (this.queue.length > 0) {\n this.setState({\n messageInfo: this.queue.shift(),\n open: true,\n });\n }\n };\n\n render() {\n const { message, id } = this.state.messageInfo;\n return (\n \n \n \n );\n }\n}\n\nFlashBar.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n flashMessage: getLatestMessage(state),\n});\nconst mapDispatchToProps = (dispatch) => ({\n removeMessage: (flashId) => dispatch(removeMessage(flashId)),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(withStyles(styles2)(FlashBar));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport axios from 'axios';\nimport React, { Component } from 'react';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableHead from '@material-ui/core/TableHead';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport { API_URL_WITH_V2 } from '../../config';\nimport { AuthHeaders } from '../../modules/shared/HeaderToken';\nimport Table from '../admin/shared/table/Table';\nimport TableCell from '../admin/shared/table/TableCell';\nimport TableRow from '../admin/shared/table/TableRow';\n\nclass AccountsDashboard extends Component {\n static billingTransitions() {\n const ACCOUNT = {\n CLOSED: [],\n DEACTIVATED: ['ACTIVE'],\n ACTIVE: ['DEACTIVATED'],\n };\n const PAID_REWARD = {\n INACTIVE: [],\n DENIED_BY_ADMIN: ['VERIFIED_BY_ADMIN', 'SOFTVERIFIED_BY_ADMIN'],\n UNVERIFIED: ['SOFTVERIFIED_BY_ADMIN', 'DENIED_BY_ADMIN'],\n UNVERIFIED_BY_ADMIN: ['SOFTVERIFIED_BY_ADMIN', 'DENIED_BY_ADMIN'],\n SOFTVERIFIED: [\n 'VERIFIED_BY_ADMIN',\n 'UNVERIFIED_BY_ADMIN',\n 'DENIED_BY_ADMIN',\n ],\n SOFTVERIFIED_BY_ADMIN: [\n 'VERIFIED_BY_ADMIN',\n 'UNVERIFIED_BY_ADMIN',\n 'DENIED_BY_ADMIN',\n ],\n VERIFIED_BY_ADMIN: ['SOFTVERIFIED_BY_ADMIN', 'DENIED_BY_ADMIN'],\n };\n return {\n ACCOUNT,\n PAID_REWARD,\n };\n }\n\n static accountTransitions() {\n return {\n CLOSED: [],\n DEACTIVATED: ['ACTIVE'],\n ACTIVE: ['DEACTIVATED'],\n };\n }\n\n constructor(props) {\n super(props);\n this.state = {\n status: 'IDLE',\n page: 1,\n limit: 100,\n employers: [],\n employerProcessingStatuses: {\n ACCOUNT: {},\n PAID_REWARD: {},\n },\n };\n }\n\n componentDidMount = async () => {\n await this.loadDashboard();\n };\n\n billingStatus({ type, employer }) {\n const employerProcessingStatus =\n this.state.employerProcessingStatuses[type][employer.employerId] ||\n 'IDLE';\n let displayBillingStatus =\n employer.billingStatus[_.camelCase(`${type}_status`)];\n displayBillingStatus = _.startCase(_.toLower(displayBillingStatus));\n if (employerProcessingStatus === 'IDLE') {\n return {displayBillingStatus};\n } else if (employerProcessingStatus === 'PROCESSING') {\n return (\n \n
Processing
\n
\n );\n } else if (employerProcessingStatus === 'ERROR') {\n return (\n \n {displayBillingStatus}\n
Please try again
\n
\n );\n } else if (employerProcessingStatus === 'SUCCESS') {\n return (\n \n
{displayBillingStatus}
\n
\n );\n }\n return;\n }\n\n updateBillingStatus = async (event) => {\n const employerIdNewStatus = _.get(event, 'target.value', null);\n if (_.isEmpty(employerIdNewStatus)) {\n return;\n }\n\n const [type, employerId, status] = employerIdNewStatus.split('-');\n if (\n window.confirm(\n `Are you sure you want to change the accountStatus to ${status}`,\n ) === false\n ) {\n return;\n }\n const { state } = this;\n state.employerProcessingStatuses[type][employerId] = 'PROCESSING';\n this.setState(state);\n try {\n const url = `${API_URL_WITH_V2}/superadmin/accounts/update/${_.toLower(\n type,\n )}/status`;\n const response = await axios({\n url,\n method: 'POST',\n ...AuthHeaders(),\n data: {\n employerId,\n status,\n },\n });\n state.employerProcessingStatuses[type][employerId] =\n response.data.data.status;\n const employer = _.find(state.employers, {\n employerId,\n });\n if (response.data.data.status === 'SUCCESS') {\n employer.billingStatus = _.get(response, 'data.data.billingStatus');\n }\n } catch (err) {\n state.employerProcessingStatuses[type][employerId] = 'ERROR';\n }\n this.setState(state);\n };\n\n billingAction({ type, employer }) {\n const billingStatus = _.get(\n employer,\n `billingStatus.${_.camelCase(`${type}_STATUS`)}`,\n );\n const availableTransistions =\n AccountsDashboard.billingTransitions()[type][billingStatus] || [];\n if (availableTransistions.length === 0) {\n return 'No action here';\n }\n return (\n \n Change\n \n \n );\n }\n\n async loadDashboard() {\n this.setState({\n status: 'LOADING',\n });\n try {\n const url = `${API_URL_WITH_V2}/superadmin/accounts/dashboard?page=${this.state.page}&limit=${this.state.limit}`;\n const response = await axios({\n url,\n method: 'GET',\n ...AuthHeaders(),\n });\n const status = _.get(response, 'data.data.status', 'ERROR');\n const employers = _.get(response, 'data.data.results.employers', []);\n await this.setState({\n status,\n employers,\n });\n } catch (err) {\n console.error(err);\n this.setState({\n status: 'ERROR',\n });\n }\n }\n\n renderError() {\n return (\n
\n
\n
\n
\n

Accounts Dashboard {this.state.status}

\n
\n Something went wrong while loading dashboard. Please try again.\n
\n
\n
\n
\n
\n );\n }\n\n render() {\n if (this.state.status === 'ERROR') {\n return this.renderError();\n }\n return (\n \n
\n
\n
\n

Accounts Dashboard

\n
\n
\n
\n
\n \n \n \n Name\n Joined\n Email\n Active Employees\n Paid Reward Status\n Paid Reward Action\n Account Status\n Account Action\n \n \n \n {this.state.employers.map((employer) => (\n \n \n {employer.name}\n \n {employer.joinedOn}\n {employer.ownerEmail}\n {employer.employeeCount}\n {this.billingStatus({ employer, type: 'PAID_REWARD' })}\n \n
\n {this.billingAction({\n employer,\n type: 'PAID_REWARD',\n })}\n
\n
\n {this.billingStatus({ employer, type: 'ACCOUNT' })}\n \n
\n {this.billingAction({ employer, type: 'ACCOUNT' })}\n
\n
\n \n ))}\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default AccountsDashboard;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '../../core/Button';\nimport ThemeV2 from '../../theme';\n\nconst styles = () => ({\n root: {\n position: 'relative',\n padding: '6px 3px 6px 10px',\n '& .MuiButton-label': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n },\n svg: {\n display: 'inline-block',\n height: '1em',\n width: '1em',\n fill: ThemeV2.palette.darkText,\n transform: 'rotate(0deg) translateX(0)',\n fontSize: '1.5rem',\n flexShrink: 0,\n userSelect: 'none',\n marginLeft: 'auto',\n transition: '0.25s ease all',\n '&.open': {\n transform: 'rotate(180deg) translateX(0)',\n },\n },\n});\n\nclass ButtonWithArrow extends Component {\n render() {\n const { classes, isOpen, children, onClick, ...rest } = this.props;\n return (\n \n {children}\n \n \n \n \n );\n }\n}\n\nexport default withStyles(styles)(ButtonWithArrow);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport ThemeV2 from '../../theme';\n\nconst styles = () => ({\n root: {\n fontFamily: ThemeV2.typography.fontFamily,\n fontWeight: ThemeV2.typography.fontWeightMedium,\n color: ThemeV2.palette.darkGray3,\n lineHeight: '15px',\n fontSize: '11px',\n '&.disabled': {\n opacity: '0.24',\n userSelect: 'none',\n },\n '&.error': {\n color: ThemeV2.palette.red2,\n },\n },\n});\nclass HelperText extends Component {\n render() {\n const { classes, text, disabled, error, children, ...rest } = this.props;\n return (\n \n {children}\n \n );\n }\n}\n\nexport default withStyles(styles)(HelperText);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport InputBase from '@material-ui/core/InputBase';\nimport ThemeV2 from '../../theme';\n\nconst Styles = {\n root: {\n width: '100%',\n '&.disabled': {\n opacity: '0.24',\n },\n },\n input: {\n borderRadius: 4,\n position: 'relative',\n border: `1px solid ${ThemeV2.palette.lightGray1}`,\n width: '100%',\n padding: '10px 12px',\n textAlign: 'inherit',\n fontFamily: ThemeV2.typography.fontFamily,\n fontWeight: ThemeV2.typography.fontWeightMedium,\n fontSize: '14px',\n '&:focus': {\n borderColor: ThemeV2.palette.primary.main,\n },\n },\n};\n\nclass BootstrapInput extends Component {\n render() {\n const { classes, disabled, ...rest } = this.props;\n return (\n \n );\n }\n}\n\nexport default withStyles(Styles)(BootstrapInput);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Picker } from 'emoji-mart';\nimport 'emoji-mart/css/emoji-mart.css';\nimport Popover from '@material-ui/core/Popover';\nimport { withStyles } from '@material-ui/core';\nimport Typography from '../../../componentsV2/core/Typography';\nimport ButtonWithArrow from '../../../componentsV2/custom/ButtonWithArrow';\nimport HelperText from '../../../componentsV2/core/HelperText';\nimport BootstrapInput from '../../../componentsV2/core/BootstrapInput';\nimport Modal from '../../../componentsV2/core/Modal';\nimport Button from '../../../componentsV2/core/Button';\nimport CloseButton from '../../../componentsV2/core/CloseButton';\nimport CarrotIcon from '../../../sass/carrot/icons/CarrotIcon';\nimport ThemeV2 from '../../../componentsV2/theme';\nimport { getEmployerCustomIconSelector } from '../../../modules/admin/selector';\n\nconst styles = (theme) => ({\n dropdownButtonIcon: {\n border: `1px solid ${ThemeV2.palette.lightGray1}`,\n justifyContent: 'start',\n height: '44px',\n width: '59px',\n minWidth: 'auto',\n borderRadius: 3,\n },\n slackSettingsModal: {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n width: 720,\n padding: '45px 55px 25px 55px',\n [theme.breakpoints.down('xs')]: {\n width: 350,\n padding: '20px 22px',\n },\n background: '#FFFFFF',\n border: '1px solid #F6F6F6',\n boxSizing: 'border-box',\n borderRadius: 10,\n outline: 'none',\n },\n buttonHolder: {\n marginTop: 30,\n display: 'flex',\n },\n button: {\n display: 'block',\n borderRadius: 3,\n width: '50%',\n },\n});\n\nclass ChangeCurrencyModal extends Component {\n constructor(props) {\n super(props);\n this.state = {\n emojiOpen: false,\n selectedEmoji: '',\n anchorOrigin: {\n horizontal: 'right',\n vertical: 'center',\n },\n targetOrigin: {\n horizontal: 'left',\n vertical: 'center',\n },\n currencyName: '',\n currencyNamePlural: '',\n };\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.selectedEmployer !== this.props.selectedEmployer) {\n const { customCurrency } = this.props.selectedEmployer;\n this.setState({\n currencyName: customCurrency.currencyName,\n currencyNamePlural: customCurrency.currencyNamePlural,\n selectedEmoji: {\n id: customCurrency.currencyEmoji.id,\n hexCode: customCurrency.currencyEmoji.hexCode,\n },\n });\n }\n }\n\n isWindows = () => {\n if (\n window.navigator.platform &&\n window.navigator.platform.includes('Win')\n ) {\n return true;\n }\n return false;\n };\n\n addEmoji = (emoji) => {\n this.setState({\n selectedEmoji: {\n id: emoji.id,\n hexCode: emoji.unified,\n },\n emojiOpen: false,\n });\n };\n\n onEmojiClick = (e) => {\n e.preventDefault();\n this.setState({\n emojiOpen: true,\n anchorEl: e.currentTarget,\n });\n };\n\n handleEmojiRequestClose = () => {\n this.setState({\n emojiOpen: false,\n });\n };\n\n handleCurrencyChange = (event) => {\n this.setState({\n currencyName: event.target.value,\n });\n };\n\n handleCurrencyPluralChange = (event) => {\n this.setState({\n currencyNamePlural: event.target.value,\n });\n };\n\n onUpdateClick = () => {\n const { currencyName, currencyNamePlural, selectedEmoji } = this.state;\n const customCurrency = {\n isSet: true,\n currencyName,\n currencyNamePlural,\n currencyEmoji: {\n id: selectedEmoji.id,\n hexCode: selectedEmoji.hexCode,\n },\n currencyIconURL: '',\n };\n this.props.onUpdate(customCurrency);\n };\n\n render() {\n const { classes, open, close, customCompanyIcon, loading, ...rest } =\n this.props;\n return (\n \n \n {this.isWindows() ? (\n \n ) : (\n \n )}\n \n \n \n
\n
\n
\n \n Currency Icon\n \n \n You can select from any emoji available to be your custom\n currency icon.\n \n
\n
\n
\n \n )\n }\n isOpen={this.state.emojiOpen}\n classes={{ root: classes.dropdownButtonIcon }}\n />\n
\n
\n
\n
\n
\n \n Singular Currency Name\n \n \n Enter the singular of your currency name (e.g. Trophy). This\n will be displayed in posts, leaderboards, and more.\n \n
\n
\n
\n \n \n \n 👉\n {' '}\n Less than 22 characters and singular\n \n
\n
\n
\n
\n
\n \n Plural Currency Name\n \n \n Enter the plural of your currency name (e.g. Trophies). This\n will be displayed in posts, leaderboards, and more.\n \n
\n
\n
\n \n \n \n 👉\n {' '}\n Less than 22 characters and plural\n \n
\n
\n
\n \n Cancel\n \n \n {loading ? 'Updating...' : 'Update'}\n \n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n customCompanyIcon: getEmployerCustomIconSelector(state),\n});\n\nexport default connect(mapStateToProps)(\n withStyles(styles)(ChangeCurrencyModal),\n);\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\n\n// Material UI\nimport SearchIcon from '@material-ui/icons/Search';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\n\nconst styles = (theme) => ({\n root: {\n borderRadius: 2,\n boxShadow: '0 2px 2px 0 rgba(0, 0, 0, 0.24), 0 0 2px 0 rgba(0, 0, 0, 0.12)',\n backgroundColor: '#ffffff',\n marginTop: 16,\n marginBottom: 16,\n },\n});\n\nclass SearchBar extends Component {\n render() {\n const { classes } = this.props;\n return (\n
\n
\n \n \n \n Search\n \n \n Clear\n \n \n Export Data\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n // accounts: getAccountsSelector(state),\n});\n\nexport default connect(mapStateToProps, {})(withStyles(styles)(SearchBar));\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport _ from 'lodash';\nimport { API_URL_WITH_V2 } from '../../config';\nimport { AuthHeaders } from '../shared/HeaderToken';\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n LOAD_ACCOUNTS: `${API_URL_WITH_V2}/superadmin/accounts/dashboard`,\n UPDATE_BILLING_STATUS: (type) =>\n `${API_URL_WITH_V2}/superadmin/accounts/update/${type}/status`,\n UPDATE_ACCOUNT_MEDIA: (employerId) =>\n `${API_URL_WITH_V2}/superadmin/accounts/${employerId}/media`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const LOAD_ACCOUNTS = 'LOAD_ACCOUNTS';\nexport const UPDATE_BILLING_STATUS = 'UPDATE_BILLING_STATUS';\nexport const UPDATE_ACCOUNT_MEDIA = 'UPDATE_ACCOUNT_MEDIA';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst parseUrl = ({ limit, page, search }) => {\n let url = `limit=${limit}&page=${page}`;\n if (search) {\n url += `&search=${search}`;\n }\n return url;\n};\n\nexport const getAccountsAction = ({ limit = 1, page = 1, search }) => ({\n type: LOAD_ACCOUNTS,\n request: {\n url: `${apiEndpoints.LOAD_ACCOUNTS}?${parseUrl({ limit, page, search })}`,\n method: 'get',\n ...AuthHeaders(),\n },\n});\n\nexport const updateBillingStatusAction = ({ type, status, employerId }) => ({\n type: UPDATE_BILLING_STATUS,\n request: {\n url: `${apiEndpoints.UPDATE_BILLING_STATUS(type)}`,\n method: 'post',\n data: {\n status,\n employerId,\n },\n ...AuthHeaders(),\n },\n meta: {\n employerId,\n },\n});\n\nexport const updateAccountMediaAction = (data, employerId) => ({\n type: UPDATE_ACCOUNT_MEDIA,\n request: {\n url: `${apiEndpoints.UPDATE_ACCOUNT_MEDIA(employerId)}`,\n method: 'put',\n data,\n ...AuthHeaders(),\n },\n});\n\nexport const deleteAccountMediaAction = (employerId) => ({\n type: UPDATE_ACCOUNT_MEDIA,\n request: {\n url: `${apiEndpoints.UPDATE_ACCOUNT_MEDIA(employerId)}`,\n method: 'delete',\n ...AuthHeaders(),\n },\n});\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default requestsReducer({\n actionType: LOAD_ACCOUNTS,\n getData: (state, action, config) => {\n switch (action.type) {\n case success(LOAD_ACCOUNTS): {\n const { employers, total } = _.get(action, ['data', 'data', 'results']);\n const accounts = {};\n employers.forEach((employer) => {\n if (!accounts[employer.employerId]) {\n accounts[employer.employerId] = employer;\n }\n });\n return { ...state, accounts, totalAccounts: total };\n }\n default:\n return state.data;\n }\n },\n onError: (state, action, config) => {\n return { ...state };\n },\n mutations: {\n [UPDATE_BILLING_STATUS]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(UPDATE_BILLING_STATUS): {\n const billingStatus = _.get(action, [\n 'data',\n 'data',\n 'billingStatus',\n ]);\n const { accounts } = state.data;\n accounts[action.meta.employerId].billingStatus = billingStatus;\n return { ...state, accounts: { ...accounts } };\n }\n default:\n return state;\n }\n },\n },\n [UPDATE_ACCOUNT_MEDIA]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(UPDATE_ACCOUNT_MEDIA): {\n const employer = _.get(action, ['data', 'data']);\n const { accounts } = state.data;\n accounts[employer._id].logo = employer.logo;\n accounts[employer._id].customCurrency =\n employer.settings.customCurrency;\n return { ...state, accounts: { ...accounts } };\n }\n default:\n return state;\n }\n },\n },\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport _ from 'lodash';\nimport { createSelector } from 'reselect';\nimport convertToArray from '../../../Utils/objectUtils/convertToArray';\n\nexport const getAccountsObjectSelector = (state) => {\n return _.get(state, ['superAdmin', 'data', 'accounts'], {});\n};\n\nexport const getAccountsSelector = createSelector(\n getAccountsObjectSelector,\n (accounts) => {\n return convertToArray(accounts);\n },\n);\n\nexport const getAccountCustomIconSelector = (state, employer) => {\n let icon = null;\n const customIcon = _.get(\n employer,\n ['customCurrency', 'currencyIconURL'],\n null,\n );\n const emoji = _.get(employer, ['customCurrency', 'currencyEmoji'], null);\n if (customIcon && customIcon.length > 0) {\n icon = {};\n icon.type = 'icon';\n icon.value = customIcon;\n } else if (emoji) {\n icon = {};\n icon.type = 'emoji';\n icon.value = emoji;\n }\n return icon;\n};\n","const billingTransitions = () => {\n const ACCOUNT = {\n CLOSED: [],\n DEACTIVATED: ['ACTIVE'],\n ACTIVE: ['DEACTIVATED'],\n };\n const PAID_REWARD = {\n INACTIVE: [],\n DENIED_BY_ADMIN: ['VERIFIED_BY_ADMIN', 'SOFTVERIFIED_BY_ADMIN'],\n UNVERIFIED: ['SOFTVERIFIED_BY_ADMIN', 'DENIED_BY_ADMIN'],\n UNVERIFIED_BY_ADMIN: ['SOFTVERIFIED_BY_ADMIN', 'DENIED_BY_ADMIN'],\n SOFTVERIFIED: [\n 'VERIFIED_BY_ADMIN',\n 'UNVERIFIED_BY_ADMIN',\n 'DENIED_BY_ADMIN',\n ],\n SOFTVERIFIED_BY_ADMIN: [\n 'VERIFIED_BY_ADMIN',\n 'UNVERIFIED_BY_ADMIN',\n 'DENIED_BY_ADMIN',\n ],\n VERIFIED_BY_ADMIN: ['SOFTVERIFIED_BY_ADMIN', 'DENIED_BY_ADMIN'],\n };\n return {\n ACCOUNT,\n PAID_REWARD,\n };\n};\n\nexport default billingTransitions();\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\nimport _ from 'lodash';\nimport moment from 'moment';\n\n// Material UI\nimport TableBody from '@material-ui/core/TableBody';\nimport TableHead from '@material-ui/core/TableHead';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport IconButton from '@material-ui/core/IconButton';\nimport EditIcon from '@material-ui/icons/Edit';\nimport Typography from '@material-ui/core/Typography';\nimport DoneIcon from '@material-ui/icons/Done';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport Table from '../admin/shared/table/Table';\nimport TableCell from '../admin/shared/table/TableCell';\nimport TableRow from '../admin/shared/table/TableRow';\nimport profilePlaceholder from '../../img/profilePlaceholder.png';\nimport ImageUploader from '../../atomic/organism/ImageUploader';\nimport ChangeCurrencyModal from './ChangeCurrencyModal';\nimport SearchBar from './SearchBar';\nimport XLSScript from '../admin/shared/xlsScript';\nimport Link from '../../atomic/atoms/Link';\n\nimport {\n getAccountsAction,\n updateBillingStatusAction,\n updateAccountMediaAction,\n deleteAccountMediaAction,\n} from '../../modules/admin/superadmin';\nimport {\n getAccountsSelector,\n getAccountCustomIconSelector,\n} from '../../modules/admin/superadmin/selector';\nimport billingTransitions from '../../Utils/superadmin/billingTransitions';\nimport DEFAULT_CURRENCY from '../../Utils/superadmin/constants';\nimport { writeToXLS } from '../../Utils/XlsReader';\nimport routesList from '../../aV2/routes/routesList';\n\nconst IMAGE_LIMITS = {\n MIN_DIMENSIONS: {\n WIDTH: 150,\n HEIGHT: 34,\n },\n};\n\nconst styles = (theme) => ({\n input: {\n display: 'none',\n },\n headingDiv: {\n paddingTop: '40px',\n },\n headingText: {\n display: 'inline',\n },\n buttonStyle: {\n position: 'absolute',\n right: '40px',\n },\n iconStyle: {\n position: 'absolute',\n right: '0px',\n },\n});\n\nclass AccountsDashboardV2 extends Component {\n constructor(props) {\n super(props);\n this.state = {\n changeCurrencyModalOpen: false,\n selectedEmployerId: null,\n selectedEmployerObj: {},\n showDoneIcon: false,\n searchTextFieldValue: '',\n };\n }\n\n componentDidMount() {\n this.props\n .getAccountsAction({ limit: 50, page: 1 })\n .then((successAction) => {})\n .catch((errorOrAbortAction) => {\n window.alert('Error while loading accounts');\n });\n }\n\n componentWillUnmount() {\n window.scrollTo(0, 0);\n }\n\n updateBillingStatus = (event) => {\n const employerIdNewStatus = _.get(event, 'target.value', null);\n if (_.isEmpty(employerIdNewStatus)) {\n return;\n }\n\n const [type, employerId, status] = employerIdNewStatus.split('-');\n if (\n window.confirm(\n `Are you sure you want to change the accountStatus to ${status}`,\n ) === false\n ) {\n return;\n }\n this.props\n .updateBillingStatusAction({\n type: _.toLower(type),\n status,\n employerId,\n })\n .then((successAction) => {})\n .catch((errorOrAbortAction) => {\n window.alert('Error while updating billing status');\n });\n };\n\n billingStatus({ type, employer }) {\n let displayBillingStatus =\n employer.billingStatus[_.camelCase(`${type}_status`)];\n displayBillingStatus = _.startCase(_.toLower(displayBillingStatus));\n return {displayBillingStatus};\n }\n\n billingAction({ type, employer }) {\n const billingStatus = _.get(\n employer,\n `billingStatus.${_.camelCase(`${type}_STATUS`)}`,\n );\n const availableTransistions = billingTransitions[type][billingStatus] || [];\n if (availableTransistions.length === 0) {\n return 'No action here';\n }\n return (\n \n Change\n \n \n );\n }\n\n onImageUploadError = (msg) => {\n window.alert(msg);\n };\n\n onCropperDone = (mediaAdded) => {\n const { selectedEmployerId } = this.state;\n const uploadData = {\n file: mediaAdded,\n fileType: 'logo',\n };\n this.props\n .updateAccountMediaAction(uploadData, selectedEmployerId)\n .then((successAction) => {})\n .catch((errorOrAbortAction) => {\n window.alert('Error while updating company logo');\n });\n\n this.setState({ selectedEmployerId: null });\n if (this.fileInput) {\n this.fileInput.value = '';\n }\n };\n\n handleChangeCurrencyModalClose = () => {\n this.setState({\n changeCurrencyModalOpen: false,\n });\n };\n\n handleChangeCurrencyModalOpen = (employer) => () => {\n this.setState({\n changeCurrencyModalOpen: true,\n selectedEmployerId: employer.employerId,\n selectedEmployerObj: employer,\n });\n };\n\n onBannerEditClick = (employerId) => () => {\n this.setState({ selectedEmployerId: employerId });\n };\n\n onBannerDeleteClick = (employerId) => () => {\n this.props\n .deleteAccountMediaAction(employerId)\n .then((successAction) => {})\n .catch((errorOrAbortAction) => {\n window.alert('Error while deleting Logo');\n });\n };\n\n onCurrencyChange = (props) => {\n const { selectedEmployerId } = this.state;\n const uploadData = {\n customCurrency: props,\n };\n this.props\n .updateAccountMediaAction(uploadData, selectedEmployerId)\n .then((successAction) => {})\n .catch((errorOrAbortAction) => {\n window.alert('Error while updating currency');\n });\n this.handleChangeCurrencyModalClose();\n };\n\n onLoadUsersClick = () => {\n if (\n window.confirm(`Are you sure you want to load users into Heap?`) === false\n ) {\n }\n };\n\n handleSearchChange = (event) => {\n const searchText = event.target.value;\n this.setState({ searchTextFieldValue: searchText });\n };\n\n onSearchClick = () => {\n this.props.getAccountsAction({\n limit: 10,\n page: 1,\n search: this.state.searchTextFieldValue,\n });\n };\n\n onClearClick = () => {\n this.setState({ searchTextFieldValue: '' });\n this.props.getAccountsAction({ limit: 10, page: 1 });\n };\n\n onExportClick = () => {\n const { accounts } = this.props;\n const csvData = [['Created Date', 'Company Name', 'User Name', 'Email']];\n\n accounts.map((account) => {\n csvData.push([\n moment(account.joinedOn).format('MM-DD-YYYY'),\n account.name,\n account.ownerName,\n account.ownerEmail,\n ]);\n return null;\n });\n writeToXLS(\n csvData,\n 'Company Accounts',\n `${moment().format('MM-DD-YYYY')}-Accounts.xlsx`,\n );\n };\n\n accountHasLogo = (account) => {\n const logo = _.get(account, ['logo', 'original', 'relativeUrl'], null);\n if (logo) {\n return true;\n }\n return false;\n };\n\n displayCustomIcon = (account) => {\n const icon = this.props.getCustomIcon(account);\n if (icon.type === 'emoji') {\n const emojiType = _.get(icon, ['value', 'type'], 'REGULAR');\n if (emojiType === 'REGULAR') {\n return String.fromCodePoint(parseInt(icon.value.hexCode, 16));\n }\n if (emojiType === 'CUSTOM') {\n return (\n \n );\n }\n }\n return (\n \n );\n };\n\n render() {\n const { accounts, classes } = this.props;\n return (\n
\n \n \n
\n \n Accounts Dashboard\n \n {this.state.showDoneIcon && (\n \n )}\n
\n \n
\n \n \n \n Name\n Joined\n Owner\n Email\n Active Employees\n Paid Reward Status\n Paid Reward Action\n Link to Analytics\n Account Status\n Account Action\n Logo\n Currency\n \n \n \n {accounts.map((account) => (\n \n \n {account.name}\n \n {account.joinedOn}\n {account.ownerName}\n {account.ownerEmail}\n {account.employeeCount}\n {this.billingStatus({\n employer: account,\n type: 'PAID_REWARD',\n })}\n \n
\n {this.billingAction({\n employer: account,\n type: 'PAID_REWARD',\n })}\n
\n
\n \n \n Check Analytics\n \n \n {this.billingStatus({ employer: account, type: 'ACCOUNT' })}\n \n
\n {this.billingAction({\n employer: account,\n type: 'ACCOUNT',\n })}\n
\n
\n \n \n
\n \n \n \n \n \n {this.accountHasLogo(account) && (\n \n \n \n )}\n \n
\n \n {account.customCurrency.isSet === true\n ? account.customCurrency.currencyName\n : DEFAULT_CURRENCY.CURRENCY_NAME}\n
\n {account.customCurrency.isSet === true\n ? account.customCurrency.currencyNamePlural\n : DEFAULT_CURRENCY.CURRENCY_NAME_PLURAL}\n
\n {this.displayCustomIcon(account)}\n \n \n \n
\n
\n ))}\n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n accounts: getAccountsSelector(state),\n getCustomIcon: (account) => getAccountCustomIconSelector(state, account),\n});\n\nexport default connect(mapStateToProps, {\n getAccountsAction,\n updateBillingStatusAction,\n updateAccountMediaAction,\n deleteAccountMediaAction,\n})(withStyles(styles)(AccountsDashboardV2));\n","import { makeStyles } from '@material-ui/styles';\nimport React, { useMemo } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport routesList from '../../aV2/routes/routesList';\nimport AdminInsightsPageController from '../../controllers/admin/settings/insights/AdminInsightsPageController';\n\nconst useStyles = makeStyles({\n root: {\n marginTop: '24px',\n },\n});\n\nconst SuperAdminAnalytics = () => {\n const classes = useStyles();\n const { push } = useHistory();\n const [assemblyId, assemblyName] = useMemo(() => {\n const { searchParams } = new URL(window.location.href);\n return [searchParams.get('assemblyId'), searchParams.get('assemblyName')];\n }, []);\n if (!assemblyId) {\n push(routesList.SUPER_ADMIN_DASHBOARD_V2);\n }\n return (\n
\n \n
\n );\n};\n\nexport default SuperAdminAnalytics;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport React, { Component } from 'react';\nimport moment from 'moment';\nimport { KeyboardDatePicker } from '@material-ui/pickers';\nimport { API_URL_WITH_V2 } from '../../config';\nimport { AuthHeaders } from '../../modules/shared/HeaderToken';\n\nclass Reports extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n start: moment().subtract(7, 'days').format('YYYY-MM-DD'),\n end: moment().format('YYYY-MM-DD'),\n file: null,\n status: 'IDLE',\n };\n this.handleFileChange = this.handleFileChange.bind(this);\n }\n\n onDownloadClick = async () => {\n this.setState({\n status: 'LOADING',\n });\n try {\n let fileName = this.state.file;\n if (!fileName || fileName.length === 0) {\n fileName = 'export';\n }\n const url = `${API_URL_WITH_V2}/metrics/events/export?start=${this.state.start}&end=${this.state.end}&file=${fileName}`;\n const response = await axios({\n url,\n method: 'GET',\n responseType: 'blob', // important\n ...AuthHeaders(),\n });\n const downloadUrl = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n link.href = downloadUrl;\n link.setAttribute('download', `${fileName}.csv`);\n document.body.appendChild(link);\n link.click();\n this.setState({\n status: 'IDLE',\n });\n } catch (err) {\n console.error(err);\n this.setState({\n status: 'ERROR',\n });\n }\n };\n\n handleStartDateChange = (date) => {\n this.setState({\n start: moment(date).format('YYYY-MM-DD'),\n });\n };\n\n handleFileChange(event) {\n this.setState({ file: event.target.value });\n }\n\n handleEndDateChange = (date) => {\n this.setState({\n end: moment(date).format('YYYY-MM-DD'),\n });\n };\n\n render() {\n return (\n
\n
\n
\n
\n
\n

Export Events

\n
\n \n
\n
\n \n
\n
\n \n
\n\n \n Download\n \n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default Reports;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport Loadable from 'react-loadable';\n\n// Add center loader\nexport const LoadableAdminComponent = Loadable({\n loader: () => import('../screens/Admin'),\n loading() {\n return
;\n },\n});\n\nexport const preloadAdmin = () => {\n LoadableAdminComponent.preload();\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n Route,\n useHistory,\n useLocation,\n RouteComponentProps,\n} from 'react-router-dom';\nimport _ from 'lodash';\n\nimport { checkIfAdmin } from '../../containers/Roles';\nimport LoadingPulse from '../../atomic/atoms/LoadingPulse';\n\ninterface ProtectedRouteProps {\n adminCheck: boolean;\n}\n\nconst ProtectedRoute = ({\n adminCheck,\n ...props\n}: ProtectedRouteProps & RouteComponentProps) => {\n const history = useHistory();\n const location = useLocation();\n const { user, authenticated, employer } = useSelector((state) => ({\n user: _.get(state, ['me', 'me'], null),\n authenticated: _.get(state, ['auth', 'authenticated'], false),\n employer: _.get(state, ['admin', 'employer'], null),\n }));\n if (!authenticated) {\n history.push({\n pathname: '/signin',\n state: { origin: location.pathname },\n search: location.search,\n });\n }\n if (adminCheck && user) {\n if (!checkIfAdmin(user)) {\n history.push('/404');\n }\n }\n if (user && employer) {\n return ;\n }\n return ;\n};\n\nexport default ProtectedRoute;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport qs from 'qs';\nimport React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport BotManagerAuthorize from '../atomic/pages/BotManagerAuthorize/BotManagerAuthorize';\nimport IdentityManagerAuthorize from '../atomic/pages/IdentityManagerAuthorize/IdentityManagerAuthorize';\nimport OnboaringRoutes from '../aV2/routes';\nimport RoutesList from '../aV2/routes/routesList';\nimport {\n CREATE_PASSWORD,\n GOOGLE_ONE_TAP_AUTH,\n USER_ACCOUNT_SETUP,\n} from '../constants/routes';\nimport requireAuth from '../containers/hoc/Authentication';\nimport Authorization from '../containers/hoc/Authorization';\nimport SuperAdminAuthorization from '../containers/hoc/SuperAdminAuthorization';\nimport { ADMIN_ROLES } from '../containers/Roles';\nimport Signout from '../containers/SignOut';\nimport CreatePasswordController from '../controllers/auth/CreatePasswordController';\nimport GoogleOneTapLoginController from '../controllers/auth/GoogleOneTapLoginController';\nimport SAMLAuthModalController from '../controllers/auth/SAMLAuthController/SAMLAuthModalController';\nimport MSTeamsTabConfig from '../controllers/MSTeams/MSTeamsTabConfig';\nimport UserSetupController from '../controllers/signup/UserSetupController';\nimport history from '../history';\nimport SSOAuthorize from '../pages/signin/SSOAuthorize/SSOAuthorize';\nimport SSOErrors from '../pages/signin/SSOErrors/SSOErrors';\nimport PageNotFound from '../screens/404';\nimport Navbar from '../screens/admin/shared/Navbar';\nimport Header from '../screens/Header';\nimport FlashBar from '../screens/header/FlashBar';\nimport AccountsDashboard from '../screens/superadmin/AccountsDashboard';\nimport AccountsDashboardV2 from '../screens/superadmin/AccountsDashboardV2';\nimport SuperAdminAnalytics from '../screens/superadmin/Analytics';\nimport Reports from '../screens/superadmin/Reports';\nimport { SSOTypes } from '../Utils/data/ssoManager/common';\n/* ms-team imports */\nimport { isSourceMSTeams, MS_TEAMS, setAppSource } from '../Utils/msteams';\nimport { LoadableAdminComponent } from './chunks';\nimport ProtectedRoute from './ProtectedRoute/ProtectedRoute';\n\nconst AdminRole = Authorization(ADMIN_ROLES);\nconst SuperAdminRole = SuperAdminAuthorization();\n\nconst OnboardingRoutePaths = [\n RoutesList.SIGN_IN,\n RoutesList.FORGOT_PASSWORD,\n RoutesList.RESET_PASSWORD,\n RoutesList.ENTER_EMAIL,\n RoutesList.ENTER_CODE,\n RoutesList.ENTER_COMPANY_NAME,\n RoutesList.EMPLOYEE_ENTER_EMAIL,\n RoutesList.EMPLOYEE_VERIFY_MAGIC_LINK,\n RoutesList.EMPLOYEE_SET_PROFILE,\n RoutesList.EMPLOYEE_SET_PROFILE_FROM_INVITE,\n RoutesList.EMPLOYEE_SET_DETAILS,\n RoutesList.SLACK_ONBOARD,\n RoutesList.SIGNUP_SUCCESS,\n RoutesList.EMAIL_SIGNIN,\n RoutesList.EMAIL_SIGNUP,\n RoutesList.ADP_SIGNIN,\n RoutesList.SSO_SIGNIN_AUTHORIZE,\n RoutesList.SSO_SIGNUP_AUTHORIZE,\n RoutesList.SSO_ERRORS,\n USER_ACCOUNT_SETUP,\n GOOGLE_ONE_TAP_AUTH,\n];\n\nconst RoutePathsWithoutNavbar = [\n RoutesList.MSTEAM_CONFIG,\n RoutesList.SSO_SIGNIN_AUTHORIZE_MODAL,\n RoutesList.SSO_SIGNUP_AUTHORIZE_MODAL,\n RoutesList.SAML_AUTHORIZE_MODAL,\n GOOGLE_ONE_TAP_AUTH,\n];\n\nclass RoutesComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = { menu: false };\n }\n\n componentDidMount() {\n const parsed = qs.parse(this.props.location.search, {\n ignoreQueryPrefix: true,\n });\n const source = get(parsed, 'source');\n if (source === MS_TEAMS) {\n setAppSource(source);\n }\n if (isSourceMSTeams()) {\n microsoftTeams.initialize();\n /* To notify app loaded to hide loading indicator */\n microsoftTeams.appInitialization.notifyAppLoaded();\n microsoftTeams.appInitialization.notifySuccess();\n }\n console.log('>>>');\n }\n\n handleChangeValue = (value) => {\n this.setState({ menu: value });\n };\n\n render() {\n const pageContent = classNames({\n 'readmin-page-content': true,\n // eslint-disable-next-line react/destructuring-assignment\n 'menu-open': this.state.menu,\n });\n const pageContentAdmin = classNames({\n 'readmin-page-content': true,\n 'menu-open':\n this.props.history?.location?.pathname !== RoutesList.SIGN_IN,\n });\n const menu = true;\n return (\n
\n \n {this.props.history?.location?.pathname !== RoutesList.SIGN_IN &&\n this.props.history?.location?.pathname !== '/404' ? (\n
\n \n }\n />\n\n {OnboardingRoutePaths.map((route) => (\n null} />\n ))}\n {RoutePathsWithoutNavbar.map((route) => (\n null} />\n ))}\n null} />\n null} />\n
}\n />\n \n
\n ) : (\n
\n \n
}\n />\n \n
\n )}\n
\n \n \n }\n />\n }\n />\n (\n \n )}\n />\n (\n \n )}\n />\n \n \n \n \n \n\n \n \n \n\n \n \n \n \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}\nexport default RoutesComponent;\n","import { SplitFactory } from '@splitsoftware/splitio-react';\nimport get from 'lodash/get';\nimport { parse } from 'qs';\nimport React, { useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect, Route, Router, Switch, useLocation } from 'react-router-dom';\nimport AssemblyLanderLoadingScreen from '../atomic/molecules/AssemblyLanderLoadingScreen';\nimport RoutesList from '../aV2/routes/routesList';\nimport { PLAN_IDS, SPLIT_AUTH_KEY } from '../config';\nimport { DEVICE, DEVICES } from '../constants/devices';\nimport { AUTH_SAML, GOOGLE_ONE_TAP_AUTH, SIGN_IN } from '../constants/routes';\nimport SAMLAuthController from '../controllers/auth/SAMLAuthController';\nimport history from '../history';\nimport useDataDog from '../hooks/useDataDog';\nimport { HttpsStatus } from '../interfaces/ResponseError';\nimport {\n useCurrentPlanFetchQuery,\n useProfileInfoFetchQuery,\n} from '../queries/Profile';\nimport ErrorBoundary from '../screens/ErrorBoundary';\nimport * as Analytics from '../Utils/analytics';\nimport { trackPageView } from '../Utils/analytics';\nimport { setSourceDeviceAsIPhone } from '../Utils/device';\nimport RoutesComponent from './routesComponent';\n\nconst ANONYMOUS = 'anonymous';\n\nconst SplitV2 = () => {\n const { search, pathname } = useLocation();\n\n useEffect(() => {\n trackPageView(pathname);\n }, [pathname]);\n\n useEffect(() => {\n const parsedParams = parse(search, {\n ignoreQueryPrefix: true,\n });\n const isDevicePresent = parsedParams && parsedParams[DEVICE];\n if (isDevicePresent) {\n const { device } = parsedParams;\n if (device === DEVICES.IPHONE) {\n setSourceDeviceAsIPhone();\n }\n }\n }, [search]);\n return (\n \n \n \n \n \n \n );\n};\n\nconst Routers = () => {\n const authenticated = useSelector((state) =>\n get(state, ['auth', 'authenticated'], false),\n );\n useDataDog(authenticated);\n\n const { data, isLoading, isError, error } =\n useProfileInfoFetchQuery(authenticated);\n const { data: planData } = useCurrentPlanFetchQuery(authenticated);\n\n useEffect(() => {\n if (data) {\n Analytics.registerPropsFromUser(data.member);\n }\n }, [data]);\n\n useEffect(() => {\n if (planData) {\n Analytics.registerUserProps({\n planType: planData.uniqueId,\n isPaid: planData.uniqueId !== PLAN_IDS.tier1,\n });\n }\n }, [planData]);\n\n const splitConfig = useMemo(() => {\n const assemblyId = data?.assembly?.assemblyId;\n return {\n core: {\n authorizationKey: SPLIT_AUTH_KEY,\n key: assemblyId || ANONYMOUS,\n },\n startup: {\n readyTimeout: 1.5, // 1.5 sec\n },\n };\n }, [data]);\n\n useEffect(() => {\n if (\n isError &&\n error &&\n error.response &&\n error.response.status === HttpsStatus.UNAUTHORIZED\n ) {\n history.push(RoutesList.SIGN_OUT);\n }\n }, [error, isError]);\n if (isLoading && authenticated) {\n return ;\n }\n\n // if (!authenticated && !isLoading) {\n // debugger;\n // window.location.href = '/signin';\n // }\n\n return (\n \n \n \n \n \n \n \n );\n};\nexport default Routers;\n","import styled from 'styled-components';\nimport { ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nimport ThemeV2 from './componentsV2/theme';\n\nconst StyledToastContainer = styled(ToastContainer)`\n .Toastify__toast {\n min-height: 46px;\n padding: 8px 16px;\n }\n\n .Toastify__toast--error {\n background: ${ThemeV2.palette.red7};\n }\n .Toastify__toast--info {\n background: ${ThemeV2.palette.geekBlue7};\n }\n .Toastify__toast--success {\n background: ${ThemeV2.palette.polarGreen7};\n }\n\n .Toastify__toast-body {\n align-self: center;\n }\n\n .Toastify__close-button {\n align-self: center;\n margin-right: 6px;\n }\n`;\n\nexport default StyledToastContainer;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport React from 'react';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { createTheme, MuiThemeProvider } from '@material-ui/core/styles';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nimport Routers from './routers/routers';\nimport ToastContainer from './ToastContainer';\nimport './static/css/App.css';\nimport './static/css/vendor-styles.css';\nimport { Helmet } from 'react-helmet';\n\nconst LIGHT = 300;\nconst REGULAR = 400;\nconst SEMIBOLD = 500;\nconst BOLD = 600;\n\nconst theme = createTheme({\n props: {\n MuiDialogTitle: {\n disableTypography: true,\n },\n MuiButtonBase: {\n disableRipple: true,\n },\n },\n overrides: {\n MuiCssBaseline: {\n '@global': {\n button: {\n '&:focus': {\n outline: 'none !important',\n },\n },\n body: {\n backgroundColor: '#f6f6f6',\n },\n },\n },\n MuiIconButton: {\n root: {\n '&:focus': {\n outline: 'none !important',\n },\n },\n },\n MuiFormLabel: {\n // Name of the component ⚛️ / style sheet\n root: {\n // Name of the rule\n color: 'rgb(0,0,0,0.38)', // Some CSS\n },\n },\n MuiInput: {\n underline: {\n '&:after': {\n borderBottom: '2px solid #FF4400',\n transition: 'all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms',\n },\n '&:before': {\n borderBottom: '1px solid rgb(224, 224, 224)',\n },\n '&:hover:before': {\n borderBottom: '1px solid rgb(224, 224, 224) !important',\n },\n },\n },\n MuiButton: {\n root: {\n '&:focus': {\n outline: 'none',\n },\n },\n containedPrimary: {\n color: '#FFF',\n minWidth: 80,\n backgroundColor: '#FF4400',\n '&:hover': {\n color: '#FFF',\n },\n },\n containedSecondary: {\n color: '#FFF',\n '&:hover': {\n color: '#FFF',\n },\n },\n },\n MuiDialogTitle: {\n root: {\n color: '#000',\n fontSize: 20,\n fontWeight: 500,\n },\n },\n },\n palette: {\n primary: {\n main: '#FF4400',\n },\n secondary: {\n main: '#0AD71C',\n },\n text: {\n main: '#2C2C2C',\n },\n },\n typography: {\n fontWeightLight: LIGHT,\n fontWeightRegular: REGULAR,\n fontWeightSemibold: SEMIBOLD,\n fontWeightBold: BOLD,\n fontSize: 14,\n htmlFontSize: 16,\n fontFamily: ['\"Roboto\"', 'sans-serif'].join(','),\n },\n});\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 60 * 5 * 1000,\n retry: (failureCount, error) => {\n return error.response && error.response.status >= 500;\n },\n },\n },\n});\n\nconst App = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default App;\n","import axios from 'axios';\nimport { createRequestInstance, watchRequests } from 'redux-saga-requests';\nimport { createDriver } from 'redux-saga-requests-axios';\nimport { all } from 'redux-saga/effects';\nimport { watchAuthenticateUserSaga } from '../Session'; // SIGN_OUT\nimport { watchAccountPlanChangeSagas } from '../admin/billing/account/index';\n\nexport default function* rootSaga() {\n yield all([\n watchAuthenticateUserSaga(),\n watchAccountPlanChangeSagas(),\n createRequestInstance({\n driver: createDriver(axios),\n }),\n watchRequests({\n // abortOn: SIGN_OUT,\n }),\n ]);\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { createStore, applyMiddleware, compose } from 'redux';\nimport { createLogger } from 'redux-logger';\nimport thunk from 'redux-thunk';\nimport { middleware as flashMiddleware } from 'redux-flash';\nimport createSagaMiddleware, { END } from 'redux-saga';\nimport sagaMonitor from '@redux-saga/simple-saga-monitor';\nimport { requestsPromiseMiddleware } from 'redux-saga-requests';\n\nimport allReducers from './modules/Index';\nimport { checkIfProduction } from './Utils/admin';\n\nconst loggerMiddleware = createLogger();\nlet sagaMiddleware;\nif (checkIfProduction()) {\n sagaMiddleware = createSagaMiddleware();\n} else {\n sagaMiddleware = createSagaMiddleware({ sagaMonitor });\n}\n\nconst flashOptions = { timeout: false };\n\nconst middleware = [\n thunk,\n requestsPromiseMiddleware({ auto: true }),\n sagaMiddleware,\n flashMiddleware(flashOptions),\n !checkIfProduction() && loggerMiddleware,\n].filter(Boolean);\n\nlet enhancer;\nif (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {\n enhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(\n applyMiddleware(...middleware),\n );\n} else {\n enhancer = compose(applyMiddleware(...middleware));\n}\n\nconst store = createStore(\n allReducers,\n checkIfProduction() ? compose(applyMiddleware(...middleware)) : enhancer,\n);\n\nstore.runSaga = sagaMiddleware.run;\nstore.close = () => store.dispatch(END);\n\nexport default store;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2 } from '../../config';\nimport { adminProcessError, adminActions } from '../Admin';\nimport Logger from '../../Utils/Logger';\nimport getter from '../../Utils/objectUtils/getter';\nimport { AuthHeaders } from '../shared/HeaderToken';\nimport {\n showSuccessMessage,\n showErrorMessage,\n showInfoMessage,\n} from '../../Utils/flashHandler';\nimport { APP_NAME, APP_VERBS } from '../../Utils/constants';\n\nexport const SLACK_CHANNEL_MODAL_STATUS = {\n OPEN: 'OPEN',\n CLOSE: 'CLOSE',\n RESET: 'RESET',\n};\n\n// ------------------------------------\n// Helpers\n// ------------------------------------\nconst apiEndpoints = {\n SLACK_AUTHORIZE: `${API_URL_WITH_V2}/employer/integrations/slack/authorize`,\n CREATE_SLACK_CHANNEL: `${API_URL_WITH_V2}/employer/integrations/slack/createChannel`,\n SLACK_DE_AUTHORIZE: `${API_URL_WITH_V2}/employer/integrations/slack/deauthorize`,\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\n\nexport const SLACK_AUTHORIZATION_SUCCESS = 'slack_authorization_success';\nexport const CREATE_SLACK_CHANNEL_SUCCESS = 'create_slack_channel_success';\nexport const SLACK_DEAUTHORIZATION_SUCCESS = 'slack_deauthorization_success';\nexport const INTEGRATION_REQUEST_FAILED = 'integration_request_failed';\nexport const CHANNEL_NAME_FAILED = 'channel_name_failed';\nexport const SET_SLACK_CHANNEL_MODAL_STATUS = 'set_slack_channel_modal_status';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nconst slackAuthorizationSuccess = () => ({\n type: SLACK_AUTHORIZATION_SUCCESS,\n});\nconst createSlackChannelSuccess = () => ({\n type: CREATE_SLACK_CHANNEL_SUCCESS,\n});\nconst slackDeauthorizationSuccess = () => ({\n type: SLACK_DEAUTHORIZATION_SUCCESS,\n});\nconst setSlackChannelModalStatus = (status) => ({\n type: SET_SLACK_CHANNEL_MODAL_STATUS,\n status,\n});\nconst channelNameFailed = (errorMessage) => ({\n type: CHANNEL_NAME_FAILED,\n errorMessage,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: INTEGRATION_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const integrationsActions = {\n slackAuthorizationSuccess,\n createSlackChannelSuccess,\n slackDeauthorizationSuccess,\n requestFailed,\n channelNameFailed,\n setSlackChannelModalStatus,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\n\nexport const authorizeSlack = (props) => {\n Logger('authorizeSlack', true);\n return async (dispatch) => {\n try {\n const res = await axios.post(\n apiEndpoints.SLACK_AUTHORIZE,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(integrationsActions.slackAuthorizationSuccess());\n const { employer } = result.data;\n if (employer) {\n dispatch(adminActions.gotMyEmployer(employer));\n }\n const slackAuthenticated =\n getter(['integrations', 'slack', 'isAuth'], employer) || false;\n const slackAdded =\n getter(['integrations', 'slack', 'isAdded'], employer) || false;\n if (slackAuthenticated && !slackAdded) {\n dispatch(\n integrationsActions.setSlackChannelModalStatus(\n SLACK_CHANNEL_MODAL_STATUS.OPEN,\n ),\n );\n }\n dispatch(\n showSuccessMessage(\n `${APP_NAME} is now connected to your Slack workspace!`,\n ),\n );\n }\n } catch (error) {\n adminProcessError(error, dispatch, integrationsActions);\n dispatch(\n showErrorMessage(\n 'Whoops, looks like we’re experiencing network issues -- Try again.',\n ),\n );\n }\n };\n};\n\nexport const createSlackChannel = (props) => {\n Logger('createSlackChannel', true);\n return async (dispatch) => {\n try {\n const res = await axios.post(\n apiEndpoints.CREATE_SLACK_CHANNEL,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(integrationsActions.createSlackChannelSuccess());\n const { employer } = result.data;\n if (employer) {\n dispatch(adminActions.gotMyEmployer(employer));\n }\n dispatch(\n showSuccessMessage(\n `${APP_VERBS.RECOGNITION_TITLEIZED} given will now appear in the #${props.channelName} Slack channel!`,\n ),\n );\n dispatch(\n integrationsActions.setSlackChannelModalStatus(\n SLACK_CHANNEL_MODAL_STATUS.CLOSE,\n ),\n );\n }\n } catch (error) {\n adminProcessError(error, dispatch, integrationsActions);\n if (error && error.response && error.response.data) {\n const responseData = error.response.data;\n if (responseData.code === 102) {\n // throw new SubmissionError({\n // channelName: responseData.message,\n // _error: 'Failed!',\n // });\n // dispatch(integrationsActions.channelNameFailed(responseData.message));\n }\n }\n dispatch(\n showErrorMessage(\n 'Whoops, looks like we’re experiencing network issues -- Try again.',\n ),\n );\n }\n };\n};\nexport const deauthorizeSlack = () => {\n Logger('deauthorizeSlack', true);\n return async (dispatch) => {\n try {\n const res = await axios.post(\n apiEndpoints.SLACK_DE_AUTHORIZE,\n {},\n AuthHeaders(),\n );\n const result = res.data;\n Logger(result);\n if (result.success) {\n dispatch(integrationsActions.slackDeauthorizationSuccess());\n const { employer } = result.data;\n if (employer) {\n dispatch(adminActions.gotMyEmployer(employer));\n }\n dispatch(\n showInfoMessage(\n `${APP_NAME} is now disconnected from your Slack workspace!`,\n ),\n );\n }\n } catch (error) {\n adminProcessError(error, dispatch, integrationsActions);\n dispatch(\n showErrorMessage(\n 'Whoops, looks like we’re experiencing network issues -- Try again.',\n ),\n );\n }\n };\n};\n\nexport const setCreateModalStatus = (status) => (dispatch) => {\n dispatch(integrationsActions.setSlackChannelModalStatus(status));\n};\n\n// ------------------------------------\n// Reducers\n// ------------------------------------\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case SLACK_AUTHORIZATION_SUCCESS:\n return { ...state, errors: null, error: null };\n case SLACK_DEAUTHORIZATION_SUCCESS:\n return { ...state, errors: null, error: null };\n case INTEGRATION_REQUEST_FAILED:\n return { ...state, error: action.errorMessage, errors: null };\n case SET_SLACK_CHANNEL_MODAL_STATUS:\n return {\n ...state,\n channelModalStatus: action.status,\n errors: null,\n error: null,\n };\n case CHANNEL_NAME_FAILED:\n return {\n ...state,\n errors: { channelName: action.errorMessage },\n error: null,\n };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport axios from 'axios';\nimport { API_URL_WITH_V2 } from '../../../config';\nimport { AuthHeaders } from '../../shared/HeaderToken';\nimport { adminProcessError } from '../../Admin';\nimport Logger from '../../../Utils/Logger';\nimport {\n showSuccessMessage,\n showInfoMessage,\n} from '../../../Utils/flashHandler';\nimport { actions as usersManageActions } from '../users/Manage';\n\nconst apiEndpoints = {\n CUSTOM_ALLOWANCE: `${API_URL_WITH_V2}/employer/employer_info/custom`,\n};\n\nexport const CUSTOM_ALLOWANCE_REQUEST_STATUSES = {\n BLANK: 'blank',\n UPDATING: 'updating',\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const UPDATE_CUSTOM_ALLOWANCE_SUCCESS =\n 'UPDATE_CUSTOM_ALLOWANCE_SUCCESS';\nexport const CUSTOM_ALLOWANCE_REQUEST_FAILED =\n 'CUSTOM_ALLOWANCE_REQUEST_FAILED';\nexport const CUSTOM_ALLOWANCE_REQUEST_STATUS =\n 'CUSTOM_ALLOWANCE_REQUEST_STATUS';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nconst updateCustomAllowanceSuccess = () => ({\n type: UPDATE_CUSTOM_ALLOWANCE_SUCCESS,\n});\n\nconst updateRequestStatus = (status) => ({\n type: CUSTOM_ALLOWANCE_REQUEST_STATUS,\n status,\n});\n\nconst requestFailed = (errorMessage) => ({\n type: CUSTOM_ALLOWANCE_REQUEST_FAILED,\n error: errorMessage,\n});\n\nexport const customAllowanceActions = {\n updateCustomAllowanceSuccess,\n updateRequestStatus,\n requestFailed,\n};\n\n// ------------------------------------\n// API Wrapper\n// ------------------------------------\nexport const updateCustomAllowance = (props) => async (dispatch) => {\n Logger('updateCustomAllowance');\n try {\n dispatch(showInfoMessage('Updating custom allowance...'));\n dispatch(\n customAllowanceActions.updateRequestStatus(\n CUSTOM_ALLOWANCE_REQUEST_STATUSES.UPDATING,\n ),\n );\n const res = await axios.put(\n apiEndpoints.CUSTOM_ALLOWANCE,\n props,\n AuthHeaders(),\n );\n const result = res.data;\n dispatch(\n customAllowanceActions.updateRequestStatus(\n CUSTOM_ALLOWANCE_REQUEST_STATUSES.BLANK,\n ),\n );\n Logger(result, true);\n if (result.success) {\n const { users } = result.data;\n dispatch(customAllowanceActions.updateCustomAllowanceSuccess());\n dispatch(usersManageActions.updateEmployeesSuccess(users));\n dispatch(showSuccessMessage('Custom allowance updated'));\n }\n } catch (error) {\n adminProcessError(error, dispatch, customAllowanceActions);\n dispatch(\n customAllowanceActions.updateRequestStatus(\n CUSTOM_ALLOWANCE_REQUEST_STATUSES.BLANK,\n ),\n );\n }\n};\n\nexport default (\n state = { requestStatus: CUSTOM_ALLOWANCE_REQUEST_STATUSES.BLANK },\n action,\n) => {\n switch (action.type) {\n case UPDATE_CUSTOM_ALLOWANCE_SUCCESS: {\n return { ...state };\n }\n case CUSTOM_ALLOWANCE_REQUEST_STATUS:\n return { ...state, requestStatus: action.status };\n default:\n return state;\n }\n};\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport _ from 'lodash';\nimport { AuthHeadersV2 } from '../../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2 } from '../../../../config';\n\nconst apiEndpoints = {\n EMPLOYER_SLACK_DETAILS: `${API_URL_WITH_V2}/integrations/slack/employer/details`,\n EMPLOYER_SLACK_MEMBERS_ANNOUNCEMENT: `${API_URL_WITH_V2}/integrations/slack/employer/sendWelcomeMessageToUsers`,\n};\n\nexport const EMPLOYER_SLACK_DETAILS = '@admin/slack/EMPLOYER_SLACK_DETAILS';\nexport const EMPLOYER_SLACK_MEMBERS_ANNOUNCEMENT =\n '@admin/slack/EMPLOYER_SLACK_MEMBERS_ANNOUNCEMENT';\n\nexport const getEmployerSlackDetails = () => ({\n type: EMPLOYER_SLACK_DETAILS,\n request: {\n url: apiEndpoints.EMPLOYER_SLACK_DETAILS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n});\n\nexport const postSlackAnnouncementToUsers = ({ userIds }) => ({\n type: EMPLOYER_SLACK_MEMBERS_ANNOUNCEMENT,\n request: {\n url: apiEndpoints.EMPLOYER_SLACK_MEMBERS_ANNOUNCEMENT,\n data: {\n userIds,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n});\n\nexport default requestsReducer({\n actionType: EMPLOYER_SLACK_DETAILS,\n getData: (state, action, config) => {\n switch (action.type) {\n case success(EMPLOYER_SLACK_DETAILS): {\n const { details } = _.get(action, ['data', 'data'], {});\n return { ...state.data, ...details };\n }\n default:\n return state;\n }\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { requestsReducer, success } from 'redux-saga-requests';\nimport _ from 'lodash';\nimport { AuthHeadersV2 } from '../../../../../modules/shared/HeaderToken';\nimport { API_URL_WITH_V2 } from '../../../../../config';\n\nconst apiEndpoints = {\n REWARDS: `${API_URL_WITH_V2}/user/settings/rewards`,\n RESEND_EMAIL: `${API_URL_WITH_V2}/user/settings/resendEmail`,\n};\n\nexport const GET_REWARD_LISTS = '@settings/myrewards/GET_REWARD_LISTS';\nexport const RESEND_EMAIL = '@settings/myrewards/RESEND_EMAIL';\n\nexport const getMyRewardsList = () => ({\n type: GET_REWARD_LISTS,\n request: {\n url: apiEndpoints.REWARDS,\n method: 'get',\n ...AuthHeadersV2(),\n },\n meta: {\n asPromise: true,\n },\n});\n\nexport const resendEmail = (orderId) => ({\n type: RESEND_EMAIL,\n request: {\n url: apiEndpoints.RESEND_EMAIL,\n data: {\n orderId,\n },\n method: 'post',\n ...AuthHeadersV2(),\n },\n meta: {\n asPromise: true,\n rewardId: orderId,\n },\n});\n\nexport default requestsReducer({\n actionType: GET_REWARD_LISTS,\n getData: (state, action) => {\n switch (action.type) {\n case success(GET_REWARD_LISTS): {\n const rewards = {};\n const incomingRewards = _.get(action, ['data', 'data', 'orders'], []);\n incomingRewards.forEach((element) => {\n rewards[element._id] = { ...element };\n });\n return { ...state.data, rewards };\n }\n default:\n return { ...state.data };\n }\n },\n mutations: {\n [RESEND_EMAIL]: {\n updateData: (state, action) => {\n switch (action.type) {\n case success(RESEND_EMAIL): {\n const rewards = _.get(state, ['data', 'rewards'], {});\n const udpatedReward = _.get(action, ['data', 'data', 'order'], {});\n\n const rewardId = udpatedReward._id;\n const rewardToUpdate = rewards[rewardId] || {};\n const reward = { ...rewardToUpdate, ...udpatedReward };\n return {\n ...state.data,\n rewards: { ...rewards, [rewardId]: reward },\n };\n }\n default:\n return { ...state.data };\n }\n },\n },\n },\n});\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { ReduxActionTypes } from './stateManagementConstants';\n\nconst apiCallReducers = (state = {}, { type, payload }) => {\n switch (type) {\n case ReduxActionTypes.API_CALL_BEGIN: {\n const { reduxKey, requestParams } = payload;\n return {\n ...state,\n [reduxKey]: {\n ...state[reduxKey],\n error: undefined,\n loading: true,\n requestParams,\n },\n };\n }\n case ReduxActionTypes.API_CALL_SUCCESS: {\n const { reduxKey, response } = payload;\n return {\n ...state,\n [reduxKey]: {\n ...state[reduxKey],\n error: undefined,\n loading: false,\n response,\n },\n };\n }\n case ReduxActionTypes.API_CALL_ERROR: {\n const { reduxKey, error } = payload;\n return {\n ...state,\n [reduxKey]: { ...state[reduxKey], error, loading: false },\n };\n }\n default:\n return state;\n }\n};\n\nexport default apiCallReducers;\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport { combineReducers } from 'redux';\nimport { reducer as flashReducer } from 'redux-flash';\nimport sessionReducer, { SIGN_OUT } from './Session';\nimport checkoutReducer from './Checkout';\nimport homeReducer from './Home';\nimport notificationsReducer from './Notification';\nimport employeeSignupReducer from './onboarding/EmployeeSignup';\nimport adminUsersInviteReducer from './admin/Users';\nimport meReducer from './Me';\nimport adminReducer from './Admin';\nimport adminManageUsersReducers from './admin/users/Manage';\nimport adminActivityReducers from './admin/users/Activity';\nimport adminUsersReportsReducers from './admin/users/Reports';\nimport adminRewardsGiftsReducers from './admin/rewards/GiftCatalog';\nimport adminRewardsPaymentReducer from './admin/Rewards';\nimport adminTablesReducers from './admin/shared/AdminTables';\nimport adminBillingReducer from './admin/Billing';\nimport adminIntegrationsReducer from './admin/Integrations';\nimport adminAnniversariesReducer from './admin/rewards/Anniversaries';\nimport adminCustomAllowanceReducer from './admin/settings/CustomAllowance';\nimport uiReducers from './UI-Reducers/UIReducers';\n\nimport headerStyleReducers from './style-switcher-reducers/headerStyleReducers';\nimport headerActiveStyleReducer from './style-switcher-reducers/headeractiveReducer';\nimport sidebarStyleReducers from './style-switcher-reducers/sidebarStyleReducers';\nimport sidebarActiveStyleReducer from './style-switcher-reducers/sidebarActiveReducer';\nimport headerBannerStyleReducers from './style-switcher-reducers/headerBannerStyleReducers';\nimport headerBannerActiveStyleReducer from './style-switcher-reducers/headerBannerActiveReducer';\n\nimport v2SessionReducers from '../aV2/modules/login';\nimport v2OnboardingReducers from '../aV2/modules/onboarding';\nimport v2EmployeeSignupReducers from '../aV2/modules/employeeSignup';\nimport v2SlackOnboardReducers from '../aV2/modules/slackOnboard';\nimport apiReducers from '../hooks/useFetch/redux';\n\nimport v2AdminAccountReducers from './admin/billing/account';\n// import v2AdminSettingsIntegrationsReducers from '../aV2/modules/admin/settings/integrations/index';\n// import v2AdminSettingsIntegrationsReducers from '../screens/admin/content/settings/Integrations/reducers';\nimport v2AdminBillingPaymentHistoryReducers from '../aV2/modules/admin/billings/paymentsHistory/index';\nimport adminSlackReducers from '../aV2/modules/admin/slack';\nimport superAdminReducers from './admin/superadmin';\nimport myRewardsReducers from '../aV2/modules/admin/settings/myRewards';\nimport APIResponseReducer from '../hooks/useAPIStateManagement/reducer';\n\nconst appReducer = combineReducers({\n auth: sessionReducer,\n checkout: checkoutReducer,\n me: meReducer,\n home: homeReducer,\n notifications: notificationsReducer,\n employeeSignup: employeeSignupReducer,\n admin: adminReducer,\n adminUsersInvite: adminUsersInviteReducer,\n adminManageUsers: adminManageUsersReducers,\n adminActivity: adminActivityReducers,\n adminUsersReports: adminUsersReportsReducers,\n adminRewardsGifts: adminRewardsGiftsReducers,\n adminRewardsPayment: adminRewardsPaymentReducer,\n adminBilling: adminBillingReducer,\n adminIntegrations: adminIntegrationsReducer,\n adminTables: adminTablesReducers,\n adminAnniversaries: adminAnniversariesReducer,\n adminCustomAllowance: adminCustomAllowanceReducer,\n flash: flashReducer,\n ui: uiReducers,\n sheaderStyle: headerStyleReducers,\n headerActiveStyle: headerActiveStyleReducer,\n headerBannerStyle: headerBannerStyleReducers,\n headerBAnnerActiveStyle: headerBannerActiveStyleReducer,\n sidebarStyle: sidebarStyleReducers,\n sidebarActiveStyle: sidebarActiveStyleReducer,\n\n v2Session: v2SessionReducers,\n v2Onboarding: v2OnboardingReducers,\n v2EmployeeSignup: v2EmployeeSignupReducers,\n v2AdminAccount: v2AdminAccountReducers,\n v2SlackOnboard: v2SlackOnboardReducers,\n api: apiReducers,\n adminSlack: adminSlackReducers,\n superAdmin: superAdminReducers,\n\n // v2AdminSettingsIntegrations: v2AdminSettingsIntegrationsReducers,\n v2AdminBillingsPaymentHistory: v2AdminBillingPaymentHistoryReducers,\n myRewards: myRewardsReducers,\n API: APIResponseReducer,\n});\n\nconst allReducers = (state, action) => {\n let newState = {};\n if (action.type === SIGN_OUT) {\n newState = {\n auth: state.auth,\n sheaderStyle: state.sheaderStyle,\n headerActiveStyle: state.headerActiveStyle,\n headerBannerStyle: state.headerBannerStyle,\n headerBAnnerActiveStyle: state.headerBAnnerActiveStyle,\n sidebarStyle: state.sidebarStyle,\n sidebarActiveStyle: state.sidebarActiveStyle,\n };\n } else {\n newState = state;\n }\n return appReducer(newState, action);\n};\n\nexport default allReducers;\n","export default function () {\n return [\n { color: '#258df2', value: 'Default' },\n { color: '#B71C1C', value: 'Red' },\n { color: '#D81B60', value: 'Pink' },\n { color: '#4A148C', value: 'Purple' },\n { color: '#3F51B5', value: 'Indigo' },\n { color: '#1565C0', value: 'Blue' },\n { color: '#00BCD4', value: 'Cyan' },\n { color: '#009688', value: 'Teal' },\n { color: '#2E7D32', value: 'Green' },\n { color: '#827717', value: 'Lime' },\n { color: '#FF4400', value: 'Orange' },\n { color: '#3E2723', value: 'Brown' },\n { color: '#424242', value: 'Gray' },\n { color: '#4527A0', value: 'Deep purple' },\n ];\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport default function (state = {}, action) {\n switch (action.type) {\n case 'HEADER_STYLE_SELECTED':\n return action.payload;\n default:\n return state;\n }\n}\n","export default function () {\n return [\n { color: '#258df2', value: 'Default' },\n { color: '#B71C1C', value: 'Red' },\n { color: '#D81B60', value: 'Pink' },\n { color: '#4A148C', value: 'Purple' },\n { color: '#3F51B5', value: 'Indigo' },\n { color: '#1565C0', value: 'Blue' },\n { color: '#00BCD4', value: 'Cyan' },\n { color: '#009688', value: 'Teal' },\n { color: '#2E7D32', value: 'Green' },\n { color: '#827717', value: 'Lime' },\n { color: '#FF4400', value: 'Orange' },\n { color: '#3E2723', value: 'Brown' },\n { color: '#424242', value: 'Gray' },\n { color: '#4527A0', value: 'Deep purple' },\n ];\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport default function (state = {}, action) {\n switch (action.type) {\n case 'HEADER_BANNER_STYLE_SELECTED':\n return action.payload;\n default:\n return state;\n }\n}\n","export default function () {\n return [\n { color: '#258df2', value: 'Primary' },\n { color: '#B71C1C', value: 'Red' },\n { color: '#D81B60', value: 'Pink' },\n { color: '#4A148C', value: 'Purple' },\n { color: '#3F51B5', value: 'Indigo' },\n { color: '#1565C0', value: 'Blue' },\n { color: '#00BCD4', value: 'Cyan' },\n { color: '#009688', value: 'Teal' },\n { color: '#2E7D32', value: 'Green' },\n { color: '#827717', value: 'Lime' },\n { color: '#FF4400', value: 'Orange' },\n { color: '#3E2723', value: 'Brown' },\n { color: '#424242', value: 'Gray' },\n { color: '#4527A0', value: 'Deep purple' },\n { color: '#1b202a', value: 'Dark' },\n { color: '#2E313A', value: 'Dark Deep' },\n { color: '#1c2236', value: 'Dark purple' },\n { color: '#202432', value: 'Dark' },\n { color: '#212a42', value: 'Dark' },\n { color: '#141a2d', value: 'Dark' },\n { color: '#101524', value: 'Dark' },\n ];\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nexport default function (state = {}, action) {\n switch (action.type) {\n case 'SIDEBAR_STYLE_SELECTED':\n return action.payload;\n default:\n return state;\n }\n}\n","// @ts-nocheck TODO: type issues need to be fixed in this file\nimport './vendors/polyfills';\nimport { datadogRum } from '@datadog/browser-rum';\nimport axios from 'axios';\nimport { loadProgressBar } from 'axios-progress-bar';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport App from './App';\nimport { API_URL_WITH_V2, DATA_DOG } from './config';\nimport rootSaga from './modules/sagas';\nimport { authenticateUser, clearLocalStorage } from './modules/Session';\nimport store from './store';\nimport { checkIfProduction } from './Utils/admin';\nimport { initAnalytics } from './Utils/analytics';\nimport { bootIntercom } from './Utils/Intercom';\nimport { AuthHeaders } from './modules/shared/HeaderToken';\n\nloadProgressBar({ showSpinner: false }, axios);\n\ndatadogRum.init({\n ...DATA_DOG,\n version: process.env.REACT_APP_VERSION,\n sampleRate: 100,\n trackInteractions: true,\n replaySampleRate: 1,\n defaultPrivacyLevel: checkIfProduction() ? 'mask-user-input' : 'allow',\n});\ndatadogRum.startSessionReplayRecording();\n\nstore.runSaga(rootSaga);\n\ninitAnalytics();\n\naxios\n .get(`${API_URL_WITH_V2}/auth/user/info`, AuthHeaders())\n .then((res) => {\n authenticateUser(res.data.data.user, store.dispatch);\n })\n .catch(() => {\n clearLocalStorage();\n bootIntercom();\n })\n .finally(() => {\n ReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n );\n });\n"],"sourceRoot":""}